Ga naar hoofdinhoud

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

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!