外部記述の内部形式(名称変更)

概要

RPGから外部記述ファイルを参照した際に、レコード名の重複によるコンパイルエラーの回避。
また、同じフィールド名が存在するが内部形式を変更して区別できるようにしたい。
同一のファイルを別ファイルとして定義してプログラム内で使用したい。


レコード名変更/RENAME(外部記述:内部記述)

RENAME キーワードによって、外部記述ファイル中のレコード様式の名前を変更することができます。 名前を変更するレコード様式の外部名は、「外部形式」パラメーターとして入力されます。 「内部形式」パラメーターは、プログラムで使用される場合のレコードの名前です。 外部名がプログラムの中でこの名前に置き換えられます。

接頭部を追加することによってすべてのフィールドの名前を変更するためには、 PREFIX キーワードを使用してください。

              
_*..1....+....2....+....3....+....4....+....5....+....6....+....7 ...+... 8
F*Name +++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
FIDSFILE  IF  E       DISK  RENAME(IDTFREC:IDSFREC)
FIDHFILE  IF  E       DISK  RENAME(IDTFREC:IDHFREC)
              
            

フィールド名変更 PREFIX(接頭部 {:置き換えられる文字数 })

PREFIX キーワードは、外部記述ファイル中のフィールドの名前を部分的に変更するために使用されます。最初のパラメーターで指定される文字が、 外部記述ファイルのすべてのレコード内に定義されたすべてのフィールドの名前に接頭部として付加されます。

              
_*..1....+....2....+....3....+....4....+....5....+....6....+....7 ...+... 8
F*Name +++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
FIDSFILE  IF  E       DISK  PREFIX(IDS:3)
              
            

ファイル名変更

EXTFILE と EXTDESC を指定することで 一つの外部記述ファイルを プログラム内で別ファイルとして定義することができます。
下記の例では PREFIX も併用することで参照時に互いに影響を受けず 仕入先マスタ を 仕入先 と 支払先 にファイルを分けて参照しています。

              
_*..1....+....2....+....3....+....4....+....5....+....6....+....7 ...+... 8
F*Name +++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
FSKSFILE  IF  E       DISK  EXTFILE(*EXTDESC) EXTDESC('MSKFILE')
F                   RENAME(MSKFREC:SKSFREC) PREFIX(SKS:3)
F*
FSHRFILE  IF  E       DISK  EXTFILE(*EXTDESC) EXTDESC('MSKFILE')
F                   RENAME(MSKFREC:SHRFREC) PREFIX(SHR:3)

_L0N01FACTOR1+++++++OPCODE&EXTFACTOR2+++++++RESULT++++++++LEN++D+HILOEQ....
C          CLEAR   *ALL     SKSFREC
C          Z-ADD   IDTSKSCOD   SKSSKSCOD
C   SKSKEY    CHAIN   SKSFILE
C*
C          CLEAR   *ALL     SHRFREC
C          Z-ADD   IDTSHRCOD   SHRSKSCOD
C   SHRKEY    CHAIN   SHRFILE
C*
C          Z-ADD   SKSSKSNM0   SKSNAM
C          Z-ADD   SHRSKSNM0   SHRNAM