IMS BMP 및 z/OS 일괄처리 환경에서의 제어 전송

IMS™ BMP 및 z/OS® 일괄처리 환경에서의 전송은 다음 방법을 사용하여 구현됩니다.
  • EGL 프로그램은 다음 세그먼트 중 하나를 사용하여 전송을 시작합니다.
    • 다른 EGL 프로그램으로 전송할 때 정적 또는 동적 호출로 구현되거나, 비EGL 프로그램으로 전송할 때 OS XCTL 매크로로 구현되는 transfer to program
    • OS XCTL 매크로로 구현되는 transfer to transaction
  • 비EGL 프로그램은 OS XCTL 명령을 사용하여 EGL 프로그램으로의 전송을 시작합니다.

다음 표에는 전송을 구현하는 다양한 방법이 간략히 설명되어 있습니다.

EGL 명령문 소스 프로그램 대상 프로그램 구현 방법
transfer to program EGL EGL COBOL CALL
비EGL OS XCTL
비EGL EGL
transfer to transaction EGL EGL
비EGL
비EGL EGL

EGL 빌드 서버는 EGL COBOL 런타임 스텁 프로그램을 생성된 각 기본 프로그램과 정적으로 링크합니다. 이 EGL COBOL 런타임 스텁은 EGL 런타임 환경을 활성화하고 실행 단위에 있는 첫 번째 프로그램을 시작합니다. 이 스텁은 또한 이 실행 단위에 있는 프로그램이 실행한 transfer 문에 대한 응답으로 전송 요청을 수행합니다.

transfer to program을 사용한 EGL 프로그램에서 EGL 프로그램으로의 전송

EGL 프로그램이 transfer to program 문을 사용하여 제어를 다른 EGL 프로그램으로 전송하면 해당 전송 EGL 프로그램은 종료되며 이 EGL 프로그램과 링크된 EGL COBOL 런타임 스텁에 제어가 반환됩니다. 이 스텁은 생성 시에 지정된 연계 옵션 파트에 따라 EGL 전송 소스 프로그램에 대해 정적 또는 동적 호출을 실행합니다. EGL COBOL 런타임 스텁 프로그램은 제어를 유지하며 EGL 런타임 환경은 활성 상태를 유지합니다.

그 다음 EGL 전송 대상 프로그램이 transfer to program 문을 사용하면 제어는 요청된 전송을 처리하는 EGL COBOL 런타임 스텁 프로그램으로 다시 반환됩니다.

각각의 경우 EGL 전송 대상 프로그램은 기본 함수를 시작합니다.

transfer to transaction을 사용한 EGL 프로그램에서 EGL 프로그램으로의 전송

EGL 프로그램이 transfer to transaction 문을 사용하여 제어를 다른 EGL 프로그램으로 전송하면 해당 전송 EGL 프로그램은 종료되며 이 EGL 프로그램과 링크된 EGL COBOL 런타임 스텁 프로그램에 제어가 반환됩니다. 이 스텁은 OS XCTL 매크로를 실행하여 대상 프로그램으로 전송합니다. COBOL 및 Rational® COBOL Runtime for zSeries는 둘 다 OS XCTL 매크로가 사용될 때마다 런타임 환경을 정리하고 다시 설정합니다. COBOL 및 Rational COBOL Runtime for zSeries는 모두 OS XCTL에 대해 종료 및 초기화 로직을 사용합니다. synchOnTrxTransfer 빌드 디스크립터 옵션을 YES로 설정하여 커미트 지점을 제어할 수 있습니다.

transfer to program 또는 transfer to transaction을 사용한 비EGL 프로그램으로의 전송

EGL 프로그램이 transfer to program 또는 transfer to transaction 문을 사용하여 제어를 비EGL 프로그램으로 전송하면 해당 전송 EGL 프로그램은 종료되며 이 EGL 프로그램과 링크된 EGL COBOL 런타임 스텁 프로그램에 제어가 반환됩니다. 이 스텁은 OS XCTL 매크로를 실행하여 비EGL 프로그램으로 전송합니다. COBOL 및 Rational COBOL Runtime for zSeries는 둘 다 OS XCTL 매크로가 사용될 때마다 런타임 환경을 정리합니다. COBOL 및 Rational COBOL Runtime for zSeries는 모두 OS XCTL에 대해 종료 로직을 사용합니다. 비EGL 프로그램은 자체 런타임 환경을 설정하며 OS XCTL에서 필요로 하는 모든 초기화 로직을 수행합니다. 빌드 디스크립터 옵션 synchOnTrxTransfer를 YES로 설정하여 커미트 지점을 제어할 수 있습니다.

