Sub..end sub

sub..end sub 控制语句用于定义可从 call 语句中调用的子例程。

Syntax:  

Sub name [ ( paramlist )] statements end sub

 

自变量将复制到子例程,而如果 call 语句中相应实际参数是变量名,则退出子例程时这些参数将再次从现有子例程中复制回来。

如果子例程通过 call 语句调用的形式参数比实际参数多,额外的形式参数将初始化为 NULL 值,且可在子例程中用作局部变量。

由于 sub 语句是控制语句,并以分号或行尾结束,两个可能子句(subend sub)中任意一个子句都不得跨越行边界。

Arguments:  

参数 说明
name 子例程的名称。
paramlist 子例程形式参数变量名列表的逗号分隔符列表。这些可用作子例程内的任意变量。
statements 一个或多个 Qlik Sense 脚本语句的任意组。

Example 1:  

Sub INCR (I,J)

I = I + 1

Exit Sub when I < 10

J = J + 1

End Sub

Call INCR (X,Y)

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

See also: