For..next

L'instruction de contrôle for..next est une construction d'itération de script avec compteur. Les instructions comprises entre for et next à l'intérieur de la boucle sont exécutées pour chaque valeur de la variable du compteur entre les limites inférieure et supérieure spécifiées (incluses).

Syntaxe :  

For counter = expr1 to expr2 [ step expr3 ]

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

Next [counter]

 

Les expressions expr1, expr2 et expr3 ne sont évaluées que la première fois que le script entre dans la boucle. Il est possible de modifier la valeur de la variable counter à l'aide d'instructions placées à l'intérieur de la boucle, mais ce n'est pas une bonne méthode de programmation.

Si une clause exit for se trouve dans la boucle, l'exécution du script est transférée à la première instruction qui suit la clause next indiquant la fin de la boucle. Il est possible de rendre une clause exit for conditionnelle par l'utilisation facultative d'un suffixe when ou unless.

Remarque: Comme l'instruction for..next est une instruction de contrôle et, en tant que telle, se termine par un point-virgule ou une fin de ligne, aucune de ses trois clauses possibles (for..to..step,exit for et next) ne peut s'étendre sur plusieurs lignes.

Arguments :  

Argument Description
counter Nom de variable. Si l'argument counter est spécifié après next, il doit s'agir du même nom de variable que celui qui se trouve après le for correspondant.
expr1 Expression qui détermine la première valeur de la variable counter pour laquelle la boucle doit être exécutée.
expr2

Expression qui détermine la valeur maximale de la variable counter pour laquelle la boucle doit être exécutée.

expr3 Expression qui détermine la valeur de l'incrément de la variable counter lors de chaque exécution de la boucle.
condition Expression logique dont l'évaluation a pour résultat True ou False.
statements Tout groupe d'une ou plusieurs instructions de script QlikView.

Exemple 1 : Chargement d'une séquence de fichiers

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

for a=1 to 9

LOAD * from file$(a).csv;

next

Exemple 2 : Chargement d'un nombre aléatoire de fichiers

Dans cet exemple, supposons les fichiers de données x1.csv, x3.csv, x5.csv, x7.csv et x9.csv. Le chargement est arrêté en un point aléatoire à l'aide de la condition 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