# Sub..end sub

Instrukcja sterowania sub..end sub definiuje podprogram, który można wywołać z instrukcji call.

Składnia:

Sub name [ ( paramlist )] statements end sub

Argumenty są kopiowane do podprogramu, a jeśli odpowiadające parametry rzeczywiste w instrukcji call są nazwami zmiennych, wówczas są kopiowane ponownie na zewnątrz po wyjściu z podprogramu.

Jeśli podprogram zawiera więcej parametrów formalnych niż rzeczywistych przekazywanych przez instrukcję call, wówczas parametry dodatkowe zostaną zainicjowane na NULL i możliwe będzie ich użycie jako zmiennych lokalnych w podprogramie.

Argumenty:

Argumenty

| Argument | Opis |
| --- | --- |
| name | Nazwa podprogramu. |
| paramlist | Rozdzielana przecinkami lista nazw zmiennych dla parametrów formalnych podprogramu. Te zmienne mogą być używane jak dowolna zmienna w podprogramie. |
| statements | Dowolna grupa zawierająca co najmniej jedną instrukcję skryptu Qlik Sense. |

Ograniczenia:

* Instrukcja sub jest instrukcją sterowania i jako taka kończy się średnikiem lub symbolem końca linii — żadna z jej dwóch klauzul (sub i end sub) nie może zatem wykraczać poza granicę linii.

* Podczas definiowania podprogramu za pomocą `Sub..end sub` wewnątrz instrukcji sterującej, na przykład `if..then`, można wywołać podprogram tylko z tej samej instrukcji sterowania.

Przykład 1:

`Sub INCR 
 (I,J)` `I = I + 
 1` `Exit Sub 
 when I < 10` `J = J + 
 1` `End Sub` `Call INCR 
 (X,Y)`

Przykład 2: — transfer parametru

`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)`

Wynik powyższej składni będzie następujący: lokalnie, wewnątrz podprogramu, A zostanie zainicjowane na 1, B zostanie zainicjowane na 4, a C zostanie zainicjowane na NULL.

Po wyjściu z podprogramu zmienna globalna A otrzyma 2 jako wartość (kopiowaną z powrotem z podprogramu). Drugi parametr rzeczywisty „(X+1)\*2” nie zostanie skopiowany z powrotem, ponieważ nie jest zmienną. Ostatecznie wywołanie podprogramu nie wpływa na zmienną globalną C.

## Dowiedz się więcej

* [Call](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Call.htm)
* [Exit](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Exit.htm)
* [End](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/End.htm)