Easytrieve Plus : 複数ファイルで同一のフィールドを定義する方法
search cancel

Easytrieve Plus : 複数ファイルで同一のフィールドを定義する方法

book

Article ID: 185875

calendar_today

Updated On:

Products

EASYPROCLIB Easytrieve Report Generator Easytrieve Report Generator for Common Services

Issue/Introduction

Question
・複数ファイルで同一のフィールド定義を行うには?
・同一フィールド名を別ファイルで使用するには?
・同一フィールド名をワーク・フィールドで使用するには?
・同一フィールド名をプログラムで参照するには?
・「B039 名前があいまいである」エラー発生時の対応は?
・複数ファイルを扱っている場合、RECORD-COUNT、RECORD-LENGTHフィールドの参照方法は?

Environment

z/OS, MSP, VOS3, IBM, FUJITSU, HITACHI

Resolution

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
    PRINT
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   

Additional Information

Old Japanese Knowledge document ID: JTEC000978