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