Sub..end sub
Instrukcja sterowania sub..end sub definiuje podprogram, który można wywołać z instrukcji call.
Składnia:
Sub name [ ( paramlist )] statements end sub
Argumenty są kopiowane do podprogramu, a jeśli odpowiadające parametry rzeczywiste w instrukcji call są nazwami zmiennych, wówczas są kopiowane ponownie na zewnątrz po wyjściu z podprogramu.
Jeśli podprogram zawiera więcej parametrów formalnych niż rzeczywistych przekazywanych przez instrukcję call, wówczas parametry dodatkowe zostaną zainicjowane na NULL i możliwe będzie ich użycie jako zmiennych lokalnych w podprogramie.
Argumenty:
Argument | Opis |
---|---|
name | Nazwa podprogramu. |
paramlist | Rozdzielana przecinkami lista nazw zmiennych dla parametrów formalnych podprogramu. Te zmienne mogą być używane jak dowolna zmienna w podprogramie. |
statements | Dowolna grupa zawierająca co najmniej jedną instrukcję skryptu Qlik Sense. |
Ograniczenia:
-
Instrukcja sub jest instrukcją sterowania i jako taka kończy się średnikiem lub symbolem końca linii — żadna z jej dwóch klauzul (sub i end sub) nie może zatem wykraczać poza granicę linii.
-
Podczas definiowania podprogramu za pomocą Sub..end sub wewnątrz instrukcji sterującej, na przykład if..then, można wywołać podprogram tylko z tej samej instrukcji sterowania.
Przykład 1:
Sub INCR (I,J)
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
Przykład 2: — transfer parametru
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)
Wynik powyższej składni będzie następujący: lokalnie, wewnątrz podprogramu, A zostanie zainicjowane na 1, B zostanie zainicjowane na 4, a C zostanie zainicjowane na NULL.
Po wyjściu z podprogramu zmienna globalna A otrzyma 2 jako wartość (kopiowaną z powrotem z podprogramu). Drugi parametr rzeczywisty „(X+1)*2” nie zostanie skopiowany z powrotem, ponieważ nie jest zmienną. Ostatecznie wywołanie podprogramu nie wpływa na zmienną globalną C.