Sub..end sub
sub..end sub 制御ステートメントは、call ステートメントで呼び出されるサブルーチンを定義します。
構文:
Sub name [ ( paramlist )] statements end sub
引数はサブルーチンにコピーされ、call ステートメントで対応する実パラメータが変数名の場合は、サブルーチンの終了後、コピーして戻されます。
サブルーチンに call ステートメントで渡される実パラメータよりも仮パラメータが多い場合は、余分なパラメータは NULL に初期化され、サブルーチン内でローカル変数として使用できます。
引数:
引数 | 説明 |
---|---|
name | サブルーチンの名前。 |
paramlist | サブルーチンの仮パラメータの変数名のコンマ区切りリスト。これはサブルーチン内の変数として使用できます。 |
statements | 1 つ以上の Qlik Sense スクリプト ステートメントのグループ。 |
制限事項:
-
sub ステートメントは制御文であり、セミコロンまたは改行コードで終わっているため、2 つの節 (sub、end sub) が行をまたぐことはできません。
-
例えば [if..then] 制御文内の [Sub..end sub]を使用してサブルーチンを定義すると、同じ制御文内からはサブルーチンしか呼び出すことはできません。
例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 を値として取得します (サブルーチンからコピーして返されます)。2 番目の実パラメータ “(X+1)*2” は変数ではないため、コピーして返されません。最後に、グローバル変数 C はサブルーチン呼び出しの影響を受けません。