IMS 環境用 EGL プログラムの開発

EGL では、IMS™ で実行するプログラムを開発できます。プログラムおよびビルド・パーツの特性に応じて、以下のいずれかの領域で実行するプログラムを生成できます。 以下では、これらの各領域の要素について個別に説明します。

さらに、ビルド記述子の効果についても詳しく説明します。

IMS 制御ブロックとの対話方法についての詳細は、ランタイム PSB および PCB のための EGL サポートを参照してください。

MPP 領域を対象にした生成

MPP 領域用には以下の 2 つのタイプのプログラムを生成できます。
  • テキスト UI プログラム。これはテキスト・フォームを受け取るか、または表示します。
  • 基本プログラム。これはテキスト・フォームを受け取ることも表示することもありません。
テキスト UI および基本プログラムのどちらに対しても以下の考慮事項が適用されます。
  • 出力を別のメッセージ・キューに送信できます。その目的のためには、(生成時に) 代替 PCB または特別代替 PCB に関連付けられているシリアル・レコードを作成する add ステートメントをコーディングします。メッセージ・キューへの出力の場合、シリアル・レコードに関連付けられるファイル・タイプは SMSGQ または MMSGQ です。詳しくは、IMS におけるシリアル・ファイルと印刷ファイルの使用を参照してください。
  • 出力をプリンターに送信できます。その目的のためには、印刷書式を表示する print ステートメントをコーディングします。(生成時に) プリンターを代替 PCB または特別代替 PCB に関連付け、ファイル・タイプを SMSGQ と指定し、さらにプリンターに IMS 論理端末名も指定します。あるいは、実行時に converseVar.printerAssociation を使用して、IMS 論理端末の名前を変更することができます。
  • vgLib.startTransaction() を使用して、非同期トランザクションを開始できます。
  • 索引付きファイルまたは相対ファイルにはアクセスできません。

次の 2 つのセクションでは、上記の 2 つのプログラム・タイプそれぞれに固有の情報を提供します。

テキスト UI プログラム

テキスト書式を受け入れる、または表示するメインプログラムをコーディングすると、EGL は入出力 PCB アクセスの詳細を処理します。segmented プログラム・プロパティーを YES に設定する必要があります。

converse ステートメントを使用して、端末と対話することができます。このステートメントは、テキスト書式を提供し、converse ステートメントに続くステートメントを処理することによって、ユーザーの入力に応答します。 実行時の動作の概要については、「EGL 言語解説書」を参照してください。

converse ステートメントの使い方は比較的簡単ですが、show ステートメントを使用するとさらにパフォーマンスが高くなります。 show ステートメントを使用すると、同一プログラムの先頭または別のプログラムに戻ることができます。show ステートメントは、受信側のプログラムがその inputForm として指定しているのと同じフォームを指定する必要があります。show ステートメントを使用すると、保存されるデータは、フォーム内の情報と、その show ステートメントで指定されたレコードのみに制限されます。ただし、プログラム・ユーザーとの対話を続行するために必要なすべての情報を、必ずフォームとレコードが提供するようコーディングする必要があります。

プログラムを IMS 会話型プログラムまたは非会話型プログラムとして実行する、プログラムを別のプログラムに転送するか、またはプログラムから別のプログラムを呼び出す、そして戻る節を指定してプログラムから show ステートメントを発行することができます。特定のタイプのステートメントに適用される制限については、そのステートメントの構文を説明しているトピックを参照してください。

IMS では、呼び出し先のテキスト UI プログラムはサポートされていません。メインのテキスト UI プログラムを、同じ IMS システム上の非 EGL IMS プログラムまたは IMSADF II プログラムへ、またはそれらのプログラムから転送することができます。詳しくは、以下のトピックを参照してください。 .

基本プログラム

テキスト書式の受け入れも表示も行わないメインプログラムをコーディングする場合、IMS メッセージ・キューからの入力を使用できます。その入力を取り出すには、入出力 PCB に関連付けられているシリアル・レコードに、メッセージを次から次へと読み取るループをコーディングします。メッセージ・キューからの入力の場合、シリアル・レコードに関連付けられているファイル・タイプは SMSGQ または MMSGQ です。詳しくは、IMS におけるシリアル・ファイルと印刷ファイルの使用を参照してください。

ほとんどの環境では、メインの基本プログラムが開始すると、そのプログラムの入力レコードが、転送プログラムによって渡されたレコードから初期化されます。これは、IMS BMP 環境用に生成されるメインの基本プログラムには当てはまりません。その代わりに、ターゲット・プログラムがメッセージ・キューから転送されたレコードを読み取る必要があります。

EGL によって生成された呼び出し先の基本プログラムは、別のプラットフォームで EGL によって生成された Java™ コードから呼び出すことができます。

プログラムを IMS 非会話型プログラムとして実行する、およびプログラムを同じ IMS/VS システム内のプログラムに転送するか、またはプログラムから別のプログラムを呼び出すことができます。特定のタイプのステートメントに適用される制限については、そのステートメントの構文を説明しているトピックを参照してください。

IMS では、EGL によって生成された呼び出し先プログラムは、メッセージ・キューから読み取ることができません。基本プログラムは、transfer to transaction ステートメントを使用することはできません。

MPP IMS FastPath 領域を対象にした生成

テキスト UI プログラムおよび基本プログラムの両方を生成して、IMS FastPath (IFP) 領域で実行することができます。その場合、状態は MPP 領域について説明したのと同じですが、(IMS 要件に従って) プログラムは非会話型プログラムである必要があります。 さらに、複数セグメント入力メッセージ・キューの使用 (converse ステートメントの使用を含む) は、パフォーマンス上の理由から IMS ファスト・パス・プログラムにはお勧めしません。

