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')