組織のプログラム仕様ブロック (PSB) およびプログラム連絡ブロック (PCB) にアクセス可能な COBOL プログラムを生成するには、必要に応じて EGL プログラム要素をカスタマイズします。それらのブロックは、ランタイム PSB およびランタイム PCB と呼ばれます。
呼び出し中は、変数 dliLib.psbData を使用して PSB を渡すことができます (実際には、名前とそれに関連するアドレスを渡します)。
この場合、コミット点は発生せず、EGL はスケジュールに入っている PSB をターゲット・プログラムに渡します。
DB PCB は、ランタイム PSB で有効です。
DB および GSAM PCB も有効です。
DB PCB も有効です。
z/OS バッチの場合、EGL では最初のランタイム PCB は入出力 PCB である必要があります。PSBGEN ジョブの開発時には、IMS システム・プログラマーが CMPAT を YES に設定していることを確認してください。
EGL ではさらに、任意のタイプの 2 つの追加 PCB が、ランタイム PSB 内に存在している必要があります。DB および GSAM PCB は、代替 PSB と同様に有効です。 コードで代替 PSB を使用することはできません。しかしその一方、有効というのは、z/OS バッチおよび IMS BMP で同じランタイム PSB を使用できるということです。
EGL は、初期の 2 つまたは 3 つの入出力 PCB およびテレプロセシング PCB が PSB レコードで宣言されていても、ランタイム PSB に存在していない場合には、初期の PCB に合わせて調整を行います。 この調整により、環境が異なっていても同じプログラムを生成することができます。 例えば、CICS に関連して、初期入出力 PCB レコードと代替 PCB レコードがコード内に存在していても、EGL ランタイムはこれらを無視します。
ELAALT PCB TYPE=TP,MODIFY=YES
PCB TYPE=TP,MODIFY=YES,EXPRESS=YES,PCBNAME=ELAEXP
ELAPCB LABEL=ELAWORK
この場合、PSB レコード・パーツに PCB レコードを組み込む必要はありません。
PCB TYPE=TP,MODIFY=YES,PCBNAME=MYALTPCB
PCB TYPE=TP,MODIFY=YES,EXPRESS=YES,PCBNAME=MYEXPPCB
ELAPCB LABEL=MYWORKDB
Record MYPSB type PSBRecordPart
ELAALT ALT_PCBRecord {@PCB {pcbType = PCBKind.TP, PCBName = "MYALTPCB"}};
ELAEXP ALT_PCBRecord {@PCB {pcbType = PCBKind.TP, PCBName = "MYEXPPCB"}};
ELAWORK DB_PCBRecord {@PCB {pcbType = PCBKind.DB, PCBName = "MYWORKDB"}};
end
callInterface フィールドが AIBTDLI に設定されている場合は、プログラムで使用される PCB レコードと、EGL に必要な名前と異なるランタイム名を持ついずれかの必須 PCB のみを宣言する必要があります。 この規則は、メインプログラムと呼び出し先プログラムに適用されます。
callInterface フィールドを CBLTDLI に設定すると、指定されたランタイム PCB へのアクセスは、名前ではなくアドレスで行われます。
ターゲット・システムが IMS/VS で、EGL 作業データベースとして DL/I データベースを使用している場合は、EGL PCB レコードにデータベースの階層情報を含める必要はありませんが、IMS システム・プログラマーは、ランタイム PSB を定義するときにマクロ ELAPCB を使用する必要があります。(生成時に、ビルド記述子オプション workDBType のデフォルト値を受け入れて、作業データベースが DL/I データベースであることを示してください。)
プロパティー pcbParms および psbParm を呼び出し先プログラムで指定すると、前者のプロパティー内の PCB 固有のアドレスが、後者の PCB プロパティー内の等価なアドレスを上書きします。渡された PSB は無視されます。
2 番目のレコード以外のレコードの名前として ELAALT を使用するか、または 3 番目のレコード以外のレコードの名前として ELAEXP を使用すると、その名前が優先されます。EGL は、そのように指定された PCB レコードは適切なタイプのランタイム PCB を参照していると想定します。