EGL 프로그램이 PSB를 사용하여 시작된 경우 전송 및 dliLib.psbData 구조에 지정된 레코드는 모두 OS XCTL 매개변수로서 전달됩니다. 그렇지 않은 경우에는 전송에 지정된 레코드만 전달됩니다. 매개변수가 전달되지 않은 경우 레지스터 1은 0입니다. "표준 연계 규칙"의 내용을 참조하십시오.

dliLib.psbData를 전달하는 경우에는 특수 고려사항이 적용됩니다. 자세한 정보는 "dliLib.psbData 구조의 형식"을 참조하십시오.

대상 프로그램은 EGL 프로그램으로부터 전달된 매개변수에 대해 FREEMAIN을 실행할 수 있습니다. FREEMAIN 주소는 레지스터 1에 있는 주소입니다. FREEMAIN 길이는 길이 필드의 값에 100을 더한 값입니다.

transfer to program 또는 transfer to transaction 문이 사용되는 경우에는 다음 방법 중 하나를 사용하여 비EGL 프로그램으로 전송하고 있음을 표시해야 합니다.

  • transfer 문에서 isExternal을 YES로 설정합니다.
  • transferToProgram 또는 transferToTransaction 요소의 연계 정보에서 연계 옵션 파트에 externallyDefined 옵션을 지정합니다.

OS XCTL을 사용한 비EGL 프로그램에서 EGL 프로그램으로의 전송

IMS BMP 및 z/OS 일괄처리 환경의 비EGL 프로그램에서 EGL 프로그램으로의 전송은 EGL 프로그램에 OS XCTL을 사용함으로써 구현할 수 있습니다. 다음 절에는 OS XCTL 명령을 사용하여 매개변수를 전달하는 다양한 방법이 설명되어 있습니다.

표준 연계 규칙

OS XCTL에서는 수신 프로그램에 한 개 또는 두 개의 매개변수가 전달됩니다. 첫 번째 매개변수는 버퍼 길이가 포함된 2바이트 2진 길이 필드(작업 스토리지 데이터 길이 더하기 10), 8바이트 필러 필드 및 작업 스토리지 데이터로 구성된 작업 스토리지 버퍼입니다. 두 번째 매개변수는 EGL 프로그램이 DL/I 프로그램인 경우에만 사용되며 dliLib.psbData 구조입니다. 다음 다이어그램은 전송 프로그램에서 전달하는 매개변수 목록의 형식을 보여줍니다.

그림 1. OS XCTL에서의 매개변수 전달: 예제 1
OS XCTL에서의 매개변수 전달

dliLib.psbData 구조의 형식은 "dliLib.psbData 구조의 형식"을 참조하십시오. 전달할 매개변수가 없으면 레지스터 1을 0으로 설정할 수 있습니다.

EGL 프로그램에서 FREEMAIN을 지원하는 표준 연계 규칙

Rational COBOL Runtime for zSeries이 EGL 프로그램에 전달되는 영역에 대해 FREEMAIN을 실행하도록 하려면, 전달된 모든 데이터에 대해 길이가 전달할 작업 스토리지 데이터에 110바이트를 더한 길이와 동일한 하나의 영역을 확보하십시오(아래 그림 참조). 영역 맨 위에 매개변수 목록 포인터를 설정하고 이 영역의 오프셋 100에서 시작하는 길이 및 필러 필드를 삽입한 후, 전달될 작업 스토리지 데이터를 오프셋 110의 영역으로 이동하십시오. 레지스터 1이 이 영역의 시작을 가리키는 상태로 OS XCTL 매크로를 실행하십시오.

그림 2. OS XCTL에서의 매개변수 전달: 예제 2
OS XCTL에서의 매개변수 전달
참고: 다음 포인터 중 하나에 대해 최상위 비트가 켜져 있어야 합니다.
  • dliLib.psbData가 전달되지 않은 경우, 작업 스토리지를 가리키는 포인터
  • dliLib.psbData가 전달된 경우, dliLib.psbData를 가리키는 포인터