突き合わせフィールドを用いた複数ファイル処理

複数ファイル処理で突き合わせフィールドを使用した場合には、突き合わせフィールド の内容に応じて、処理するレコードがプログラムによって選択されます。 最初のサイクルの始めでは、プログラムがすべての 1 次/2 次 入力ファイルから 1 つずつレコードを読み取って、レコード内の突き合わせフィール ドを比較します。 レコードが昇順であれば、突き合わせフィールドが最低のレコード がプログラムによって選択されます。 レコードが降順であれば、プログラムは最高の突き合わせフィール ドのレコードを選択します。

レコードがファイルから選択されると、プログラムはそのファイルから次のレ コードを読み取ります。 次のプログラム・サイクルの始めに、新しいレコードが 選択されるのを待機している読み取り域内の他のレコードと比較され、1 つのレコ ードが処理のために選択されます。

突き合わせフィールドのないレコードもファイルに含めることができます。 このよ うなレコードは、突き合わせフィールドのあるレコードより前に、処理のために選択 されます。 比較されているレコードの中に突き合わせフィールドのないレコードが 2 つ以上あっ た場合には、それらのレコードが入っていたファイルの優先順位によって選択さ れるレコードが決まります。 ファイルの優先順位は次のとおりです。

  1. 指定されていれば、1 次ファイル
  2. ファイル仕様書に記述されている順序で 2 次ファイル

1 次ファイルのレコードが 1 つまたは複数の 2 次レコー ドと一致した場合には、MR (突き合わせレコード) 標識がオンに設定されます。 MR 標識は、一致したレコードの明細時処理から、そのレコードに続く合計時まで 、オンのままです。 この標識を使用して、選択されたレコードに対する演算または 出力命令を条件付 けすることができます。 一致したレコードを 1 つ選択する必要があった場合には、それらの レコードが入 っていたファイルの優先順位によって選択されるレコードが決まります。

図 7 は、複数ファイル処理の論理フローを示しています。

1 つの入力ファイルだけに突き合わせフィールドがあるように定義し、他の入力フ ァイルには突き合わせフィールドがないようなプログラムを作成することができます。 突き合わせフィールドのないファイルは、前述のファイルの優先順位に完全に従って 処理されます。 突き合わせフィールドのあるファイルは最後に処理され、そのファイ ルについては順序検査が行われます。

突き合わせフィールド値 (M1 から M9) の割り当て

入力仕様書の 65 から 66 桁目で突き合わせフィールド値 (M1 から M9) をフィールドに割 り当てる場合には、以下の点を考慮してください。

図 41 は、 突き合わせフィールドの指定方法の例です。

図 41. 値がすべて一致する突き合わせフィールド
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords++++++++++++++++++++++++++++
 * The files in this example are externally described (E in position
 * 22) and are to be processed by keys (K in position 34).
FMASTER    IP   E           K DISK
FWEEKLY    IS   E           K DISK
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
IRcdname+++....Ri........................................................
I..............Ext-field+..................Field+++++++++L1M1..PlMnZr....
 *                           MASTER FILE
IEMPMAS        01
I                                          EMPLNO          M1
I                                          DIVSON          M3
I                                          DEPT            M2
IDEPTMS        02
I                                          EMPLNO          M1
I                                          DEPT            M2
I                                          DIVSON          M3
 *                           WEEKLY FILE
IWEEKRC        03
I                                          EMPLNO          M1
I                                          DIVSON          M3
I                                          DEPT            M2

レコードの突き合わせに 3 つのファイルが使用されます。 すべてのファイルに 3 つ の突き合わせフィールドが指定され、突き合わせるべきフィールドを指示するために 、すべて同じ値 (M1、M2、M3) を使用しています。 MR 標識がオンに設定される のは、EMPMAS か DEPTMS のいずれかのファイルの 3 つのすべてのフィールドが、 WEEKRC ファイルからの 3 つのすべてのフィールドと同じである場合だけです。

各ファイル中の 3 つの突き合わせフィールドは結合され、次のように降順で編成さ れた 1 つの突き合わせフィールドとして取り扱われます。

DIVSON
M3
DEPT
M2
EMPLNO
M1

突き合わせフィールドが入力仕様書に指定された順序は、各突き合わせフィールドの編 成には影響しません。

図 42. ダミー M2 フィールドによる突き合わせフィールド
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................
I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr....
IDISK      AB  01    1 C1
I         OR   02    1 C2
I         OR   03    1 C3
I                                  1   10 0EMPNO           M1
I                                 11   15 0DUMMY           M2
I                                 11   15 0DEPT            M202
I                                 16   20 0DEPT            M203
REQTEXT

