For..next
De besturingsopdracht for..next is een herhalingsconstructie voor gebruik in scripts met een teller. De opdrachten in de lus tussen for en next worden uitgevoerd voor elke waarde van de tellervariabele tussen de opgegeven onder- en bovengrens.
Syntaxis:
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
De uitdrukkingen expr1, expr2 en expr3 worden alleen de eerste keer dat de lus wordt ingevoerd geëvalueerd. De waarde van de tellervariabele kan worden gewijzigd door opdrachten binnen de lus. Dit is echter met het oog op de gebruikelijke manier van programmeren niet aan te raden.
Als een clausule exit for binnen de lus wordt aangetroffen, gaat de uitvoering van het script over op de eerste opdracht na de clausule next die het einde van de lus aangeeft. De clausule exit for kan voorwaardelijk worden gemaakt met het optionele suffix when of unless.
Argumenten:
Argument | Beschrijving |
---|---|
counter | De naam van een variabele. Als counter wordt opgegeven na next moet de variabele dezelfde naam hebben als de variabele die wordt gevonden na de overeenkomende for. |
expr1 | Een uitdrukking die de eerste waarde van de variabele counter bepaalt waarvoor de lus wordt uitgevoerd. |
expr2 | Een uitdrukking die de laatste waarde van de variabele counter bepaalt waarvoor de lus wordt uitgevoerd. |
expr3 | Een uitdrukking die de waarde bepaalt van de stap waarmee de variabele counter toeneemt bij elke uitvoering van de lus. |
condition | Een logische uitdrukking die resulteert in True of False. |
statements | Een willekeurige groep van een of meer Qlik Sense-scriptopdrachten. |
Voorbeeld 1: Een reeks van bestanden laden
// LOAD files file1.csv..file9.csv
for a=1 to 9
LOAD * from file$(a).csv;
next
Voorbeeld 2: Een willekeurig aantal bestanden laden
In dit voorbeeld gaan we ervan uit dat we de gegevensbestanden x1.csv, x3.csv, x5.csv, x7.csv en x9.csv hebben. Het laden wordt bij een willekeurig punt gestopt met de voorwaarde 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