データ・レイアウトの抽出
IMS から抽出されたデータは、以下のレイアウト特性と一緒にフラット・ファイルに書き込まれます。
- Header record (ヘッダー・レコード)
- ヘッダーは、データの再ロード時に FM/IMS で必要な情報を保管します。これは、動的 PSB ヘッダー・レコードと静的 PSB ヘッダー・レコードの 2 つの形式になります。
- Dynamic PSB header record (動的 PSB ヘッダー・レコード)
- このレコードは抽出ファイルの最初の行で、以下の形式になります。
表 1. 動的 PSB ヘッダー・レコードの構造 列 フィールド 説明 1~8 Sort field (ソート・フィールド) ファイルをソートすると、ヘッダー・レコードが最初のレコードのままに なるように、すべての桁が小さい値 (x'00') に設定されます。 9~15 Product code (製品コード) 「FM/IMS」に設定されます 16 から 25。 Version number (バージョン番号) FM/IMS の現行バージョンに設定されます 26 予約済み 27 から 28。 Extract record prefix length (抽出レコードの接頭部の長さ) これは、抽出レコード・フォーマットで次のように計算されます。 x=33+max_ckeylen-1
29 から 30。 Maximum concatenated key length (連結キーの最大長) 31 から 46。 Date/time (日時) 抽出ファイルが作成された日時 47 EOR レコードの終わり - 予約済み
- Static PSB header record(s) (静的 PSB ヘッダー・レコード)
- 抽出プロセスで静的 PSB を使用する場合は、作成された ヘッダー・レコードが数行にまたがることがあります。これらのヘッダー・ レコードは、論理順序番号フィールド (桁 1 から 2) に 0 があることで、 セグメント・レコードと区別します。最初のヘッダー・レコードの形式は、以下のようになります。
表 2. 動的 PSB の最初のヘッダー・レコードの構造 列 フィールド 説明 1 から 9。 Sort field (ソート・フィールド) ファイルをソートすると、ヘッダー・レコードが最初のレコードのままに なるように、すべての桁が小さい値 (x'00') に設定されます (これは、 動的ヘッダー・フィールドのソート・フィールドより 1 バイト長くなります)。 10 から 16。 Product code (製品コード) 「FM/IMS」に設定されます 17 から 26。 Version number (バージョン番号) FM/IMS の現行バージョンに設定されます 27 予約済み 28 から 29。 Extract record prefix length (抽出レコードの接頭部の長さ) これは、抽出レコード・フォーマットで次のように計算されます。 x=34+max_ckeylen-1
30 から 31。 Maximum concatenated key length (連結キーの最大長) 32 から 47。 Date/time (日時) 抽出ファイルが作成された日時 48 から 59。 PSB タイプ 「STATIC PSB (静的 PSB)」に設定されます。 60 から 73。 索引 PSB が 2 次索引を使用しなかった場合は、このフィールドはブランクになります。それ以外の場合は、INDEX という語の後に索引の DBD 名が付きます。 74 EOR レコードの終わり - 予約済み 最初のヘッダー・レコードの後に、静的 PSB の抽出では、抽出中に使用された PSB に関する情報を保管するための追加のヘッダー・レコードがあります。各レコードには、抽出で組み込まれたデータベースごとの SENSEG のリストが 入っています。これらのレコードの形式は、以下のようになります。
表 3. 静的 PSB の後続のヘッダー・レコードの構造 列 フィールド 説明 1~2 Sort field (ソート・フィールド) ファイルをソートすると、ヘッダー・レコードが最初のレコードのままに なるように、すべての桁が小さい値 (x'00') に設定されます。 3 から 4。 Header sequence number (ヘッダー・シーケンス番号) ソート中に追加のヘッダー・レコードの順序を決めるためのものです。 5 から 8。 予約済み 小さい値 (x'00') に設定されます。 9~16 ヘッダーの DBD 名 抽出で使用されたデータベースの 1 つの DBD 17-?? SENSEG list (SENSEG リスト) 可変長 (senseg あたり 8 バイト)
- IMS segment record (IMS セグメント・レコード)
- IMS セグメント・レコードの形式は、以下のようになります。
表 4. IMS セグメント・レコードの構造 列 フィールド 説明 1~2 Logical number order (論理番号順) 論理子が論理親の後に挿入されるように、ファイルをソートするために使用されます。これは、通常のセグメントでは「01」、論理子およびどちらかの 従属セグメントでは「02」になります。 3 から 4。 Database number (データベース番号) データを抽出するために使用される PCB 番号。論理関係では、「Extract (抽出)」パネルで指定された基本データベースの値は 1 になります。論理的に関連するデータベースの値は、2、3、などになります。 5 から 8。 Extract order (抽出順序) IMS セグメントが FM/IMS によって抽出された順序 9~16 DBD name (DBD 名) 抽出で使用されたデータベースの 1 つの DBD 17 から 18。 セグメント・コード 19 から 26。 セグメント名 27 から 28。 予約済み 小さい値 (x'00') に設定されます。 29 から 32。 Concatenated key length (連結キーの長さ) このセグメントの実際の連結キーの長さ 33-?? Concatenated key (連結キー) ??-?? IMS segment data (IMS セグメント・データ) これは、33+Max 連結キーの長さから始まります。