Sub..end sub
Kontrollsatsen sub..end sub definierar en subrutin som kan anropas från en call-sats.
Syntax:
Sub name [ ( paramlist )] statements end sub
Argument kopieras in i subrutinen. Om motsvarande faktiska parameter i call-satsen är ett variabelnamn, kopieras de dessutom tillbaka ut igen när subrutinen avslutas.
Om en underordnad rutin har fler formella parametrar än antalet faktiska parametrar som skickas från en call-sats, initialiseras de extra parametrarna till NULL och kan användas som lokala variabler inom den underordnade rutinen.
Argument:
Argument | Beskrivning |
---|---|
name | Subrutinens namn. |
paramlist | En kommaavgränsad lista över variabelnamn för den underordnade rutinens formella parametrar. Dessa kan användas som valfri variabel inuti subrutinen. |
statements | Valfri grupp av en eller flera Qlik Sense-skriptsatser. |
Begränsningar:
-
Eftersom sub-satsen är en kontrollsats, och som sådan slutar med ett semikolon eller radslut, måste var och en av dess två möjliga satser (sub och end sub) rymmas på en egen rad i skriptet.
-
När du definierar en underordnad rutin med Sub..end sub inuti en kontrollsats, till exempel if..then, kan du bara anropa den underordnade rutinen inifrån samma kontrollsats.
Exempel 1:
Sub INCR (I,J)
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
Exempel 2: - parameteröverföring
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)
Resultatet av exemplet ovan blir följande (lokalt, inuti subrutinen): A initialiseras till 1, B initialiseras till 4 och C initialiseras till NULL.
När man lämnar subrutinen får den globala variabeln A värdet 2 (kopieras tillbaka från subrutinen). Den andra faktiska parametern “(X+1)*2” kopieras inte tillbaka eftersom den inte är någon variabel. Slutligen påverkas den globala variabeln C inte av subrutinens anrop.