LIKEFILE キーワードに関する規則:

表 1. 継承されるファイル・プロパティーのうち、一時変更できるもの
プロパティーまたはキーワード 親ファイルから継承 新規ファイルに指定可能
ファイル・タイプ (入力、更新、出力、結合) あり なし
ファイルの追加 あり なし
レコード・アドレス・タイプ (RRN、keyed) あり なし
レコード長 (プログラム記述ファイル) あり なし
キーの長さ (プログラム記述ファイル) あり なし
ファイル編成 (プログラム記述ファイル) あり なし
装置 あり なし
変更の始まり ALIAS 変更の終わり 変更の始まり あり 変更の終わり 変更の始まり なし 変更の終わり
BLOCK あり なし
COMMIT なし あり
DATFMT N/A、注 1 を参照
DEVID なし あり
変更の始まり DISK 変更の終わり 変更の始まり あり 変更の終わり 変更の始まり なし 変更の終わり
EXTDESC あり なし
EXTFILE はい、注 2 を参照 あり
EXTIND なし あり
EXTMBR はい、注 2 を参照 あり
FORMLEN あり あり
FORMOFL あり あり
変更の始まり HANDLER 変更の終わり 変更の始まり N/A。HANDLER キーワードは新規ファイルにも親ファイルにもサポートされていません。 変更の終わり
IGNORE あり なし
INCLUDE あり なし
INDDS なし あり
INFDS なし あり
INFSR なし あり
変更の始まり KEYED 変更の終わり 変更の始まり あり 変更の終わり 変更の始まり なし 変更の終わり
KEYLOC あり なし
LIKEFILE あり N/A
MAXDEV あり あり
OFLIND なし あり
PASS あり なし
PGMNAME あり あり
PLIST なし あり
PREFIX あり なし
変更の始まり PRINTER 変更の終わり 変更の始まり あり 変更の終わり 変更の始まり なし 変更の終わり
PRTCTL なし あり
QUALIFIED N/A、QUALIFIED は新規ファイルに常に暗黙指定される
RAFDATA N/A、注 3 を参照
RECNO なし あり
RENAME あり なし
SAVEDS なし あり
SAVEIND なし あり
変更の始まり SEQ 変更の終わり 変更の始まり あり 変更の終わり 変更の始まり なし 変更の終わり
SFILE はい、注 4 を参照 はい、注 4 を参照
SLN なし あり
変更の始まり SPECIAL 変更の終わり 変更の始まり あり 変更の終わり 変更の始まり なし 変更の終わり
STATIC なし あり
TEMPLATE なし あり
TIMFMT N/A、注 1 を参照
変更の始まり USAGE 変更の終わり 変更の始まり あり 変更の終わり 変更の始まり なし 変更の終わり
USROPN なし あり
変更の始まり WORKSTN 変更の終わり 変更の始まり あり 変更の終わり 変更の始まり なし 変更の終わり
注:
  1. キーワード DATFMT および TIMFMT は、ファイルのプログラム記述の入力仕様にコーディングされる「日付および時刻」フィールドに関連しています。 ただし、LIKEFILE キーワードで定義されるファイルと入力仕様とは無関係です。
  2. RPG ファイルに関連付けられる外部ファイルは、親ファイルと新規ファイルの両方に指定されるキーワード EXTFILE および EXTMBR に応じて異なります。 デフォルトでは、ファイルの名前項目で指定される名前が、各ファイルに関連付けられる外部ファイルを指します。 パラメーターが定数の場合、新規ファイルは親ファイルからキーワード EXTFILE または EXTMBR を継承します。 ただし、これらのキーワードが、新規ファイルに指定されることもあります。 EXTFILE または EXTMBR のパラメーターが定数でない場合、キーワード EXTFILE または EXTMBR は継承されません。 親ファイルおよび新規ファイルの EXTFILE および EXTMBR の値のうち、親ファイルの LIKEFILE で定義されたものに関する例として、実行時に使用される可能性のある外部ファイルについて、以下の表で説明します。
    表 2. ファイル仕様書の例: EXTFILE および EXTMBR
    ファイル仕様書 実行時に使用される外部ファイル (太字部分は、継承される値)
    EXTFILE および EXTMBR の値が両方とも定数である場合の例
    FFILE1  IF  E    DISK
    FFILE2                 LIKEFILE(FILE1)
    *LIBL/FILE1(*FIRST)
    *LIBL/FILE2(*FIRST)
    FFILE1  IF  E    DISK  EXTFILE('MYLIB/MYFILE')
    FFILE2                 LIKEFILE(FILE1)
    MYLIB/MYFILE(*FIRST)
    MYLIB/MYFILE(*FIRST)
    FFILE1  IF  E    DISK
    FFILE2                 LIKEFILE(FILE1) EXTFILE('MYLIB/MYFILE')
    *LIBL/FILE1(*FIRST)
    MYLIB/MYFILE(*FIRST)
    FFILE1  IF  E    DISK  EXTFILE('MYLIB/MYFILE1')
    FFILE2                 LIKEFILE(FILE1) EXTFILE('MYLIB/MYFILE2')
    MYLIB/MYFILE1(*FIRST)
    MYLIB/MYFILE2(*FIRST)
    FFILE1  IF  E    DISK  EXTMBR('MBR1')
    FFILE2                 LIKEFILE(FILE1)
    *LIBL/FILE1(MBR1)
    *LIBL/FILE2(MBR1)
    FFILE1  IF  E    DISK
    FFILE2                 LIKEFILE(FILE1) EXTMBR('MBR1')
    *LIBL/FILE1(*FIRST)
    *LIBL/FILE2(MBR1)
    FFILE1  IF  E    DISK  EXTMBR('MBR1')
    FFILE2                 LIKEFILE(FILE1) EXTFILE('MYLIB/MYFILE2')
    *LIBL/FILE1(MBR1)
    MYLIB/MYFILE2(MBR1)
    EXTFILE および EXTMBR の値が両方とも変数である場合の例
    FFILE1  IF  E    DISK  EXTFILE(extfileVariable)
    FFILE2                 LIKEFILE(FILE1)
    Value of extfileVariable: 'MYLIB/MYFILE'
    MYLIB/MYFILE(*FIRST)
    *LIBL/FILE2(*FIRST)
    FFILE1  IF  E    DISK
    FFILE2                 LIKEFILE(FILE1) EXTFILE(extfileVariable)
    Value of extfileVariable: 'MYLIB/MYFILE'
    *LIBL/FILE1(*FIRST)
    MYLIB/MYFILE(*FIRST)
    FFILE1  IF  E    DISK  EXTFILE(extfileVariable1)
    FFILE2                 LIKEFILE(FILE1) EXTFILE(extfileVariable2)
    Value of extfileVariable1: 'MYLIB/MYFILE1'
    Value of extfileVariable2: 'MYLIB/MYFILE2'
    MYLIB/MYFILE1(*FIRST)
    MYLIB/MYFILE2(*FIRST)
    FFILE1  IF  E    DISK  EXTMBR(extmbrVariable)
    FFILE2                 LIKEFILE(FILE1)
    Value of extmbrVariable: 'MBR1'
    *LIBL/FILE1(MBR1)
    *LIBL/FILE2(*FIRST)
    FFILE1  IF  E    DISK
    FFILE2                 LIKEFILE(FILE1) EXTMBR(extmbrVariable)
    Value of extmbrVariable: 'MBR1'
    *LIBL/FILE1(*FIRST)
    *LIBL/FILE2(MBR1)
    FFILE1  IF  E    DISK  EXTMBR(extmbrVariable)
    FFILE2                 LIKEFILE(FILE1) EXTFILE(extfileVariable)
    Value of extmbrVariable: 'MBR1'
    Value of extfileVariable: 'MYLIB/MYFILE2'
    *LIBL/FILE1(MBR1)
    MYLIB/MYFILE2(*FIRST)
    EXTFILE および EXTMBR の値に変数と定数が混用されている場合の例
    FFILE1  IF  E    DISK  EXTFILE(extfileVariable1) EXTMBR('MBR1')
    FFILE2                 LIKEFILE(FILE1)
    Value of extfileVariable1: 'MYLIB/MYFILE1'
    MYLIB/MYFILE1(MBR1)
    *LIBL/FILE2(MBR1)
    FFILE1  IF  E    DISK  EXTMBR(extmbrVariable)
    FFILE2                 LIKEFILE(FILE1)
    Value of extmbrVariable: 'MBR1'
    *LIBL/FILE1(MBR1)
    *LIBL/FILE2(*FIRST)
    FFILE1  IF  E    DISK  EXTFILE('MYLIB/MYFILE1') EXTMBR(extmbrVariable)
    FFILE2                 LIKEFILE(FILE1)
    Value of extmbrVariable: 'MBR1'
    MYLIB/MYFILE1(MBR1)
    MYLIB/MYFILE1(*FIRST)
  3. RAFDATA キーワードは、1 次ファイルおよび 2 次ファイルにのみ関係します。 ただし、親ファイルは全手順ファイルでなければなりません。
  4. SFILE キーワードは、レコード様式をサブファイル・レコード様式にするよう指定し、サブファイルに相対レコード番号を指定する際に使用する変数の名前も指定します。 特定のレコード様式がサブファイル・レコード様式であることを、新規ファイルは自動的に継承します。 ただし、RRN の指定に使用される変数の名前は継承しません。 サブファイルに相対レコード番号を指定するのに使用する変数を指定するために、新規ファイルに SFILE キーワードを指定する必要があります。