Sub..end sub
L'instruction de contrôle sub..end sub définit une sous-routine qui peut être appelée à partir d'une instruction call.
Sub name [ ( paramlist )] statements end sub
Les arguments sont copiés dans la sous-routine et, si les paramètres réels correspondants de l'instruction call constituent un nom de variable, ils sont recopiés et supprimés à la fermeture de la sous-routine.
Si une sous-routine comporte plus de paramètres formels que ceux réellement transmis par une instruction call, les paramètres supplémentaires sont initialisés sur la valeur NULL et peuvent être utilisés comme variables locales dans la sous-routine.
Argument | Description |
---|---|
name | Nom de la sous-routine. |
paramlist | Liste de noms de variables séparés par des virgules et définissant les paramètres formels de la sous-routine. Ceux-ci peuvent être utilisés comme n'importe quelle variable au sein de la sous-routine. |
statements | Tout groupe d'une ou plusieurs instructions de script Qlik Sense. |
-
Comme l'instruction sub 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 deux clauses possibles (sub et end sub) ne peut s'étendre sur plusieurs lignes.
-
Lorsque vous définissez une sous-routine avec Sub..end sub à l'intérieur d'une instruction de contrôle, par exemple if..then, vous pouvez uniquement appeler la sous-routine depuis la même instruction de contrôle.
Sub INCR (I,J)
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
- transfert de paramètres
Sub ParTrans (A,B,C)
A=A+1
B=B+1
C=C+1
End Sub
A=1
X=1
C=1
Call ParTrans (A, (X+1)*2)
Le résultat de l'exemple ci-dessus est que, localement, au sein de la sous-routine, A sera initialisé sur 1, B sur 4 et C sur NULL.
Au moment de quitter la sous-routine, la variable globale A obtiendra la valeur 2 (recopiée à partir de la sous-routine). Le deuxième paramètre réel (X+1)*2 ne sera pas recopié, car il ne s'agit pas d'une variable. Enfin, la variable globale C ne sera pas affectée par l'appel de sous-routine.