# Call

call 制御ステートメントは、事前に sub ステートメントで定義されているサブルーチンを呼び出します。

構文:

Call name ( [ paramlist ])

引数：

引数

| 引数 | 説明 |
| --- | --- |
| name | サブルーチンの名前。 |
| paramlist | サブルーチンに送られる実パラメータのコンマ区切りのリスト。リスト内の各アイテムは、項目名、変数、または任意の数式です。 |

call ステートメントで呼び出されるサブルーチンは、スクリプトの実行中に先に出現する sub ステートメントで定義される必要があります。

パラメータはサブルーチンにコピーされます。call ステートメントのパラメータが数式ではなく変数の場合、パラメータはサブルーチンが終了したときにコピーして戻されます。

制限事項:

* call ステートメントは、制御ステートメントであり、セミコロンまたは改行コードで終わるため、行をまたぐことはできません。

* 例えば [`if..then`] 制御文内の [`Sub..end sub`]を使用してサブルーチンを定義すると、同じ制御文内からはサブルーチンしか呼び出すことはできません。

この例では、フォルダおよびそのサブフォルダ内のすべての Qlik 関連ファイルを一覧表示し、ファイル情報をテーブルに保存します。Applications という名前のデータ接続がフォルダに作成されていることが前提です。

DoDirサブルーチンは、パラメータとして'lib://Applications'フォルダを参照して呼び出されます。サブルーチンの内部には再帰呼び出し`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://Applications')
```