Sub..end sub
sub..end sub 控制陳述式會定義可從 call 陳述式呼叫的副程式。
語法:
Sub name [ ( paramlist )] statements end sub
引數會複製到副程式中,而且如果 call 陳述式中的對應實際參數是變數名稱,將在結束副程式時再次複製回引數。
如果副程式擁有的型式參數比 call 陳述式傳遞的實際參數多,則會將額外的參數初始化為 NULL,且可在副程式內做為本機變數。
引數:
引數 | 描述 |
---|---|
name | 副程式的名稱。 |
paramlist | 以逗號分隔副程式型式參數之變數名稱的清單。其可在副程式內做為任何變數。 |
statements | 是一或多個 Qlik Sense 指令碼陳述式的任何群組。 |
限制:
-
由於 sub 陳述式是控制陳述式,因而會以分號或行尾來結束,所以這兩個子句 (sub 與 end sub) 都不能超過行邊界。
-
透過控制陳述式內部的 Sub..end sub 定義副程式時,例如 if..then,您只能從相同的控制陳述式內部叫用副程式。
範例 1:
Sub INCR (I,J)
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
範例 2: - 參數傳送
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)
以上範例的結果會是在本機的副程式內,A 將初始化為 1、B 將初始化為 4,而 C 將初始化為 NULL。
結束副程式後,全域變數 A 會取得 2 做為值 (從副程式複製回來)。第二個實際參數 “(X+1)*2” 因為不是變數,所以不會被複製回來。最後,全域變數 C 不會受到副程式呼叫的影響。