exit
EGL exit 문을 사용하면 조건부 또는 루프 명령문으로 제어되는 코드 블록이나 함수의 전체 또는 일부를 즉각적으로 종료할 수 있습니다.
수정자를 지정하지 않으면 exit가 case, for, forEach, if, 또는 while 문으로 제어되는 최근에 입력된 코드 블록에서 제어를 전송합니다. exit 문이 루프 내에 있지 않은 경우에는 최근에 입력된 함수에서 제어를 전송합니다.
- case
- for
- forEach
- if
- while
이러한 수정자는 중첩된 루프를 사용하는 경우 강력해집니다. 아래 "예제" 절에서 첫 번째 예제를 참조하십시오. 해당 수정자 중 하나를 지정할 때 사용자가 지정된 유형의 루프 내부에 있지 않은 경우 EGL이 유효성 검증 오류를 표시합니다.
program 수정자는 현재 프로그램의 호출자에게 제어를 리턴합니다. 호출된 프로그램에서 exit program은 체인의 이전 프로그램으로 돌아갑니다. 기본 프로그램에서는 exit program이 실행 단위를 종료합니다.
rununit 수정자는 호출된 프로그램의 시퀀스를 종료합니다. 프로그램 A가 프로그램 B를 호출하고 프로그램 B에서 exit program을 실행하는 경우 프로그램 A로 제어가 리턴됩니다. 그러나 프로그램 B에서 exit rununit을 실행하면 프로그램 A도 종료됩니다. 기본 프로그램에서는 exit rununit이 exit program과 동일한 영향을 미칩니다.
- 리턴값을 지정하지 않도록 선택할 수 있습니다. 이 경우(또는 exit 키워드를 전혀 포함하지 않는 경우) 기본 프로그램이 sysVar.returnCode 시스템 변수의 값을 운영 체제에 리턴합니다(호출된 프로그램은 이를 수행하지 않음).
- 다음과 같이 sysVar.returnCode를 리턴하여 이 기본 동작을
명시적으로 만들 수 있습니다.
exit program (sysVar.returnCode); - 사용자가 선택한 리턴값을 지정할 수 있습니다. 이 값은
리터럴 정수, 변수, 상수 또는 정수로 해석되는 숫자
표현식입니다.
exit program (myCustomer.customerNumber);
EGL에서는 또한 이전 VisualAge® Generator와의 호환성을 위해 stack 수정자를 제공합니다. 새 프로그램 개발 시 이 수정자를 사용하지 마십시오. 대신 예외를 처리하여 프로그램 플로우에 대한 엄격한 제어를 유지하십시오. 자세한 정보는 "예외 핸들링"을 참조하십시오. stack 수정자는 제어를 기본 함수에 바로 리턴합니다. 이 프로세스에서 EGL은 기본 함수에서 현재 함수에 이르는 일련의 함수를 나열하는 런타임 스택의 중간 함수에 대한 모든 참조를 제거합니다. 기본 함수에서 out 또는 inOut 수정자를 사용하여 함수를 호출한 경우 exit stack 문 이후에 기본 함수에서 해당 인수의 현재 값을 사용할 수 있습니다. 기본 함수에서 stack 수정자를 사용하는 경우에는 제어가 간단히 다음 순차 명령문으로 전달됩니다(레이블을 지정하는 경우에도).
stack 수정자를 사용하면 기본 함수로 돌아가는 시기로 점프하는 레이블을 지정할 수 있습니다. EGL은 이 기능을 마이그레이션된 프로그램과의 호환성을 위해서만 제공합니다. 레이블 또는 goTo 문은 구조화 프로그래밍 표준을 준수하지 않으므로 이를 새 코드에서 사용하지 마십시오.
구문

- statement
- 종료할 코드 블록의 유형(case, for, forEach, if, openUI 또는 while)을 지정할 수 있습니다. 이 옵션은 중첩된 블록에서 안쪽에 있을 때 유용합니다. 지정된 명령문 이후 처리를 계속합니다.
- label1
- 엔클로징 case, for, forEach, if 또는 while 문에 첨부된 레이블입니다. 참조된 명령문에서 처리를 계속합니다.
- returnValue
- 리터럴 정수나 변수, 상수 또는 정수로 해석되는
숫자 표현식입니다. 기본 프로그램(호출된 프로그램은 아님)에서
리턴값이 운영 체제에서 사용 가능해집니다. 생성된 Java™ 프로그램의 경우 값은
-2147483648 - 2147483647 범위(양 끝값 포함)에 있어야 합니다. 생성된
COBOL 프로그램의 경우에는 값이 0 - 512 범위(양 끝값 포함)에 있어야 합니다.
리턴값에 대한 기타 세부사항은 returnCode의 내용을 참조하십시오.
- sysVar.returnCode
- 운영 체제에 리턴된 값을 포함하는 시스템
변수입니다.
세부사항은 sysVar.returnCode를 참조하십시오.
- label2
- 이 구문은 마이그레이션된 프로그램과의 호환성을 위해서만 제공됩니다. 기본 함수 내에서 지정된 레이블로 점프하려면 이 구문을 사용하십시오. 새 코드에서는 레이블을 사용하지 마십시오.
예제
// print 1st 100 customers with non-zero balance
while (getCustomer() != 0)
for(i from 1 to 100 by 1)
if (myCustomer.customerBalance == 0)
exit for;
end printBalance(myCustomer);
endend
여기서 exit for 문은 초기 while 문으로 제어를 돌려보내 다시 루프가 발생하도록 합니다. for 수정자가 없으면 exit 문이 if 문을 중단하고 for 루프로 돌아갑니다.
오류 조건
exit 문이 지정된 루프 내부에 없을 때 종료할 블록의 유형을 지정하는 경우 유효성 검증 오류가 발생합니다.
exit 문도 지정된 블록과 동일한 함수에 있어야 합니다. 다시 말해 while 루프 내부에서 functionA를 호출하고 functionA에 자체 while 루프가 없는 경우에는 함수 내부에 exit while 문을 넣을 수 없습니다.
호환성
| 플랫폼 | 문제 |
|---|---|
| JavaScript 생성 | Rich UI는 exit 문의 exit for, exit if, exit while, exit case 변형을 지원하며 기타 변형은 지원하지 않습니다. |