Call
call 控制陳述式會呼叫必須由先前的 sub 陳述式定義的副程式。
語法:
Call name ( [ paramlist ])
引數:
引數 | 描述 |
---|---|
name | 副程式的名稱。 |
paramlist | 要傳送到副程式的實際參數的逗號分隔清單。清單中的各個項目可能是欄位名稱、變數或任意的運算式。 |
call 陳述式呼叫的副程式必須由指令碼執行期間較早出現的 sub 加以定義。
參數會複製到副程式中,而且如果 call 陳述式中的參數是變數而不是運算式,將在結束副程式時再次複製回參數。
限制:
-
由於 call 陳述式是控制陳述式,而且結尾是分號或行結尾,因此不可超出行邊界。
-
透過控制陳述式內部的 Sub..end sub 定義副程式時,例如 if..then,您只能從相同的控制陳述式內部叫用副程式。
範例:
此範例列出了在一個資料夾及其子資料夾中的所有 Qlik 相關檔案,並在表格中儲存檔案資訊。它假定您已建立一個名為 Apps、連接該資料夾的資料連線。
將透過參考該資料夾,以 'lib://Apps' 為參數呼叫 DoDir 副程式。在副程式內,有一個循環呼叫 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')