Sub..end sub
La sentencia de control sub..end sub define una subrutina, la cual puede ser invocada mediante una sentencia call.
Sintaxis:
Sub name [ ( paramlist )] statements end sub
Los argumentos se copian en la subrutina y, si el correspondientes argumento en la sentencia call es un nombre de variable, se copia de nuevo al salir de la subrutina.
Si una subrutina contiene más parámetros formales que parámetros reales aprobados por una sentencia call, los parámetros extra se inicializarán como NULL pudiéndose emplear como variables locales dentro de la subrutina.
Como la sentencia sub es una sentencia de control y como tal termina con punto y coma o con un final de línea, cada una de sus dos cláusulas posibles (sub y end sub) no debe sobrepasar el límite de una línea.
Argumentos:
Argumento | Descripción |
---|---|
name | El nombre de la subrutina. |
paramlist | Una lista separada por comas con los nombres de variables de los parámetros formales de la subrutina. Estos pueden utilizarse como cualquier variable dentro de la subrutina. |
statements | Es cualquier grupo de una o varias sentencias de script de QlikView. |
Ejemplo 1:
Sub INCR (I,J)
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
Ejemplo 2: - transferencia de parámetros
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)
El resultado de lo anterior será que localmente, dentro de la subrutina, A se inicializará a 1, B se inicializará a 4 y C se inicializará a NULL.
Al salir de la subrutina, la variable global A obtendrá 2 como valor (copiado de la subrutina). El segundo parámetro real “(X+1)*2” no será copiado puesto que no es una variable. Por último, la variable global C no se verá afectada por la llamada de la subrutina.