Vai al contenuto principale Passa a contenuto complementare

Sub..end sub

L'istruzione di controllo sub..end sub definisce una subroutine che può essere richiamata da un'istruzione call.

Sintassi:  

Sub name [ ( paramlist )] statements end sub

 

Gli argomenti vengono copiati nella subroutine e, se i relativi parametri reali nell'istruzione call corrispondono a un nome di variabile, vengono copiati nuovamente quando si chiude la subroutine.

Se una subroutine presenta più parametri formali di quelli effettivi passati da un'istruzione call, i parametri extra vengono inizializzati su NULL e possono essere utilizzati come variabili locali all'interno della subroutine.

Argomenti:  

Argomenti
Argomento Descrizione
name Il nome della subroutine.
paramlist Un elenco separato da virgole di nomi di variabili per i parametri formali della subroutine. Può essere utilizzato come qualsiasi variabile all'interno della subroutine.
statements Qualsiasi gruppo di una o più istruzioni dello script di Qlik Sense.

Limiti:  

  • Poiché sub è un'istruzione di controllo che termina con un punto e virgola o con un carattere di fine riga, ciascuna delle due clausole corrispondenti (sub e end sub) deve essere contenuta in una sola riga.

  • Quando si definisce una routine secondaria con Sub..end suball'interno di un'istruzione di controllo, ad esempio if..then, è possibile richiamare la routine secondaria solo dall'interno della stessa istruzione di controllo.

Esempio 1:  

Sub INCR (I,J)

I = I + 1

Exit Sub when I < 10

J = J + 1

End Sub

Call INCR (X,Y)

Esempio 2: - trasferimento parametri

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)

Dall'esempio precedente risulta che localmente, all'interno della subroutine, A verrà inizializzato su 1, B verrà inizializzato su 4 e C verrà inizializzato su NULL.

Quando si chiude la subroutine, la variabile globale A otterrà 2 come valore (ricopiato dalla subroutine). Il secondo parametro reale “(X+1)*2” non verrà ricopiato dato che non si tratta di una variabile. Infine, la variabile globale C non verrà influenzata dalla chiamata della subroutine.

Ulteriori informazioni

 

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!