分割制御フィールド

入力レコード中の複数のフィールドに同じ制御レベル標識を割り当ていると、分 割制御フィールドが形成されます。 プログラム記述ファイルの場合には、同じ制 御レベル標識を持つフィールドは入力仕様に指定された順序でプログラムによ って結合され、単一の制御フィールドとして取り扱われます (図 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 つの分割制御フィールドがあ ります。
  1. FLD1A および FLD1B
  2. FLD2A および FLD2B
95 桁目の '2' で識別されるレコードには、次の 3 つの分割制御フィールドがあ ります。
  1. FLD1A および FLD1B
  2. FLD2A および FLD2B
  3. FLD3A、FLD3B、および FLD3C
95 桁目の '3' で識別される 3 番目のレコード・タイプにも、次の 3 つの分割制 御フィールドがあります。
  1. FLD1A および FLD1B
  2. FLD2A および FLD2B
  3. FLD3D および FLD3E