/COPY または /INCLUDE
/COPY 指示および /INCLUDE 指示は同じ目的と同じ構文を持ちますが、SQL プリコンパイラーによる処理が異なってきます。ユーザーのプログラムに組み込み SQL がない場合は、ユーザーはどちらの指示を使用するか自由に選択できます。ユーザーのプログラムに組み込み SQL がある場合は、どちらの指示を用いるべきかについて 組み込み SQL のあるソース・ファイルへの /COPY、/INCLUDE の使用を参照してください。
/COPY コンパイラー指示および /INCLUDE コンパイラー指示を使用すると、 これらのコンパイラー指示が出された時点で、 他のファイルからのレコードがコンパイル中のファイルに挿入されます。挿入されるファイルには、/COPY および /INCLUDE を含む有効な仕様であれば、COPYNEST キーワードによって指定されたネストの 最大の深さ (指定されていない場合は 32) まで、いかなる仕様が含まれていても差し支えありません。
次に示すのは、Program Verifier を使用する場合における、/COPY コンパイラー指示および
/INCLUDE コンパイラー指示の制約事項です。
- メイン・ソース・メンバーの /COPY または /INCLUDE は許されません。これは、/COPY ファイルまたは /INCLUDE ファイルをオープンできないことを示すエラー・メッセージを招きます。
/COPY ファイルおよび /INCLUDE ファイルは物理ファイルでも IFS ファイルでもかまいません。物理ファイルを指定するには、
/COPY ステートメントおよび /INCLUDE ステートメントを次の方法でコーディングします。
- /COPY または /INCLUDE の後には、正確に 1 つのスペースを入れ、その後にファイル名またはパスが必要です。
- 物理ファイルを指定する場合には、ライブラリー、ファイル、およびメンバー名に次の形式のいずれかを使用できます。
libraryname/filename,membername filename,membername membername- メンバー名の指定が必要です。
- ファイル名が指定されていない場合には、QRPGLESRC と見なされます。
- ライブラリー名が指定されていない場合には、ライブラリー・リスト からファイルが検索されます。 メンバーが見付かるか検索が完了するまで、ライブラリー・リスト内の 指定されたソース・ファイルのすべてが検索されます。
- ライブラリー名を指定する場合には、ファイル名も指定しなければ なりません。
- IFS (Integrated File System) ファイルを指定する場合には、パスは絶対パス (/ で開始) でも相対パスでもかまいません。
- パスは、単一引用符または二重引用符で囲むことができます。パスにブランクが含まれている場合は、引用符で囲む必要があります。
- パスが接尾部 (".txt" など) で終了しない場合、コンパイラーはファイルが名前付きであるものとして検索します。 接尾部が ".rpgle" または ".rpgleinc" であるファイルについても同様です。
- IFS/COPY ファイルの使用については、「Rational Development Studio for i ILE RPG プログラマーの手引き」を参照してください。
- オプションで、少なくとも 1 つのスペースとコメント。
ヒント:
アプリケーションの維持を容易にするために、エクスポート・プロシージャーのプロトタイプを 別のソース・メンバーに入れることができます。これを行う場合には、そのメンバーのための ⁄COPY 指示または ⁄INCLUDE 指示を、エクスポート・プロシージャーが入っているモジュールと エクスポート・プロシージャーに対する呼び出しが入っているすべてのモジュールの両方に必ず入れてください。
図 1 は、/COPY 指示ステートメントおよび /INCLUDE 指示ステートメントの例をいくつか示しています。
図 1. /COPY コンパイラー指示ステートメントおよび /INCLUDE コンパイラー指示ステートメントの例
C/COPY MBR1 1
I/INCLUDE SRCFIL,MBR2 2
O/COPY SRCLIB/SRCFIL,MBR3 3
O/INCLUDE "SRCLIB!"/"SRC>3","MBR¬3" 4
O/COPY /dir1/dir2/file.rpg 5
O/COPY /dir1/dir2/file 6
O/COPY dir1/dir2/file.rpg 7
O/COPY "ifs file containing blanks" 8
O/COPY 'ifs file containing blanks' 8
- 1
- ソース・ファイル QRPGLESRC のメンバー MBR1 からコピーします。ファイル QRPGLESRC を検索するために現行ライブラリー・リストが使用されます。ファイルがライブラリー・リストで見付からない場合、 検索は IFS に進み、ファイル MBR1、MBR1.rpgle、または MBR1.rpgleinc をインクルード・サーチ・パスから検索します。IFS ソース・ファイルの使用について詳しくは、「Rational Development Studio for i ILE RPG プログラマーの手引き」を参照してください。
- 2
- ファイル SRCFIL のメンバー MBR2 からコピーします。 ファイル SRCFIL を検索するために現行ライブラリー・リストが使用 されます。 ファイル名とメンバー名を区切るためにコンマが使用されることに注意 してください。ファイルがライブラリー・リストで見付からない場合、検索は IFS に進み、ファイル SRCFIL, MBR 1 (.rpgle または .rpgleinc 接尾部が付いている可能性があります) をインクルード・サーチ・ パスから検索します。
- 3
- ライブラリー SRCLIB にある SRCFIL ファイルのメンバー MBR3 またはディレクトリー SRCLIB にある IFS ファイル SRCFIL, MBR3 からコピーしま す。
- 4
- ライブラリー "SRCLIB!" にあるファイル "SRC>3" のメンバー "MBR¬3" から コピーします。
- 5
- ディレクトリー /dir1/dir2 にある IFS ファイル file.rpg からコピーします。
- 6
- ディレクトリー /dir1/dir2 にあるファイル、file.rpgleinc、または file.rpgle からコピーします。
- 7
- IFS サーチ・パスを使用して、ディレクトリー dir1/dir2 を検索し、ディレクトリー dir1/dir2 にある IFS ファイル file.rpg からコピーします。
- 8
- 名前にブランクがあるファイルからコピーします。