프로그램 간 제어 전송
EGL은 한 프로그램에서 다른 프로그램으로 제어를 전환하는 몇 가지 방법을 제공합니다.
- call 문은 제어를 다른 프로그램으로 전송하며 선택적으로 일련의 값을 전달합니다.
호출 대상 프로그램이 종료되면 제어는 호출자에게 반환됩니다. 호출 대상 프로그램이 변수로 전달된 데이터를 변경하는 경우 변수의 컨텐츠가 호출자에서 변경됩니다.
call 문은 데이터베이스 또는 기타 복구 가능한 자원을 커미트하지 않지만, 서버 측 자동 커미트는 발생할 수 있습니다.
연계 옵션 파트의 callLink 요소를 설정하여 호출의 특성을 지정할 수 있습니다. 자세한 정보는 "call" 및 "call 또는 transfer에서 연계 옵션 파트 사용"을 참조하십시오.
- 두 가지 유형의 transfer 문은 한 기본 프로그램에서 다른 프로그램으로 제어를 전송하고, 전송 프로그램을 종료하고, 선택적으로 레코드(이 레코드의 데이터는
수신 프로그램의 입력 레코드에 입력됨)를 전달합니다. 호출 대상 프로그램에서는 이러한 transfer 문 중 하나를 사용할 수 없습니다.
- transfer to transaction 문은 다음 작업을 수행합니다.
- CICS® 또는 IMS/VS에서 실행되는 기본 프로그램에서 이 명령문은 복구 가능한 자원을 커미트하고, 파일 및 커서를 닫으며, 새 트랜잭션을 시작합니다.
- z/OS® 또는 IMS™ BMP 기본 일괄처리 프로그램으로 실행되거나 Java™ 기본 텍스트 또는
기본 일괄처리 프로그램으로 실행되는 프로그램의 경우, 동작은 빌드 디스크립터 옵션 synchOnTrxTransfer의 설정에 따라 달라집니다.
- synchOnTrxTransfer의 값이 YES인 경우 transfer 문은 복구 가능한 자원을 커미트하고, 파일 및 커서를 닫으며, 동일한 실행 단위에서 프로그램을 시작합니다.
- synchOnTrxTransfer의 값이 NO(기본값)인 경우에도 transfer 문은 동일한 실행 단위에서 프로그램을 시작하지만 호출된 프로그램에서 사용 가능한 자원을 닫거나 커미트하지 않습니다.
- transfer to program 문은 복구 가능한 자원을 커미트하거나 롤백하지 않지만 파일을 닫고, 잠금을 해제하며 프로그램을 동일한 실행 단위에서 실행합니다.
제한사항 및 기타 문제에 대한 자세한 정보는 "transfer" 및 "call 또는 transfer에서 연계 옵션 파트 사용"을 참조하십시오.
- transfer to transaction 문은 다음 작업을 수행합니다.
- vgLib.startTransaction() 시스템 함수는 실행 단위를 비동기로 시작합니다. 이 조작은 전송 중인 프로그램을 종료하지 않으며
전송 중인 프로그램의 데이터베이스, 파일 및 잠금에 영향을 미치지 않습니다. 데이터를 수신 프로그램의 영역인 입력 레코드에 전달할 수도 있습니다.
사용자의 프로그램이 vgLib.startTransaction()을 호출하는 경우에는 추가 정보(Java의 패키지 이름, 또는 CICS의 원격 트랜잭션에 대한 정보 등)를 제공하기 위해 연계 옵션 파트 asynchLink 요소를 사용하여 프로그램을 생성해야 할 수도 있습니다. 자세한 정보는 "startTransaction()" 및 "call 또는 transfer에서 연계 옵션 파트 사용"을 참조하십시오.
- EGL show 문은 기본 textUI 프로그램 또는 기본 VGWebTransaction 프로그램을 종료하고 데이터를 사용자에게 표시합니다.
사용자가 양식 또는 웹 페이지를 제출하고 나면 show 문은 선택적으로 제어를 두 번째 기본 프로그램에 전달하며, 두 번째 기본 프로그램은
사용자의 데이터와 소스 프로그램에서 변경되지 않고 전달된 데이터를 모두 수신합니다.
textUI 프로그램과 관련하여, show 문은 연계 옵션 파트 transferToTransaction 요소의 설정에 의해 영향을 받습니다.
자세한 정보는 "show"를 참조하십시오.
- 마지막으로 forward 문은 Java 환경에서 실행되는 프로그램으로부터 호출됩니다. 이 명령문은 다음 조치를 수행합니다.
- 복구 가능한 자원을 커미트하고, 파일을 닫고 잠금을 해제합니다.
- 제어를 전달합니다.
- 코드를 종료합니다.
이 경우에서 대상은 다른 프로그램 또는 웹 페이지입니다. 자세한 정보는 "forward"를 참조하십시오.