# 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.

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.

Argumentos:

Argumentos Sub

| 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 QlikView. |

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.

## Saiba mais

* [Call](https://help.qlik.com/pt-BR/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Call.htm)
* [Exit](https://help.qlik.com/pt-BR/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/Exit.htm)
* [End](https://help.qlik.com/pt-BR/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptControlStatements/End.htm)