跳到主要内容 跳到补充内容

Sub..end sub

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

语法:  

Sub name [ ( paramlist )] statements end sub

 

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

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

参数:  

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

限制:  

  • 由于 sub 语句是控制语句,并以分号或行尾结束,两个可能子句(subend 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 不会受到子例程调用的影响。

了解详情

 

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!