# Call

Kontrollsatsen call anropar en subrutin som måste vara definierad av en sub-sats på en tidigare plats i skriptet.

Syntax:

Call name ( [ paramlist ])

Argument:

Argument

| Argument | Beskrivning |
| --- | --- |
| name | Subrutinens namn. |
| paramlist | En kommaavgränsad lista över de faktiska parametrar som ska skickas till den underordnade rutinen. Varje parameter i listan kan vara ett fältnamn, ett variabelnamn eller ett godtyckligt uttryck. |

Den underordnade rutinen som anropas med hjälp av en call-sats måste vara definierad i en sub-sats som påträffats tidigare under skriptexekveringen.

Parametrarna kopieras in i subrutinen. Om parametern i call-satsen är ett variabelnamn, inte ett uttryck, kopieras dess värde dessutom tillbaka ut igen när subrutinen avslutas.

Begränsningar:

* Eftersom call-satsen är en kontrollsats och som sådan slutar med ett semikolon eller ett radslut, får den inte korsa en linjegräns.

* När du definierar en underordnad rutin med `Sub..end sub` inuti en kontrollsats, till exempel `if..then`, kan du bara anropa den underordnade rutinen inifrån samma kontrollsats.

Exempel:

I det här exemplet visas alla Qlik-relaterade filer i en mapp och dess undermappar, och filinformationen lagras i en tabell. Vi utgår från att du har skapat en dataanslutning med namnet Applications till mappen.

Den underordnade rutinen DoDir anropas med referensen till mappen 'lib://Applications' som parameter. Inuti den underordnade rutinen finns det ett rekursivt anrop, `Call DoDir (Dir)`, som får funktionen att leta efter filer rekursivt i undermappar.

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