링크 편집 파트 예
링크 편집 파트는 z/OS® 환경에 사용됩니다. 일반적으로 EGL은 연계 편집기 제어 명령문을 자동으로 생성합니다. 그러나 정적 링크가 있는 경우와 같은 일부 상황에서는 링크 편집 파트를 제공해야 합니다.
프로그램이 사용 가능할 때마다 사용할 수 있도록 프로그램의 링크 편집 파트를 프로그램과 동일한 프로젝트에서 정의하는 것이 가장 좋습니다. 링크 편집 파트에는 프로그램을 포함한 모든 로드 모듈을 링크하기 위한 연계 편집기 제어 명령문이 있어야 합니다.
구문 및 형식 규칙
- 명령문은 1열에서 시작할 수 없습니다.
- 명령문 사이에는 빈 행을 사용할 수 없습니다.
다른 프로그램에 대한 정적 호출을 사용하는 zSeries 프로그램
정적 COBOL 호출이 포함된 각 생성 프로그램에 대해 연계 편집기 제어 명령문이 포함된 링크 편집 파트를 정의해야 합니다. 연계 편집기 제어 명령문은 로드 모듈에 대한 ENTRY 및 NAME 문과 정적으로 호출된 각 프로그램 및 기본 프로그램에 대한 INCLUDE 문으로 구성되어 있습니다. COBOL 런타임(zSeries용 IBM® Rational® COBOL Runtime Server) 항목 스텁 프로그램(ELARMAIN)도 z/OS 일괄처리 및 IMS™ BMP 환경에 포함되어야 합니다. 기타 COBOL 런타임 및 데이터베이스 스텁이 생성 프로세스 중 생성된 원래 링크 편집 단계의 프로그램과 함께 포함됩니다.
다음의 표는 프로그램 BASEPGM이 생성된 COBOL 프로그램 EGLAPP1 및 PL/I 프로그램 PLIAPP1을 모두 정적으로 호출하는 경우의 샘플 제어 명령문을 표시합니다. 이 예에서 PL/I 프로그램의 오브젝트 데크가 DD 문 NONEGLL에서 참조하는 데이터 세트 NONEGLL.OBJ.LIBRARY에 기록되었습니다. 호출된 프로그램의 모든 INCLUDE 문이 호출 프로그램의 INCLUDE 앞에 있습니다.
| 환경 | 기본 프로그램 유형 | BASEPG의 제어 명령문 |
|---|---|---|
z/OS용 CICS |
기본 또는 호출 대상 |
|
IMS BMP |
기본 전용 |
|
IMS BMP |
호출 대상 전용 |
|
1. PL/I 프로그램은 z/OS용 CICS®에 대해 정적으로 링크할 수 없습니다. z/OS용 CICS의 경우 이 링크는 정적으로 링크된 비EGL COBOL 프로그램에 연결됩니다.
//* Add your DD statements here if you supply your own link edit parts
그런 다음,
아래에 다음과 비슷한 새 행을 추가하십시오. //* Add your DD statements here if you supply your own link edit parts
//NONEGLL DD DSN=NONEGLL.OBJ.LIBRARY,DISP=SHR
다른 프로그램이 정적으로 호출하는 zSeries 프로그램
링크 편집 명령문이 포함된 링크 편집 파트도 다른 프로그램의 정적 COBOL 호출 대상인 각 EGL 프로그램에 대해 정의해야 합니다. 호출 대상 EGL 프로그램이 생성될 때마다 각 로드 모듈이 자동으로 다시 링크되도록 링크 편집 파트에서 EGL 프로그램을 호출하는 모든 로드 모듈을 링크하는 명령문을 포함하십시오.
예를 들어, COBOL 생성 프로그램 EGLAPP1을 BASEPGM 및 BASEPG2에서 정적으로 호출하는 경우 이전 표의 런타임 환경에 대한 명령문 세트를 두 번 포함하도록(BASEPGM 참조 및 BASEPG2 참조에 대해 한 번씩) EGLAPP1의 링크 편집 파트를 정의하십시오. 이 경우 EGLAPP1을 생성할 때마다 BASEPGM과 BASEPG2가 모두 다시 링크됩니다.
EGL 빌드 스크립트 수정
프로그램이 정적 COBOL 호출의 대상이며 다른 프로그램에 대한 정적 COBOL 호출도 포함하는 경우 생성된 프로그램 로드 모듈의 포함 및 출력 라이브러리로 다른 로드 라이브러리를 사용하도록 EGL 빌드 스크립트를 추가로 사용자 조정해야 합니다.
//SYSLMOD DD DISP=SHR,DSN=&CGHLQ..&ENV..LOAD
다음의
예는 SYSLMOD DD 문의 대체 DD 문을
표시합니다. //EGLINCL DD DISP=SHR,DSN=&CGHLQ..&ENV..LOAD
//SYSLMOD DD DISP=SHR,DSN=&CGHLQ..&ENV..RELINK.LOAD
그런 다음,
생성된 프로그램의 포함 라이브러리로 EGLINCL 라이브러리를 사용하도록
링크 편집 명령문이 포함된 모든 링크 편집 파트를 정의하십시오.
이 방법으로 라이브러리를 설정하면 다음과 같은 영향이 있습니다. - 준비 절차의 초기 링크 편집 단계는 COBOL 런타임 및 데이터베이스 스텁 프로그램을 사용하는 생성된 프로그램을 EGLINCL 라이브러리에 링크합니다.
- 재링크 단계에 동일한 프로그램이 여러 번 포함되는 것을 방지하기 위해, 정적으로 호출된 프로그램은 EGLINCL 라이브러리에서 함께 링크되지 않습니다.
- 재링크 단계는 정적으로 링크된 모든 프로그램을 적합한 로드 모듈에 결합하고 SYSLMOD 라이브러리에 로드 모듈을 저장합니다.
제어 명령문 지정
다음의 표는 정적으로 호출된 프로그램 EGLAPP1이 다시 프로그램 EGLAPP2를 정적으로 호출한 경우 프로그램 BASEPGM을 링크하기 위해 제어 명령문을 지정하는 방법을 표시합니다. 프로그램 EGLAPP1 또는 EGLAPP2가 생성될 때 프로그램 BASEPGM이 링크되도록 프로그램 BASEPGM을 링크하기 위한 제어 명령문도 EGLAPP1 및 EGLAPP2 링크 편집 파트에 추가되어야 합니다.
| 환경 | 기본 프로그램 유형 | BASEPG의 제어 명령문 |
|---|---|---|
z/OS용 CICS |
기본 또는 호출 대상 |
|
IMS BMP |
기본 전용 |
|
IMS BMP |
호출 대상 전용 |
|
1. PL/I 프로그램은 z/OS용 CICS에 대해 정적으로 링크할 수 없습니다. z/OS용 CICS의 경우 이 링크는 정적으로 링크된 비EGL COBOL 프로그램에 연결됩니다.
// DD DISP=SHR,DSN=chglq.system.RELINK.LOAD
// DD DISP=SHR,DSN=chglq.system.LOAD
chglq 및 system 변수는
빌드 스크립트에서 CGHLQ 및 ENV 매개변수에 대해 대체된 값을
나타냅니다.