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 不会受到子例程调用的影响。