# Sub..end sub

sub..end sub 제어 문은 call 문에서 호출할 수 있는 서브루틴을 정의합니다.

구문:

Sub name [ ( paramlist )] statements end sub

인수는 서브루틴에 복사되며, call 문에 있는 해당 실제 매개 변수가 변수 이름일 경우 서브루틴을 종료할 때 다시 복제됩니다.

서브루틴에 call 문에 의해 전달된 실제 매개 변수의 수보다 더 많은 공식 매개 변수가 있는 경우 추가 매개 변수는 NULL로 초기화되며 서브루틴 내에서 로컬 변수로 사용될 수 있습니다.

인수:

인수

| 인수 | 설명 |
| --- | --- |
| name | 서브루틴의 이름입니다. |
| paramlist | 서브루틴의 공식 매개 변수에 대한 쉼표로 구분된 변수 이름 목록입니다. 이들은 서브루틴 내의 어떠한 변수로도 사용할 수 있습니다. |
| statements | 하나 이상의 Qlik Sense 스크립트 문의 그룹입니다. |

제한 사항:

* sub 문은 제어 문이므로 세미콜론이나 줄 끝(EOL)으로 끝나며 여기에 포함될 수 있는 두 절(sub 및 end sub)은 줄 경계를 넘지 않아야 합니다.

* 제어 문(예: `if..then`) 내에서 `Sub..end sub`를 사용하여 서브루틴을 정의하면 동일한 제어 문 내에서만 서브루틴을 호출할 수 있습니다.

예 1:

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

예 2: - 매개 변수 전달

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

상기 예의 결과는 서브루틴 내에서 로컬로 이루어지며, A는 1로, B는 4로, C는 NULL로 초기화됩니다.

서브루틴을 종료할 때 전역 변수 A의 값은 2가 됩니다(서브루틴에서 다시 복사됨). 두 번째 실제 매개 변수 “(X+1)\*2”는 변수가 아니기 때문에 다시 복사되지 않습니다. 마지막으로 전역 변수 C는 서브루틴 호출에 의해 영향을 받지 않습니다.

## 자세한 정보

* [Call](https://help.qlik.com/ko-KR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Call.htm)
* [Exit](https://help.qlik.com/ko-KR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/Exit.htm)
* [End](https://help.qlik.com/ko-KR/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptControlStatements/End.htm)