IMS/VS での EGL COBOL ランタイム作業データベースの使用

EGL プログラムでは、据え置きのプログラム間メッセージ交換でフォームとレコードの両方を渡すことができます。 セグメント化されたプログラムが非会話型 (SPA なし) として生成される場合は、show ステートメントがフォームとレコードの両方を指定する場合のデータの保存に作業データベースが使用されます。 Rational® COBOL Runtime for zSeries は、非 EGL プログラムが作業データベースにおいてデータを格納および取得する際に使用できるサブルーチンを提供します。 発生元およびターゲットの両方のプログラムまたはトランザクションは、物理的に同じ作業データベースを使用する必要があります。

非 EGL プログラムが作業データベースとのインターフェースに使用できる 2 つのサービス・ルーチンは次のとおりです。

IMS™ での作業データベースからの読み取り (ELATSGET)

ELATSGET を使用すると、EGL プログラムからの据え置きのプログラム切り替え後に、作業データベースからレコードを読み取ることができます。 論理端末 ID が作業データベース・キーとして使用されます。

ELATSGET モジュールは、実行時に以下の呼び出し順序で動的にロードされます。 この方式により、このモジュールを使用するプログラムごとにそのモジュールをリンクする必要がなくなります。
MOVE "ELATSGET" TO modname.
CALL modname USING parm1, parm2, parm3, parm4, parm5, parm6.
上記の例で、modname は 8 バイトの文字フィールドであり、parm1 から parm6 は以下のようになっています。
  • レコード・バッファー
  • バッファーの長さ (フルワード・バイナリー)
  • ターゲット・トランザクション・コード (空白で埋め込まれる 8 バイト)
  • 入出力 PCB
  • ELAWORK PCB (または、DB2® 作業データベースが使用される場合は 2 進ゼロのフルワード)
  • 戻りコード (フルワード・バイナリー)
ELATSGET では、以下の戻りコードが提供されます。
表 1. ELATSGET の戻りコード
コード 意味
0 読み取り成功
4 読み取り成功、切り捨てが発生
8 読み取り失敗、レコードが未検出
12 読み取り失敗、その他のエラー

切り捨ては、呼び出し側プログラムが以前に保存されたデータよりも小さいバッファーにデータを復元する場合に発生します。 バッファーが以前に保存されたデータよりも大きい場合、バッファーの後続のデータは空白で初期化されます。

ELATSGET ではエラー・メッセージを発行しません。 エラーが発生した場合は、呼び出し側プログラムが適切な処置を実行する必要があります。 DL/I 作業データベースが使用される場合は、エラーを示す状況コードが PCB に格納されます。 DB2 作業データベースが使用される場合は、エラーを示す SQL コードがフルワード・バイナリー (5 番目のパラメーター) に格納されます。

IMS での作業データベースへの書き込み (ELATSPUT)

ELATSPUT を使用すると、EGL プログラムへの据え置きのプログラム切り替えを実行する前に、作業データベースにレコードを書き込むことができます。 論理端末 ID が作業データベース・キーとして使用されます。

ELATSPUT モジュールは、実行時に以下の呼び出し順序で動的にロードされます。 この方式により、このモジュールを使用する各プログラムに対してそのモジュールをリンクする必要がなくなります。
MOVE "ELATSPUT" TO modname.
CALL modname USING parm1, parm2, parm3, parm4, parm5, parm6. 
上記の例で、modname は 8 バイトの文字フィールドであり、parm1 から parm6 は以下のようになっています。
  • レコード・バッファー
  • レコードの長さ (フルワード・バイナリー)
  • ターゲット・トランザクション・コード (空白で埋め込まれる 8 バイト)
  • 入出力 PCB
  • ELAWORK PCB (または、DB2 作業データベースが使用される場合は 2 進ゼロのフルワード)
  • 戻りコード (フルワード・バイナリー)
ELATSPUT では、以下の戻りコードが提供されます。
表 2. ELATSPUT の戻りコード
コード 意味
0 書き込み成功、新規レコード追加
4 書き込み成功、既存レコードが置換
12 書き込み失敗、その他のエラー

ELATSPUT ではエラー・メッセージを発行しません。 エラーが発生した場合は、呼び出し側プログラムが適切な処置を実行する必要があります。 DL/I 作業データベースが使用される場合は、エラーを示す状況コードが PCB に格納されます。 DB2 作業データベースが使用される場合は、エラーを示す SQL コードがフルワード・バイナリー (5 番目のパラメーター) に格納されます。


フィードバック