Sub..end sub
Der Steuerungsbefehl sub..end sub definiert eine Subroutine, die zu einem späteren Zeitpunkt durch den Befehl call aufgerufen werden kann.
Syntax:
Sub name [ ( paramlist )] statements end sub
Argumente werden in die Subroutine kopiert. Wenn es sich bei dem entsprechend aufgeführten Parameter im call-Befehl um einen Variablennamen handelt, werden sie beim Beenden der Subroutine wieder zurückkopiert.
Wenn in einer Subroutine mehr Parameter definiert sind, als aus dem call-Befehl übernommen werden, erhalten die übrigen Parameter den NULL-Wert und können als lokale Variable in der Subroutine verwendet werden.
Argumente:
Argument | Beschreibung |
---|---|
name | Der Name der Subroutine. |
paramlist | Eine kommagetrennte Liste von Variablen, die als Parameter in der Subroutine dienen. Sie können wie jede Variable innerhalb der Subroutine verwendet werden. |
statements | Jede Gruppe von einem oder mehreren Qlik Sense-Skriptbefehlen. |
Beschränkungen:
-
Da sub zu den Steuerungsbefehlen gehört und mit einem Semikolon oder einer Zeilenschaltung abschließt, dürfen sich die einzelnen Befehlssequenzen (sub und end sub) nicht über mehrere Zeilen erstrecken.
-
Wenn Sie eine Unterroutine mit Sub..end sub innerhalb eines Steuerungsbefehls definieren, beispielsweise if..then, können Sie nur die Unterroutine innerhalb des gleichen Steuerungsbefehls aufrufen.
Beispiel 1:
Sub INCR (I,J)
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
Beispiel 2: - Übernahme von Parametern
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)
Das Ergebnis des obigen Vorgangs besteht darin, dass A lokal, innerhalb der Subroutine, den Wert 1 erhält, B den Wert 4 und C den Wert NULL.
Beim Abschluss der Subroutine erhält die globale Variable A den Wert 2 (aus der Subroutine zurückkopiert). Der zweite aufgeführte Parameter „(X+1)*2“ wird nicht zurückkopiert, da es sich nicht um eine Variable handelt. Die globale Variable C wird vom Subroutinen-Call nicht beeinflusst.