Answer
各ファイルのフィールド名を COPY ステ-トメントで展開、または同一名で定義しそのデータを 使用する時どちらのファイルのフィールドかを指定することにより固有フィールドとして取り扱うことができます。
<解説>
フィールド定義ステートメントにおいては、複数のファイルに対して同じフィールド名を使用して定義することができます。
[同一フィールド定義の展開の指定]
FILE ファイル名
COPY ファイル名
FILEステートメントの直後に COPY ファイル名 と記述することによりプログラム内で定義されている指定したファイルと同一のフィールド定義が展開されます。 複数のファイルに対し同一のフィールド名で定義した場合、フィールドの参照はファイル名で修飾して行います。
[フィールド名の記述]
ファイル名 : フィールド名 または、 フィールド名( ファイル名 ) <- ファイル内のレコード フィールドの場合。
WORK : フィールド名 <- ワーク・フィールドの場合。
同一名で定義されたフィールドを参照するとき、ファイル名で修飾されていない場合には、「B039名前があいまいである」エラーが発生します。この場合には、当該フィールドをファイル名で修飾します。RECORD-COUNT,RECORD-LENGTHなどのEasytrieve Plusシステム定義フィールドを参照する場合にも、複数ファイルを定義している場合にはファイル名で修飾します。
記述例
(例) 同一レイアウトのFILEAとFILEBを使用する
FILE FILEA
FIELD1 1 4 A
FIELD2 5 5 N
FIELD3 10 14 A
*
FILE FILEB
COPY FILEA ← COPYステートメントにより、FILEA内のフィールドと同一定義がコピー展開される。
*
JOB
MOVE LIKE FILEA TO FILEB
IF FILEA:FIELD3 NOT SPACE
MOVE SPACE TO FILEB:FIELD3
END-IF
PUT FILEB
*
REPORT
TITLE 1 '*** LIST FOR FIELD3 IS NOT SPACE ***'
LINE 1 FILEA:RECORD-COUNT FILEA:FIELD3
※ MOVE LIKE FILEA TO FILEB ← 同一フィールド名で定義されたデータを一括して移送する命令。
注意:Easytrieve PlusのCOPYステーメントは、同一プログラム内で既に定義されているファイル名に対してのみ指定可能です。
(誤)
FILE FILEA
COPY FILEB ← FILEBは、この定義の前では、未だ定義されていないので、エラーとなります。
FILE FILEB
FLD-1 ......
FLD-2 ......
FLD-3 ......
(正)
FILE FILEA
FLD-1 ......
FLD-2 ......
FLD-3 ......
FILE FILEB
COPY