Call
call 控制语句可调用必须由先前的 sub 语句定义的子例程。
语法:
Call name ( [ paramlist ])
参数:
参数 | 说明 |
---|---|
name | 子例程的名称。 |
paramlist | 实际参数逗号分隔符列表,用以发送至子例程。此列表中每个项目都可为字段名,变量或任意表达式。 |
由一条 call 语句调用的子例程必须由在脚本执行期间更先遇到的 sub 语句定义。
参数会复制到子例程中,此外,如果在 call 语句中的参数是一个变量而非表达式,重新将其复制到现有子例程中。
限制:
-
由于该 call 语句是一个控制语句,以分号或换行符结束,因此不能跨越行边界。
-
当在控制语句中用 Sub..end sub 定义子例程时,例如 if..then,则只能从同一控制语句中调用该子例程。
示例:
该示例列出文件夹及其子文件夹中所有和 Qlik 相关的文件,并将文件信息存储在表格中。假设您已创建了指向文件夹的名为 Apps 的连接。
参考文件夹调用了 DoDir 子例程,将 'lib://Apps' 作为参数。在子例程内,存在递归调用 Call DoDir (Dir),让函数在子文件夹中递归式查找文件。
sub DoDir (Root) For Each Ext in 'qvw', 'qvo', 'qvs', 'qvt', 'qvd', 'qvc', 'qvf' For Each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; Next File Next Ext For Each Dir in dirlist (Root&'\*' ) Call DoDir (Dir) Next Dir End Sub Call DoDir ('lib://Apps')