For..next

Kontrollsatsen for..next är en konstruktion för skriptiteration med en räknevariabel. Satserna inom slingan som innesluts av for och next exekveras för varje värde i räknevariabeln mellan (och inklusive) angivna övre och undre gränser.

Syntax:  

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

 

Uttrycken expr1, expr2 och expr3 utvärderas bara första gången slingan påbörjas. Värdet på räknevariabeln kan ändras av satser inom slingan, men detta brukar inte göras inom programmering.

Om en exit for-sats påträffas i slingan flyttas skriptexekveringen till den första satsen efter next-satsen som markerar slutet på slingan. En exit for-sats kan göras villkorad genom det valbara användandet av ett when- eller unless-suffix.

Observera: Eftersom for..next-satsen är en kontrollsats, och som sådan slutar med ett semikolon eller radslut, måste var och en av dess tre möjliga komponenter (for..to..step, exit for och next) rymmas på en egen rad i skriptet.

Arguments:  

Argument Beskrivning
counter Ett variabelnamn. Om counter anges efter next, måste variabelnamnet överensstämma med det variabelnamn som angivits efter motsvarande for.
expr1 Ett uttryck som anger det första värdet i counter för vilket slingan ska exekveras.
expr2

Ett uttryck som anger det maximala värdet i den counter-variabel för vilken slingan ska exekveras.

expr3 Ett uttryck som anger hur många steg värdet i counter ska öka varje gång slingan exekverats.
condition Ett logiskt uttryck som utvärderas till True eller False.
statements Valfri grupp av en eller flera QlikView-skriptsatser.

Example 1: Läsa in ett antal filer i följd

// LOAD files file1.csv..file9.csv

for a=1 to 9

LOAD * from file$(a).csv;

next

Example 2: Läsa in valfritt antal filer i

I detta exempel utgår vi från datafilerna x1.csv, x3.csv, x5.csv, x7.csv och x9.csv. Inläsningen stoppas vid valfri punkt med hjälp av villkoret if rand( )<0.5 then.

for counter=1 to 9 step 2

set filename=x$(counter).csv;

if rand( )<0.5 then

exit for unless counter=1

end if

LOAD a,b from $(filename);

next