分割制御フィールド
入力レコード中の複数のフィールドに同じ制御レベル標識を割り当ていると、分 割制御フィールドが形成されます。 プログラム記述ファイルの場合には、同じ制 御レベル標識を持つフィールドは入力仕様に指定された順序でプログラムによ って結合され、単一の制御フィールドとして取り扱われます (図 1 を参照)。 最初に定義されたフィールドは、制御フィールドの高位 (左端) 位置に入れら れ、最後に定義されたフィールドは、制御フィールドの低位 (右端) 位置に入 れられます。
図 1. 分割制御フィールド
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................
I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr....
IMASTER 01
I 28 31 CUSNO L4
I 15 20 ACCTNO L4
I 50 52 REGNO L4
外部記述ファイルの場合には、同じ制御レベル標識を持つフィールドは、その
フィールドが入力仕様に指定された順序ではなく、データ記述仕様 (DDS) に記
述されている順序で結合されます。 例えば、DDS に次のフィールドが次の順序で指定されているとします。
- EMPNO
- DPTNO
- REGNO
また、これらのフィールドが、入力仕様で次の順序により同じ制御レベル標
識を持つように指定されているとします。
- REGNO L3
- DPTNO L3
- EMPNO L3
フィールドは EMPNO DPTNO REGNO の順序で結合されて分割制御フィールドが構 成されます。
分割制御フィールドについては、次のような特別な規則があります。
- 1 つの制御レベル標識について、フィールド名が異なっていれば、一部のレ コード・タイプではフィールドを分割し、別のレコード・タイプでは分割しない ことができます。 ただし、分割にかかわらず、フィールドの長さはすべてのレコード・タイプで同 じでなければなりません。
- フィールド名が異なっていれば、異なるレコード・タイプごとに分割制御フ ィールドの各部分の長さを変えることができます。 ただし、各部分の合計の長さ は常に同じでなければなりません。
- フィールドの長さ (桁数または文字数) が同じである限り、パック 10 進数 フィールドとゾーン 10 進数フィールドを組み合わせて 1 つの分割制御フィール ドを形成することができます。
- 1 つのレコード・タイプの分割制御フィールドのすべての部分に同じフィールドとレコードの関連標識が割り当てられる必要があり、連続する仕様行に定義されなければなりません。
- 分割制御フィールドに日付、時刻、またはタイム・スタンプ・フィールドが含ま れている時には、分割制御フィールド中のすべてのフィールドが同じタイプでな ければなりません。
図 2 は、これらの規則の例を示しています。
図 2. 分割制御フィールドの特別な規則
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................
I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr....
IDISK BC 91 95 C1
I OR 92 95 C2
I OR 93 95 C3
I
* All portions of the split control field must be assigned the same
* control level indicator and all must have the same field record
* relation entry.
I 1 5 FLD1A L1
I 46 50 FLD1B L1
I 11 13 FLDA L2
I 51 60 FLD2A L3
I 31 40 FLD2B L3
I 71 75 FLD3A L4 92
I 26 27 FLD3B L4 92
I 41 45 FLD3C L4 92
I 61 70 FLDB 92
I 21 25 FLDC 92
I 6 10 FLD3D L4 93
I 14 20 FLD3E L4 93
95 桁目の 1 で識別されるレコードには、次の 2 つの分割制御フィールドがあ
ります。
- FLD1A および FLD1B
- FLD2A および FLD2B
95 桁目の '2' で識別されるレコードには、次の 3 つの分割制御フィールドがあ
ります。
- FLD1A および FLD1B
- FLD2A および FLD2B
- FLD3A、FLD3B、および FLD3C
95 桁目の '3' で識別される 3 番目のレコード・タイプにも、次の 3 つの分割制
御フィールドがあります。
- FLD1A および FLD1B
- FLD2A および FLD2B
- FLD3D および FLD3E