Sub..end sub
A declaração de controle sub..end sub define uma sub-rotina que pode ser acionada por meio de um comando call.
Sintaxe:
Sub name [ ( paramlist )] statements end sub
Os argumentos são copiados na sub-rotina e, se os parâmetros reais correspondentes no comando call forem o nome de uma variável, serão copiados novamente após a saída da sub-rotina.
Se uma sub-rotina tiver mais parâmetros formais que os parâmetros reais transmitidos por um comando call, os parâmetros extra serão inicializados como NULL e poderão ser utilizados como variáveis locais na sub-rotina.
Argumentos:
Argumento | Descrição |
---|---|
name | O nome da sub-rotina. |
paramlist | Uma lista, separada por vírgulas, de nomes de variáveis para os parâmetros formais da sub-rotina. Eles podem ser usados como qualquer variável dentro da sub-rotina. |
statements | Qualquer grupo de um ou mais comandos de script do Qlik Sense. |
Limitações:
-
Como o comando sub é um comando de controle e, portanto, termina com um ponto e vírgula ou com um fim de linha, cada uma de suas duas cláusulas possíveis (sub e end sub) não deve ultrapassar o limite da linha.
-
Quando você define uma sub-rotina com Sub..end sub dentro de um comando de controle, por exemplo if..then, apenas é possível chamar essa sub-rotina de dentro do mesmo comando de controle.
Exemplo 1:
Sub INCR (I,J)
I = I + 1
Exit Sub when I < 10
J = J + 1
End Sub
Call INCR (X,Y)
Exemplo 2: – transferência de parâmetro
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)
O resultado do exibido acima será local, dentro da sub-rotina, A será inicializado para 1, B será inicializado para 4 e C será inicializado para NULL.
Durante a saída da sub-rotina, a variável global A receberá 2 como valor (copiado da sub-rotina). O segundo parâmetro real “(X+1)*2” não será copiado de volta porque não é uma variável. Por fim, a variável global C não será afetada pela chamada de sub-rotina.