# Call

De besturingsopdracht call roept een subroutine aan die door een vorige sub-opdracht is gedefinieerd.

Syntaxis:

Call name ( [ paramlist ])

Argumenten:

Argumenten

| Argument | Beschrijving |
| --- | --- |
| name | De naam van de subroutine. |
| paramlist | Een door komma's gescheiden lijst met de werkelijke parameters die worden gezonden aan de subroutine. Elk item in de lijst kan een veldnaam, een variabele of een willekeurige uitdrukking zijn. |

De subroutine die wordt opgeroepen door een call-opdracht moet op een eerdere positie in het script door een sub zijn gedefinieerd.

Parameters worden gekopieerd naar de subroutine en worden, als de parameter in de call-instructie een variabele is en geen uitdrukking, bij het beëindigen van de subroutine weer teruggekopieerd.

Beperkingen:

* Aangezien de call-opdracht een besturingsopdracht is en dus wordt afgesloten door een puntkomma of het einde van een regel, mag de opdracht niet op meerdere regels staan.

* Als u een subroutine definieert met `Sub..end sub` binnen een besturingsopdracht, bijvoorbeeld `if..then`, kunt u de subroutine alleen oproepen binnen dezelfde besturingsopdracht.

Voorbeeld:

In dit voorbeeld worden alle aan Qlik gerelateerde bestanden in een map en in de bijbehorende submap opgesomd en wordt bestandsinformatie opgeslagen in een tabel. Er wordt vanuit gegaan dat u een gegevensverbinding hebt gemaakt met de naam Apps in de map.

De subroutine DoDir wordt aangeroepen met de verwijzing naar de map , 'lib://Apps', als parameter. Binnen de subroutine, is er een recursieve aanroep, `Call DoDir (Dir)`, waarmee de functie recursief naar bestanden kijkt in submappen.

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