GSAM および IMS™ メッセージ・キューは、EGL を介してアクセスされるシリアル・ファイルの 2 つの例です。
シリアル・レコード (SerialRecord ステレオタイプを持つレコード定義) は、 生成時に ResourceAssociation パーツを使用して特定のファイルに関連付けます。 このプロセスにより、EGL がレコードを使用して VSAM、 GSAM、または IMS メッセージ・キューのいずれのアクセスをするかが決まります。詳しくは、「EGL 生成ガイド」を参照してください。
IMS BMP または z/OS バッチ環境で実行される EGL プログラムは、 シリアル・ファイルを GSAM (汎用順次アクセス方式) ファイルとして実装することができます。これにより、 これらのシステムでごく基本的なデータベース機能セットが提供されます。GSAM ファイルとして実装するシリアル・ファイルには、add、get next、および close I/O ステートメントを使用できます。
IMS/VS で実行されるプログラムは、シリアル・ファイルを IMS メッセージ・キューとして実装します。 IMS BMP プログラムとして実行されるプログラムも、シリアル・ファイルをメッセージ・キューとして実装できます。 出力ファイルには、add ステートメントと get next I/O ステートメントのほか、close も使用できます。 IMS/VS または IMS BMP をターゲットのランタイム環境として選択した場合、 シリアル・ファイルまたは印刷ファイルをメッセージ・キューに関連付けて定義することができます。IMS/VS の場合は、すべてのシリアル・ファイルと印刷ファイルをメッセージ・キューに関連付ける必要があります。メッセージ・キューに関連付けることができる入力ファイルは 1 つのみです。
シリアル・レコードをメッセージ・キューに関連付ける際には、プログラム・データのみ定義します。 生成された COBOL プログラムでは、add ステートメントについて IMS メッセージ・ヘッダー (長さ、ZZ、 およびトランザクション・コード) を追加し、get next ステートメントについてはこれを除去します。
メッセージ・キューまたは GSAM に関連する DL/I 呼び出しの後に、dliVar フィールドは更新されません。 これらのフィールドは、DL/I セグメント・レコードにアクセスする関数の場合にのみ更新されます。これにより、CICS® 一時データ・キューまたは OS/VS シリアル・ファイル用に作成されたプログラムは、そのファイルが IMS 環境のメッセージ・キューまたは GSAM データベースに変更されても、整合性を維持したまま実行できます。 シリアル・ファイルで endOfFile、noRecordFound、またはその他のエラーが発生したかどうかを判別するには、 I/O エラー値をチェックします。PCB からさらに詳細な情報を必要とする場合は、IO_PCBRecord または ALT_PCBRecord のフィールド名を使用します。
PSB 変数 (名前は myPSB) が ALT_PCBRecord (名前は myAltPCB) を宣言して、リソース関連で myAltPCB を PCB 名として使用した状況を考えてみます。add ステートメントの後で DL/I 状況コードを参照するには、myPSB.myAltPCB.statusCode を使用します。
| EGL I/O エラー・コード | IMS メッセージ・キューの状況コード | 重大度 |
|---|---|---|
| endOfFile | QC | ソフト |
| noRecordFound | QD | ソフト |
| ioError | 非ブランクの任意の状況コード | ハードまたはソフト |
| hardIOError | QC、QD、CE、CF、CG、CI、CJ、CK、CL 以外の非ブランクの状況コード | ハード |
| EGL I/O エラー・コード | GSAM 状況コード | 重大度 |
| endOfFile | GB | ソフト |
| ioError | 非ブランクの任意の状況コード | ハードまたはソフト |
| hardIOError | GB 以外の非ブランクの状況コード | ハード |