# Call

Оператор управления call вызывает подпрограмму, которую необходимо задать с помощью предыдущего оператора sub.

Синтаксис:

Call name ( [ paramlist ])

Аргументы:

Аргументы

| Аргумент | Описание |
| --- | --- |
| name | Имя подпрограммы. |
| paramlist | Список фактических параметров, отправляемых в подпрограмму и перечисленных через запятую. Элементы списка могут быть именами полей, переменными или произвольными выражениями. |

Подпрограмма, вызываемая оператором call, должна быть задана оператором sub ранее при выполнении скрипта.

Параметры копируются в подпрограмму и, если параметр оператора call является переменной, а не выражением, снова копируются назад при выходе из подпрограммы.

Ограничения:

* Поскольку оператор call является оператором управления и заканчивается точкой с запятой или знаком конца строки, он не должен выходить за границу строки.

* Когда определяется подпрограмма с использованием `Sub..end sub` внутри оператора управления, например `if..then`, подпрограмму можно вызвать только в пределах этого оператора управления.

Пример:

В данном примере все файлы, связанные с 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')
```