入力ファイル には、3 つの異なるレコード・タイプがあります。 この 3 つのす べての 1 から 10 桁目に突き合わせフィールドが入っています。 それらの 2 つには、2 番 目の突き合わせフィールドがあります。 M1 はすべてのレコード・タイプにあるので、 67 から 68 桁目にフィールドとレコードの関連を記入せずに指定することができます。 フィールドとレコードの関連を記入せずに 1 つの突き合わせ値 (M1 から M9) を指定する 場合には、すべての突き合わせ値を、一度は、フィールドとレコードの関連を記入せずに 指定しなければなりません。 M1 の値はフィールドとレコードの関連なしに指定さ れているので、M2 の値も一度はフィールドとレコードの関連なしに指定されてい なければなりません。 M2 フィールドはすべてのレコード・タイプにあるわけでは ないので、ダミーの M2 フィールドを次に指定することが必要です。 ダミー・フ ィールドには任意の固有名を与えることができますが、指定された長さは、実際 の M2 フィールドの長さと等しくなければなりません。 次に、フィールドとレコ ードの関連の指定によって M2 フィールドが見付かったレコード・タイプに、そ の M2 フィールドが関連付けられます。

図 43. 3 つのディスク・ファイルの突き合わせフィールドの指定
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords++++++++++++++++++++++++++++
FPRIMARY   IPEA F   64        DISK
FFIRSTSEC  IS A F   64        DISK
FSECSEC    IS A F   64        DISK

*...1....+....2....+....3....+....4....+....5....+....6....+....7...
IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................
I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr....
IPRIMARY   AA  01    1 CP    2NC
I                                  2    3  MATCH           M1
 *
I          BB  02    1 CP    2 C
I                                  2    3  NOM
 *
IFIRSTSEC  AB  03    1 CS    2NC
I                                  2    3  MATCH           M1
 *
I          BC  04    1 CS    2 C
I                                  2    3  NOM
 *
ISECSEC    AC  05    1 CT    2NC
I                                  2    3  MATCH           M1
 *
I          BD  06    1 CT    2 C
I                                  2    3  NOM

突き合わせレコードの処理

2 つ以上のファイルのレコードの突き合わせは、以下の方法で処理されます。

図 44 および 図 45 は、3 つのファイルから レコードがどのように処理のために選択されるかを示しています。

図 44. 3 つのディスク・ファイルからレコードを選択する通常の方法
REQTEXT

上記の 3 つのディスク・ファイルのレコードは太字で示した順序で選択されます。

表 24. 3 つのディスク・ファイルからレコードを選択する通常の方法
サイクル 処理されるファイル オンになる標識 標識が設定される理由
1 1 次 02 突き合わせフィールドの指定がない
2 1 次 02 突き合わせフィールドの指定がない
3 最初の 2 次 04 突き合わせフィールドの指定がない
4 2 番目の 2 次 05 2 番目の 2 次が低く、1 次と一致しない
5 1 次 01、MR 1 次が最初の 2 次と一致する
6 1 次 01、MR 1 次が最初の 2 次と一致する
7 最初の 2 次 03、MR 最初の 2 次が 1 次と一致する
8 最初の 2 次 03 最初の 2 次が低く、1 次と一致しない
9 最初の 2 次 03 最初の 2 次が低く、1 次と一致しない
10 2 番目の 2 次 05 2 番目の 2 次が低く、1 次と一致しない
11 1 次 01 1 次が低く、2 次と一致しない
12 1 次 01、MR 1 次が 2 番目の 2 次と一致する
13 1 次 02 突き合わせフィールドの指定がない
14 2 番目の 2 次 05、MR 2 番目の 2 次が 1 次と一致する
15 2 番目の 2 次 05、MR 2 番目の 2 次が 1 次と一致する
16 2 番目の 2 次 06 突き合わせフィールドの指定がない
17 1 次 01、MR 1 次が両方の 2 次ファイルと一致する
18 最初の 2 次 03、MR 最初の 2 次が 1 次と一致する
19 最初の 2 次 04 突き合わせフィールドの指定がない
20 2 番目の 2 次 05、MR 2 番目の 2 次が 1 次と一致する
21 最初の 2 次 03 最初の 2 次が低く、1 次と一致しない
22 1 次 01、MR 1 次が両方の 2 次ファイルと一致する
23 最初の 2 次 03、MR 最初の 2 次が 1 次と一致する
24 最初の 2 次 02、MR 最初の 2 次が 1 次と一致する
25 2 番目の 2 次 05、MR 2 番目の 2 次が 1 次と一致する
26 2 番目の 2 次 05、MR 2 番目の 2 次が 1 次と一致する
図 45. 3 つのディスク・ファイルからレコードを選択する通常の方法
REQTEXT
REQTEXT