# Call

Instrukcja sterowania call wywołuje procedurę zdefiniowaną we wcześniejszej instrukcji sub.

Składnia:

Call name ( [ paramlist ])

Argumenty:

Argumenty

| Argument | Opis |
| --- | --- |
| name | Nazwa podprogramu. |
| paramlist | Do podprogramu przekazana zostanie rozdzielana przecinkami lista rzeczywistych parametrów. Każdy z elementów listy może być nazwą pola, zmienną lub dowolnym wyrażeniem. |

Podprogram wywoływany instrukcją call musi być zdefiniowany w instrukcji sub napotkanej na wcześniejszym etapie wykonywania skryptu.

Parametry są kopiowane do podprogramu, a jeśli parametrem instrukcji call jest zmienna, a nie wyrażenie, to po wyjściu z podprogramu parametry są ponownie kopiowane na zewnątrz.

Ograniczenia:

* Jako instrukcja sterowania instrukcja call kończy się na średniku lub znaku nowego wiersza, nie może zatem obejmować wielu wierszy.

* Podczas definiowania podprogramu za pomocą `Sub..end sub` wewnątrz instrukcji sterującej, na przykład `if..then`, można wywołać podprogram tylko z tej samej instrukcji sterowania.

Przykład:

W tym przykładzie powstaje lista wszystkich plików związanych z aplikacją Qlik w folderze oraz jego podfolderach, a następnie informacje o plikach są zapisywane w tabeli. Przyjęto, że użytkownik utworzył połączenie danych o nazwie Applications do tego folderu.

Podprogram DoDir jest wywoływany z odniesieniem do folderu 'lib://Applications' jako parametrem. W podprogramie istnieje wywołanie rekurencyjne `Call DoDir (Dir)`, które powoduje, że funkcja wyszukuje pliki rekurencyjnie w podfolderach.

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