リンク・エディット・パーツは、z/OS® 環境で使用されます。 一般に、EGL はリンケージ・エディター制御ステートメントを自動的に生成します。 ただし、静的リンクがある場合など、一部の状況では、ユーザーがリンク・エディット・パーツを提供する必要があります。
プログラムのリンク・エディット・パーツは、プログラムが使用可能なときにいつでも使用できるよう、プログラムと同じ プロジェクト内で定義するのが最良の方法です。 リンク・エディット・パーツには、プログラムを含むロード・モジュールをすべてリンクするために リンケージ・エディター制御文が含まれている必要があります。
リンケージ・エディター制御ステートメントが含まれるリンク・エディット・パーツは、静的 COBOL 呼び出しを含む 生成済みプログラムごとに定義されていなければなりません。 リンケージ・エディター制御ステートメントは、ENTRY 文および NAME 文 (ロード・モジュールの場合)、および INCLUDE 文 (静的呼び出し先プログラムおよび基本プログラムの場合) で構成されます。 z/OS バッチおよび IMS™ BMP 環境には、COBOL ランタイム (IBM® Rational® COBOL Runtime Server for zSeries) のエントリー・スタブ・プログラム (ELARMAIN) も組み込まれている必要があります。他の COBOL ランタイムおよびデータベース・スタブは、生成プロセス時に作成された元の リンク・エディット・ステップからのプログラムとともに組み込まれます。
次の表では、生成された COBOL プログラム EGLAPP1 と PL/I プログラム PLIAPP1 の両方を静的に呼び出す プログラム BASEPGM の制御文の例を示します。 この例では、PL/I プログラムのオブジェクト・デックが、DD ステートメント NONEGLL によって参照されるデータ・セット NONEGLL.OBJ.LIBRARY に書き込まれています。 呼び出し先プログラムの INCLUDE 文はすべて、呼び出し側プログラムの INCLUDE よりも前に置きます。
| 環境 | 基本プログラム・タイプ | BASEPG における制御ステートメント |
|---|---|---|
CICS for z/OS |
メインまたは呼び出し先 |
|
IMS BMP |
メインのみ |
|
IMS BMP |
呼び出し先のみ |
|
1. PL/I プログラムを CICS® for z/OS 用に静的にリンクすることはできません。CICS for z/OS では、このリンクは静的にリンクされている非 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
リンク・エディット・ステートメントが含まれるリンク・エディット・パーツはまた、別のプログラムからの静的 COBOL 呼び出しの ターゲットである EGL プログラムごとに定義する必要があります。 リンク・エディット・パーツに、EGL プログラムを呼び出すすべてのロード・モジュールをリンクするステートメントを組み込み、 呼び出された EGL プログラムが生成されるたびに各ロード・モジュールが自動的に再リンクされるようにします。
例えば、COBOL 生成プログラム EGLAPP1 を BASEPGM および BASEPG2 で静的に呼び出す場合、EGLAPP1 用のリンク・エディット・パーツを定義して、前のテーブルからのランタイム環境のステートメントのセットが 2 回含まれるようにします (1 回は BASEPGM の参照、もう 1 回は BASEPG2 の参照)。 これにより、EGLAPP1 を生成するたびに BASEPGM と BASEPG2 の両方が再リンクされるようになります。
プログラムが静的 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 ライブラリーを生成済みプログラムのインクルード・ライブラリーとして使用します。この方法でライブラリーをセットアップすることには、以下のような効果があります。
下の表で、静的呼び出し先プログラム EGLAPP1 がプログラム EGLAPP2 を静的に呼び出した場合に、プログラム BASEPGM を リンクするための制御ステートメントを指定する方法を示します。 プログラム BASEPGM をリンクするための制御ステートメントは、プログラム EGLAPP1 または EGLAPP2 のいずれかの生成時に プログラム BASEPGM が再リンクされるように、EGLAPP1 および EGLAPP2 リンク・エディット・パーツにも追加されなければ なりません。
| 環境 | 基本プログラム・タイプ | BASEPG における制御ステートメント |
|---|---|---|
CICS for z/OS |
メインまたは呼び出し先 |
|
IMS BMP |
メインのみ |
|
IMS BMP |
呼び出し先のみ |
|
1. PL/I プログラムを CICS for z/OS 用に静的にリンクすることはできません。CICS for z/OS では、このリンクは静的にリンクされている非 EGL COBOL プログラムにリンクされます。
// DD DISP=SHR,DSN=chglq.system.RELINK.LOAD
// DD DISP=SHR,DSN=chglq.system.LOAD
変数 chglq および system は、ビルド・スクリプト内で CGHLQ および ENV パラメーターの代わりに使用される値を表します。