Ga naar hoofdinhoud Ga naar aanvullende inhoud

Sub..end sub

De besturingsopdracht sub..end sub geeft een subroutine aan die vanuit een call-opdracht kan worden aangeroepen.

Syntaxis:  

Sub name [ ( paramlist )] statements end sub

 

De argumenten worden in de subroutine gekopieerd en, als de corresponderende parameter in de call-opdracht een variabelenaam is, weer teruggekopieerd bij het verlaten van de subroutine.

Als een subroutine meer formele parameters heeft dan er aan daadwerkelijke parameters door een call-opdracht worden doorgegeven, worden de overtollige parameters op NULL ingesteld en kunnen ze als lokale variabelen binnen de subroutine worden gebruikt.

Argumenten:  

Argumenten
Argument Beschrijving
name De naam van de subroutine.
paramlist Een door komma's gescheiden lijst variabelen voor de formele parameters van de subroutine. Deze kunnen worden gebruikt als willekeurige variabelen binnen de subroutine.
statements Een willekeurige groep van een of meer Qlik Sense-scriptopdrachten.

Beperkingen:  

  • Omdat de instructie sub een besturingsopdracht is en dus wordt afgesloten door een puntkomma of het einde van een regel, mag geen van de twee mogelijke clausules (sub en end sub) de regelgrens overschrijden.

  • 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 1:  

Sub INCR (I,J)

I = I + 1

Exit Sub when I < 10

J = J + 1

End Sub

Call INCR (X,Y)

Voorbeeld 2: - parameteroverdracht

Sub ParTrans (A,B,C)

A=A+1

B=B+1

C=C+1

End Sub

A=1

X=1

C=1

Call ParTrans (A, (X+1)*2)

Het resultaat van het bovenstaande is dat lokaal, binnen de subroutine, A wordt geïnitialiseerd op 1, B op 4 en C op NULL.

Bij het verlaten van de subroutine krijgt de globale variabele A de waarde 2 (teruggekopieerd van de subroutine). De tweede werkelijke parameter “(X+1)*2” wordt niet teruggekopieerd omdat dit geen variabele is. Tot slot verandert de globale variabele C niet door de aanroep van de subroutine.

Meer informatie

 

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!