transfer

transfer 문은 소스 프로그램을 종료하면서 한 기본 프로그램에서 다른 프로그램으로 제어를 전송합니다. 소스 프로그램은 선택적으로 대상 프로그램의 입력 레코드로 레코드를 전달할 수 있습니다. transfer 문은 호출된 프로그램에서 올바르지 않습니다.

transfer 문의 유형은 두 가지입니다.
  • transfer to transaction 문이 복구 가능 자원을 커미트하거나 롤백할 수 있습니다.
  • transfer to program 문이 동기점을 발생시키지 않고 파일 또는 커서를 닫지 않으며 복구 가능 자원을 커미트하거나 롤백하지 않습니다. 소스 프로그램과 대상 프로그램은 동일한 실행 단위에 있어야 합니다.

런타임 동작에 대한 세부사항은 이 주제의 “호환성” 절을 참조하십시오.

대상 프로그램은 EGL로 생성되거나 외부에서 정의된 것으로 간주됩니다. 프로그램이 외부에서 정의된 것으로 표시하는 방법에 대한 세부사항은 다음 절에서 isExternal 특성에 대한 설명을 참조하십시오.

구문

transfer
문의 구문 다이어그램
targetName
제어를 수신하는 트랜잭션 또는 기본 프로그램입니다. 이름은 따옴표가 없는 파트 참조, 따옴표로 묶인 리터럴 문자열, 상수 또는 sysVar.transferName이나 다른 변수 중 하나입니다.
recordName
대상 프로그램에서 입력 레코드로 수신되는 레코드입니다. 전달된 레코드는 모든 유형이 될 수 있지만 길이와 기본 유형은 데이터를 수신하는 레코드와 호환 가능해야 합니다. 대상 프로그램의 입력 레코드는 기본 레코드여야 합니다.
특성
다음 특성이 지원됩니다.
isExternal
부울 특성:
  • 기본값인 NO는 연계 파트의 요소가 외부 프로그램이 전송 대상인지 여부를 지정함을 표시합니다. 연계 파트에 값을 설정하는 것이 보다 융통성이 있으므로 이와 같은 설정이 좋습니다. 설정은 코드에 임베디드되지 않습니다.

    transfer to transaction 문을 코드화하는 경우 연계 파트 요소는 transferToTransaction이며 속성은 externallyDefined입니다. transfer to program 문을 코드화하는 경우 연계 파트 요소는 transferToProgram이고 속성은 linkType입니다.

  • YES는 EGL 생성 프로그램이 아닌 프로그램이 전송의 대상임을 표시합니다.
linkageKey
연계 옵션 파트에서 transferToProgram 또는 transferToTransaction 요소를 참조하는 문자열입니다. 문자열은 해당 요소의 toPgm 속성과 일치합니다. 추가 세부사항은 “linkageKey”를 참조하십시오.

올바른 전송

다음 표에는 EGL 생성 코드와 이루어지는 올바른 전송이 표시되어 있습니다.

표 1. EGL의 올바른 전송
오브젝트 전송 대상 오브젝트
J2EE 외부에 있는 EGL Java™ 프로그램 EGL Java 프로그램(비J2EE)
J2EE 애플리케이션 클라이언트에 있는 EGL Java 프로그램 동일한 J2EE 애플리케이션 클라이언트에 있는 EGL Java 프로그램
J2EE 웹 애플리케이션에 있는 EGL Java 프로그램 동일한 J2EE 웹 애플리케이션에 있는 EGL Java 프로그램
EGL CICS® COBOL 프로그램 EGL CICS COBOL 프로그램
임의의 언어로 작성되고 CICS에서 실행되는 비EGL 프로그램
EGL z/OS® 일괄처리 프로그램 EGL z/OS 일괄처리 프로그램
임의의 언어로 작성되고 z/OS의 CICS 외부에서 실행되는 비EGL 일괄처리 프로그램
주어진 트랜잭션의 비EGL CICS 프로그램 동일한 트랜잭션에 있는 EGL CICS COBOL 프로그램
동일한 트랜잭션에 있는 비EGL CICS COBOL 프로그램
임의의 언어로 작성된 CICS 트랜잭션 임의의 언어로 작성된 CICS 트랜잭션
주어진 트랜잭션의 EGL 생성 IMS/VS 프로그램 동일한 트랜잭션에 있는 EGL 생성 IMS/VS 프로그램
임의의 언어로 작성된 IMS™ 트랜잭션 임의의 언어로 작성된 IMS 트랜잭션
IBM® i의 EGL 프로그램 IBM i의 EGL COBOL 프로그램
임의의 언어로 작성되고 IBM i에서 실행 중인 비EGL 프로그램
임의의 언어로 작성되고 IBM i에서 실행 중인 비EGL 프로그램 IBM i의 EGL COBOL 프로그램
임의의 언어로 작성되고 IBM i에서 실행 중인 비EGL 프로그램

EGL 생성 Java 코드에서 비EGL 생성 Java 코드로 전송하려면 EGL 외부 유형, Java 액세스 함수 또는 vgLib.startTransaction 메커니즘 중 하나를 사용하십시오.

