IMS 및 z/OS 일괄처리 환경에서의 프로그램 호출
비CICS 환경에서는 표준 OS 연계 규칙이 사용됩니다. call 문에서는 최대 30개의 매개변수를 전달할 수 있습니다. 호출 대상 프로그램이 실행되고 이 프로그램이 종료되면 호출 프로그램으로 돌아갑니다.
연계 옵션 파트를 사용하여 call 문에 대해 생성되는 연계의 유형을 지정하십시오. 비CICS 환경의 경우에는 표준 COBOL 매개변수 목록(OSLINK)을 사용하여 전달되는 매개변수를 사용하여(모든 매개변수는 참조를 통해 전달) call 문을 DYNAMIC 또는 STATIC COBOL CALL로 생성할지 지정할 수 있습니다.
EGL 프로그램의 EGL 프로그램에 대한 호출
EGL call문은 표준 COBOL CALL처럼 생성됩니다. EGL call 문의 매개변수는 COBOL CALL의 매개변수입니다. 모든 매개변수는 컨텐츠가 아니라 참조를 통해 전달됩니다. 연계 옵션을 사용하여 COBOL CALL이 동적 호출인지 또는 정적 호출인지 지정하십시오.
컴파일된 COBOL CALL은 표준 연계 규칙을 사용하여 매개변수를 전달합니다. 레지스터 1은 매개변수 주소 목록을 가리킵니다. 최종 매개변수 주소의 최상위 바이트는 다음 그림에서와 같이 1로 설정됩니다.