IMS は、ファスト・パス・プログラムに制限を課しています。これらの制限により、EGL の関数をファスト・パス・プログラムで使用する場合に以下の制限事項が生じます。
  • transfer to transaction ステートメントは、非ファスト・パス・プログラムにのみサポートされています。この場合、転送先プログラムは、端末に対して応答する責務があります。show ステートメントは許可されています。
  • dliLib.AIBTDLI()dliLib.EGLTDLI() および vgLib.VGTDLI() は、ファスト・パス・トランザクション用にサポートされている呼び出しタイプのみを使用する必要があります。
  • 複数セグメント入力メッセージ・キューはサポートされません。
  • 入出力 PCB に固有の get ごとに、以下のアクションのうち 1 つしか実行できません。
    • transfer to transaction または show ステートメント
    • 代替応答 PCB に関連付けられているシリアル・ファイルの add ステートメント
    • 入出力 PCB または代替応答 PCB を使用する dliLib.AIBTDLI()dliLib.EGLTDLI()、および vgLib.VGTDLI() 関数呼び出し
非対話型プログラムを IMS ファスト・パス・プログラムとして実行することを示すには、imsFastPath ビルド記述子オプションを YES に設定します。このオプションを指定すると、生成されたプログラムによる IMS 関数の使用が、IMS ファスト・パス・サポートによって許可されている関数に制限されます。ファスト・パスを使用すると、生成されたプログラムでエラーが発生したときに提供される診断データの量とタイプが制限されます。
バッチ・プログラムが IMS BMP 環境で実行して、IMS ファスト・パス・データベースを更新する場合、このプログラムは SYNC または CHKP 呼び出して、更新をコミットする必要があります。CHKP 呼び出しは、以下のようにして実行できます。
  • バッチ指向 BMP の終了前に、sysLib.commit() サービス・ルーチンを使用する
  • IMS メッセージ・キューに関連付けられているシリアル・ファイルに対する get next ステートメントが、トランザクション指向 BMP の終了前に endOfFile (QC 状況コード) を受け取るようにする

IMS BMP 領域を対象にした生成

IMS BMP 領域内で実行する基本プログラムを生成できます。

トランザクション指向 IMS BMP プログラムを作成するには、入出力 PCB に関連付けられているシリアル・レコードに次から次へとメッセージを読み取るループをコーディングして、IMS メッセージ・キューから入力を取り出す必要があります。単一セグメントおよび複数セグメントの入力メッセージ・キューの使用については、前に IMS MPP プログラムに関連して説明しています。バッチ指向 IMS BMP プログラムを作成するためには、IMS メッセージ・キューから入力を読み取らないようにしてください。 詳しくは、IMS におけるシリアル・ファイルと印刷ファイルの使用を参照してください。

IMS BMP プログラムは、IMS MPP に関して説明したように、出力を別のメッセージ・キューまたはプリンターに送信することもできます。IMS BMP プログラムは、z/OS® バッチ用に生成されたプログラムが使用できる任意の EGL ステートメントを使用することができます。特に、IMS BMP または z/OS バッチ・プログラムでは、以下を実行できます。
  • GSAM ファイルから入力を受け取る、または GSAM ファイルに出力を送信する。その目的のためには、(生成時に) GSAM PCB に関連付けられるシリアル・レコードを作成する add ステートメントをコーディングします。また、ファイル・タイプを GSAM として指定し、GSAM データ・セットの名前を指定します。あるいは、実行時に recordName.resourceAssociation を使用して、データ・セットの名前を変更することもできます。
  • 印刷出力を GSAM データ・セットに送信します。その目的のためには、print ステートメントをコーディングします。プリンターを (生成時に) GSAM PCB に関連付け、ファイル・タイプを GSAM として指定し、GSAM データ・セットの名前を指定します。あるいは、実行時に converseVar.printerAssociation を使用して、出力 GSAM データ・セットの名前を変更することもできます。

コードを別の IMS BMP プログラムに転送する、またはコードからそのプログラムを呼び出すことができます。呼び出し先プログラムは、メッセージ・キューから読み取ることはできません。

ビルド記述子オプションの効果

コードの外部でいくつかの決定を行います。それには、生成時に使用されるビルド記述子のオプションを設定します。

MPP または IFP 領域用にプログラムを生成するには、system を IMS/VS に設定します。 次のオプションも適用されます。
  • SPA のサイズを (会話型プログラムの必要に応じて) 必須にするには、ビルド記述子オプション spaSize を設定します。プログラムが非会話型であることを確実にするには、その値をゼロ (デフォルト) に設定します。
  • 会話型プログラムを IMSADF II プログラムへ、またはそこから転送することを示すには、ビルド記述子オプション spaADF を YES に設定します。
  • FastPath プログラム (IFP 領域で実行します) を生成するには、ビルド記述子オプション imsFastPath を YES に設定します。
IMS BMP 領域用のプログラムを生成するには、system を IMSBMP に設定します。
追加のビルド記述子オプションは、IMS/VS または IMS BMP 環境にのみ適用されます。
  • imsLogID
  • mfsExtendedAttr
  • mfsIgnore
  • mfsUseTestLibrary
  • formServicePgmType
  • spaStatusBytePosition
formGroup を生成する前に、mfsDevice も設定する必要があります。

フィードバック