EGL은 하나의 트랜잭션에서 양식을 표시하고 사용자가 해당 양식을 제출하면 다른 트랜잭션이 호출되는 것과 같은 연기 전환의 사용을 지원합니다. 세부사항은 “show”를 참조하십시오.

예제

다음 예제에서 현재 프로그램은 processCustomer 프로그램에 제어를 전송합니다.
transfer to program com.CompanyB.CustomerPackage.processCustomer;

호환성

표 2. transfer 문의 호환성 고려사항
플랫폼 문제
일괄처리 환경(z/OS 기본 일괄처리 프로그램, IMS BMP 또는 Java 기본 텍스트나 기본 일괄처리 프로그램) transfer to transaction 문은 동일한 실행 단위에서 프로그램을 시작합니다. 전송 전 동작은 synchOnTrxTransfer 빌드 디스크립터 옵션의 설정에 따라 다릅니다.
  • synchOnTrxTransfer의 값이 NO(기본값)인 경우 transfer to transaction 문은 호출되는 프로그램에서 사용 가능한 자원을 닫거나 커미트하지 않습니다.
  • synchOnTrxTransfer의 값이 YES인 경우에는 transfer to transaction 문이 복구 가능 자원을 커미트하고 파일과 커서를 닫습니다.

z/OS 일괄처리 프로그램과 IMS BMP 프로그램 간 전송은 지원되지 않습니다.

EGL에서는 OS XCTL 매크로를 사용하여 IMS BMP에서 EGL 또는 VisualAge® Generator가 생성하지 않은 프로그램으로 전송을 실행합니다.

z/OS용 CICS 전송이 발생하는 경우와 다음 상황 중 하나가 적용되는 경우에 PSB가 스케줄되지 않은 한 transfer to program으로 인해 동기점이 발생하지 않습니다.
  • 수신 프로그램이 다른 PSB로 또는 PSB 없이 정의되었습니다.
  • transfer from program이 기본값인 synchOnPgmTransfer="YES" 빌드 디스크립터 옵션을 지정합니다.
  • 비EGL(외부에서 정의됨) 프로그램으로 전송됩니다.

EGL은 CICS XCTL 명령을 사용하여 transfer to program 문을 구현하고 해당 명령의 COMMAREA 옵션을 사용하여 레코드를 전달합니다. 데이터는 CICS 공통 영역의 첫 번째 바이트에서 시작하고 최대 레코드 길이는 32763입니다.

transfer to transaction 문이 복구 가능 자원을 커미트하고 파일과 커서를 닫으며 새 트랜잭션을 시작합니다. 이 경우에 targetName은 CICS 트랜잭션 ID입니다. EGL은 CICS START 명령을 사용하여 명령문을 구현하고 해당 명령의 COMMAREA 옵션을 사용해서 레코드를 전달합니다. 레코드 데이터는 CICS 공통 영역의 첫 번째 바이트에서 시작하고 최대 레코드 길이는 32763입니다.

IMS BMP 일괄처리 환경 행을 참조하십시오.
IMS/VS
  • 트랜잭션의 초기 프로그램이 주 기본 프로그램이면 대상 프로그램이 주 텍스트 UI 프로그램인 경우 transfer to program 문이 지원되지 않습니다.
  • 트랜잭션의 초기 프로그램이 주 텍스트 UI 프로그램이면 대상 프로그램이 입출력(I/O) PCB에 액세스하는 주 기본 프로그램인 경우 transfer to program 문이 지원되지 않습니다. 대부분의 주 기본 프로그램은 입출력(I/O) PCB에서 읽으므로 주 텍스트 UI 프로그램에서 주 기본 프로그램으로 이루어지는 전송은 거의 지원되지 않습니다.
  • transfer 문을 사용하여 EGL 생성 IMS/VS 프로그램에서 EGL 생성 IMS/VS 프로그램으로 제어를 전송하는 경우 두 프로그램의 대화 상태는 대화식 또는 비대화식으로 동일해야 합니다. 두 프로그램 모두 빌드 디스크립터 옵션 spaSize, spaADF, spaStatusBytePosition에 동일한 값을 지정해야 합니다.
  • transfer to program 문은 EGL 또는 VisualAge Generator가 대상 프로그램을 생성한 경우에만 IMS/VS에서 지원됩니다.
  • transfer to transaction 문의 targetName은 IMS 트랜잭션 ID여야 합니다.

transfer to transaction 문이 복구 가능 자원을 커미트하고 파일과 커서를 닫으며 새 트랜잭션을 시작합니다.

Java 이름이 import 문을 통해 또는 명시적으로 코드 패키지 이름을 통해 제공되지 않는 경우 연계 옵션 파트의 transferToProgram 요소와 transferToTransaction 요소가 프로그램 수신에 필요한 패키지 이름을 제공할 수 있습니다. 비EGL 생성 프로그램에 대한 전송은 지원되지 않습니다.
Rich UI transfer 문이 지원되지 않습니다.
z/OS 일괄처리 일괄처리 환경 행을 참조하십시오.