dliLib.psbData 또는 PCBRecord를 매개변수로 전달하는 경우에는 특수 고려사항이 적용됩니다. 자세한 정보는 "call 또는 transfer 문의 특수 매개변수에 대한 참조 정보"를 참조하십시오.
환경 간 호출 대상 프로그램 공유
IMS/VS, BMP 및 z/OS® CICS®를 위해 생성된 프로그램은 z/OS 일괄처리 환경을 위해 생성된 하위 프로그램을 호출할 수 있습니다. SQL I/O, 파일 I/O 또는 일괄처리 환경 고유 호출은 원래 환경에서 허용되지 않으므로, 이 경우에는 z/OS 일괄처리 프로그램이 이러한 작업을 수행하지 않는지 확인해야 합니다. 예를 들어, CICS는 모든 파일 I/O 액세스 권한을 소유하므로 일괄처리 유형 파일 액세스가 실행되는 것을 허용하지 않습니다. z/OS 일괄처리를 위해 생성되었으나 다른 환경에서 실행 중인 로직에서 호출되는 프로그램은 일반적으로 계산이나 테이블 검색과 같은 조작으로 한정되어 있습니다.
EGL 프로그램의 비EGL 프로그램에 대한 호출
비EGL 프로그램에 대한 호출은 EGL 프로그램에 대한 호출과 같은 방식으로 생성됩니다. PL/I로 작성된 프로그램에 대한 호출은 정적 호출로 작성되어야 합니다. 비EGL 프로그램이 COBOL로 작성되지 않은 경우에는 사용자의 COBOL 릴리스에 대한 애플리케이션 프로그래밍 안내서에 설명되어 있는, 다른 언어와의 인테페이싱에 대한 규칙을 따르십시오.
비EGL 프로그램의 EGL 프로그램에 대한 호출
비EGL 프로그램은 표준 COBOL CALL 문을 사용하여 EGL 프로그램을 호출합니다. 모든 매개변수는 컨텐츠가 아니라 참조를 통해 전달됩니다. PL/I로 작성된 프로그램에서의 호출은 정적 호출로 작성되어야 합니다. 비EGL 프로그램이 COBOL로 작성되지 않은 경우에는 사용자의 COBOL 릴리스에 대한 애플리케이션 프로그래밍 안내서에 설명되어 있는, 다른 언어와의 인테페이싱에 대한 규칙을 따르십시오.
런타임 서비스 초기화에 대한 여러 호출 방지
실행 단위에 첫 번째로 실행된 프로그램이 비EGL 프로그램이며 이 프로그램이 EGL 프로그램을 반복해서 호출하는 경우 Rational® COBOL Runtime for zSeries는 각 호출마다 초기화 및 종료 함수를 수행합니다. 호출 수가 많은 경우에는 이러한 호출에 대한 오버헤드가 상당히 커질 수 있습니다. 이러한 오버헤드를 방지하고 초기화 및 종료를 한 번만 수행하기 위해 EGL은 각 환경에 대한 랩퍼 프로그램을 제공합니다. 적절한 랩퍼 프로그램을 EGL 프로그램에 링크 편집해야 합니다. 이를 자동으로 수행하려면 EGL 프로그램과 같은 이름을 가진 링크 편집 파트를 작성하십시오. EGL 프로그램에 랩퍼 프로그램 외에 다른 프로그램을 링크 편집할 필요가 없는 경우에는 YOURPROG를 사용자의 프로그램 이름으로 대체하여 아래 표시된 링크 편집 명령을 사용하십시오. SELALMD는 런타임 서비스 로드 라이브러리를 나타냅니다.
CHANGE NONVGRTN(YOURPROG)
CHANGE ELAAPPL(ELAWBAT)
INCLUDE SELALMD(ELAWBAT)
ENTRY ELARMAIN
NAME YOURPROG(R)
IMS™ BMP 제어 명령문:
CHANGE NONVGRTN(YOURPROG)
CHANGE ELAAPPL(ELAWBMP)
INCLUDE SELALMD(ELAWBMP)
ENTRY ELARMAIN
NAME YOURPROG(R)
IMS/VS 제어 명령문:
CHANGE NONVGRTN(YOURPROG)
CHANGE ELAAPPL(ELAWIMS)
INCLUDE SELALMD(ELAWIMS)
ENTRY ELARMAIN
NAME YOURPROG(R)
프로그램을 다른 모듈(예: PL/I 프로그램)에 링크해야 하는 경우에는 "링크 편집 파트 예제"를 참조하십시오. CHANGE NONVGRTN(YOURPROG)
CHANGE ELAAPPL(ELALBAT)
INCLUDE SELALMD(ELALBAT)
INCLUDE SELALMD(ELARLEMN)
ENTRY ELARLEMN
NAME YOURPROG(R)
EGL z/OS 일괄처리 프로그램으로부터의 CICS 프로그램 호출
z/OS 일괄처리 프로그램은 EXCI(External CICS Interface)를 사용하여 CICS 리젼에 있는 프로그램을 호출할 수 있습니다. 호출 대상 프로그램은 EGL로 생성되거나 다른 방법으로 작성될 수 있습니다.
- type은 remoteCall이어야 합니다.
- remoteComType은 CICSEXCI여야 합니다.
- 호출 대상 프로그램에 매개변수를 전달하려면 callLink 요소의 parmForm 특성을 COMMDATA로 설정하십시오.
call 문을 처리할 때 EGL은 EXCI를 통해 호출하는 데 필요한 COBOL 코드를 생성합니다. 이러한 연계 옵션에 대한 자세한 정보는 "CICS 환경에서의 프로그램 호출"을 참조하십시오.
- 클라이언트 작업 단위가 지원되지 않습니다.
- z/OS 일괄처리 환경에서의 EXCI 호출에는 채널 및 컨테이너가 지원되지 않습니다.
- 호출 대상 프로그램에 EGL 변수 길이 매개변수(STRING 유형 변수 등)를 전달할 수 없습니다.
- DL/I가 지원되지 않습니다.
예제
- remoteComType = CICSEXCI(필수)
- alias = CALLED
- location = NQA17C03(필수)
- luwControl = SERVER
- parmForm = COMMDATA
- pgmName = calledExci
- remotePgmType = EGL | EXTERNALLYDEFINED(효과 없음)
- serverID = ABCD(기본값은 CSMI)
- type = REMOTE
- conversionTable(효과 없음)
call "calledExci"(d, j);