組み込みファイル

/COPY 指示および /INCLUDE 指示では、 QSYS ファイル・システムまたは IFS ファイル・システムいずれかのファイルを指定することができます。 コンパイラーが、指示が参照するファイル・システムを認識できない場合は、 /COPY 指示が入っているファイルのファイル・システムで検索が開始されます。

コンパイラーが /COPY ステートメントを検出すると、 そのステートメントは IFS または QSYS ファイル・システム内のファイルを参照できるようになります。 名前の先頭がスラッシュの場合、または名前が単一引用符で囲まれて指定された場合、 その名前は IFS のファイルだけを指すことになります。 IFS の名前の指定には、二重引用符も使用できます。 次のように、名前の一部分しか二重引用符で囲まれていない場合、

 /copy "SOME-LIB"/QRPGLESRC,MBR

その名前は QSYS ファイル・システム名のみを指すことになります。

名前が QSYS ファイル・システムの名前か、IFS の名前か分からない場合は、 最初に、/COPY ステートメントが入っているファイルのファイル・システムが検索されます。 大文字は、QSYS ファイル・システムでは使用できますが (ただし、"A/B" のように二重引用符を使って指定する拡張名は除きます)、 IFS では使用できないことに注意してください (IFS では大文字小文字の区別がありません)。

表 19. QSYS および IFS の /Copy ファイル名解釈
/Copy ステートメント QSYS での解釈 IFS での解釈 (".suffix" の意味については、下記を参照)
/COPY MYMBR
FILE(*LIBL/QRPGLESRC)
MBR(MYMBR)
組み込みパス内のディレクトリーの 1 つにある MYMBR または MYMBR.suffix
/COPY mymbr
FILE(*LIBL/QRPGLESRC)
MBR(MYMBR)
組み込みパス内のディレクトリーの 1 つにある mymbr または mymbr.suffix
/COPY myfile,mymbr
FILE(*LIBL/MYFILE)
MBR(MYMBR)
myfile,mymbr または myfile,mymbr.suffix (MYFILE,MYMBR は IFS ファイル・システムの有効な名前であることに注意)
/COPY mylib/myfile,mymbr
FILE(MYLIB/MYFILE)
MBR(MYMBR)
mylib/myfile,mymbr (ディレクトリー mylib およびファイル myfile,mymbr)
/COPY "A/b",mymbr
FILE(*LIBL/"A/b")
MBR(MYMBR)
N/A (名前の一部分しか二重引用符で囲まれていない)
/COPY "A/B"
FILE(*LIBL/QRPGLESRC)
MBR("A/B")
A/B
/COPY a b
FILE(*LIBL/QRPGLESRC)
MBR(A) (ブランクの後ろは
すべてコメントと見なされ
る)
a または a.suffix
(ブランクの後ろはすべて
コメントと見なされる)
/COPY 'a b' N/A (名前が単一引用符で囲まれている) a b または a b.suffix
/COPY /home/mydir/myfile.rpg N/A (名前がスラッシュで始まる) /home/mydir/myfile.rpg
/COPY /QSYS.LIB/
L.LIB/F.FILE/M.MBR
N/A (名前がスラッシュで始まる)
/QSYS.LIB/L.LIB/F.FILE/
M.MBR (実際には QSYS
ファイル・システム内の
ファイルだが、RPG には
IFS ファイルと見なされ
る)
注:
IFS でファイルを検索している場合、 ファイル名にドットが入っていないと、 RPG コンパイラーは次の拡張子を持つファイルを (この順序で) 検索します。
  1. 拡張子なし (abc)
  2. .rpgleinc (abc.rpgleinc)
  3. .rpgle (abc.rpgle)

IFS 内での検索パス

IFS 内で /COPY ファイルおよび /INCLUDE ファイルを探す場所を示す方法は 2 つあります。

  1. INCDIR パラメーター。ディレクトリーを検索順にリストします。
  2. RPGINCDIR 環境変数。ディレクトリーを検索順にコロンで区切って指定したリストが入っています。 この環境変数を設定するには、ADDENVVAR コマンド または CHGENVVAR コマンドを使用します。

    例: ADDENVVAR ENVVAR(RPGINCDIR) VALUE('/home/mydir:/project/prototypes')ADDENVVAR

IFS で相対ファイル (パスの先頭が / ではないファイル) を検索する場合は、ファイルは次の場所および次の順序で検索されます。

  1. 現行ディレクトリー
  2. INCDIR コマンド・パラメーターで指定されたパス
  3. RPGINCDIR 環境変数内のディレクトリー
  4. ソース・ディレクトリー (ソースが IFS ファイルの場合)

次に例を示します。

ディレクトリー検索パスは、デフォルト拡張子の順序に優先します。 拡張子のないファイルを複数の異なるディレクトリーで検索する場合は、 次のディレクトリーに変換する前に、各ディレクトリーですべての拡張子を付けた検索が行われます。

表 20. /Copy ファイルの検索順序
/Copy ステートメント 検索するファイル
IFS では、/COPY が入っている
ソース・ファイルは
/driver/src/main.rpg であると見なす
/COPY file.rpg
IFS の場合:

/home/auser/file.rpg
/driver/v5r2/inc/file.rpg
/driver/v5r1/inc/file.rpg
/home/auser/temp/file.rpg
/home/auser/src/file.rpg

QSYS の場合:

FILE(*LIBL/QRPGLESRC) MBR(FILE.RPG)
QSYS ファイル・システムでは、
/COPY が入っているソース・ファイルは
MYLIB/QRPGLESRC MYMBR であると
見なす
/COPY file
QSYS の場合:

FILE(*LIBL/QRPGLESRC) MBR(FILE)

IFS の場合:

/home/auser/file
/home/auser/file.rpgleinc
/home/auser/file.rpgle

/driver/v5r2/inc/file
/driver/v5r2/inc/file.rpgleinc
/driver/v5r2/inc/file.rpgle

/driver/v5r1/inc/file
/driver/v5r1/inc/file.rpgleinc
/driver/v5r1/inc/file.rpgle

/home/auser/temp/file
/home/auser/temp/file.rpgleinc
/home/auser/temp/file.rpgle

/home/auser/src/file
/home/auser/src/file.rpgleinc
/home/auser/src/file.rpgle