EGL プログラムでは、据え置きのプログラム間メッセージ交換でフォームとレコードの両方を渡すことができます。 セグメント化されたプログラムが非会話型 (SPA なし) として生成される場合は、show ステートメントがフォームとレコードの両方を指定する場合のデータの保存に作業データベースが使用されます。 Rational® COBOL Runtime for zSeries は、非 EGL プログラムが作業データベースにおいてデータを格納および取得する際に使用できるサブルーチンを提供します。 発生元およびターゲットの両方のプログラムまたはトランザクションは、物理的に同じ作業データベースを使用する必要があります。
ELATSGET を使用すると、EGL プログラムからの据え置きのプログラム切り替え後に、作業データベースからレコードを読み取ることができます。 論理端末 ID が作業データベース・キーとして使用されます。
MOVE "ELATSGET" TO modname.
CALL modname USING parm1, parm2, parm3, parm4, parm5, parm6.
上記の例で、modname は 8 バイトの文字フィールドであり、parm1 から parm6 は以下のようになっています。| コード | 意味 |
|---|---|
| 0 | 読み取り成功 |
| 4 | 読み取り成功、切り捨てが発生 |
| 8 | 読み取り失敗、レコードが未検出 |
| 12 | 読み取り失敗、その他のエラー |
切り捨ては、呼び出し側プログラムが以前に保存されたデータよりも小さいバッファーにデータを復元する場合に発生します。 バッファーが以前に保存されたデータよりも大きい場合、バッファーの後続のデータは空白で初期化されます。
ELATSGET ではエラー・メッセージを発行しません。 エラーが発生した場合は、呼び出し側プログラムが適切な処置を実行する必要があります。 DL/I 作業データベースが使用される場合は、エラーを示す状況コードが PCB に格納されます。 DB2 作業データベースが使用される場合は、エラーを示す SQL コードがフルワード・バイナリー (5 番目のパラメーター) に格納されます。
ELATSPUT を使用すると、EGL プログラムへの据え置きのプログラム切り替えを実行する前に、作業データベースにレコードを書き込むことができます。 論理端末 ID が作業データベース・キーとして使用されます。
MOVE "ELATSPUT" TO modname.
CALL modname USING parm1, parm2, parm3, parm4, parm5, parm6.
上記の例で、modname は 8 バイトの文字フィールドであり、parm1 から parm6 は以下のようになっています。| コード | 意味 |
|---|---|
| 0 | 書き込み成功、新規レコード追加 |
| 4 | 書き込み成功、既存レコードが置換 |
| 12 | 書き込み失敗、その他のエラー |
ELATSPUT ではエラー・メッセージを発行しません。 エラーが発生した場合は、呼び出し側プログラムが適切な処置を実行する必要があります。 DL/I 作業データベースが使用される場合は、エラーを示す状況コードが PCB に格納されます。 DB2 作業データベースが使用される場合は、エラーを示す SQL コードがフルワード・バイナリー (5 番目のパラメーター) に格納されます。