# Call

L'instruction de contrôle call appelle une sous-routine qui doit être définie par une instruction sub précédente.

Call name ( [ paramlist ])

Arguments

| Argument | Description |
| --- | --- |
| name | Nom de la sous-routine. |
| paramlist | Liste des paramètres à envoyer à la sous-routine, séparés par des virgules. Chaque élément de la liste peut correspondre à un nom de champ, une variable ou une expression arbitraire. |

La sous-routine appelée par une instruction call doit être définie auparavant dans l'exécution du script par une instruction sub.

Les paramètres sont copiés dans la sous-routine et, si le paramètre de l'instruction call désigne une variable au lieu d'une expression, il est recopié et supprimé à la fermeture de la sous-routine.

* Comme l'instruction call est une instruction de contrôle et qu'elle se termine donc soit par un point-virgule, soit par un caractère de fin de ligne, elle ne doit pas s'étendre sur plusieurs lignes.

* Lorsque vous définissez une sous-routine avec `Sub..end sub` à l'intérieur d'une instruction de contrôle, par exemple `if..then`, vous pouvez uniquement appeler la sous-routine depuis la même instruction de contrôle.

Cet exemple répertorie tous les fichiers liés à Qlik dans un dossier et ses sous-dossiers, et enregistre les informations des fichiers dans une table. On suppose que vous avez créé une connexion de données appelée Apps dans le dossier.

La sous-routine DoDir est appelée avec la référence au dossier, 'lib://Apps', en tant que paramètre. La sous-routine contient un appel récursif `Call DoDir (Dir)` qui permet à la fonction de rechercher des fichiers dans les sous-dossiers de façon récursive.

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