%INCLUDE ステートメントは、コンパイル単位内の指定された点に 追加の PL/I ファイルを組み込むために使用します。%INCLUDE を使ってライブラリーにあるソース・テキスト を PL/I プログラムに組み込む方法についての説明は、「PL/I 言語解説書」にあります。
ライブラリー とは、メンバーと呼ばれるその他のデータ・セット を保管するのに使用できる z/OS 区分データ・セットです。 %INCLUDE ステートメントを使って PL/I プログラムに挿入しようとする ソース・テキストは、ライブラリー内のメンバーとして存在していなければ なりません。ソース・ステートメント・ライブラリー (SYSLIB) では、ソース・ステートメント・ライブラリーをコンパイラーに対して定義するプロセスについてさらに説明します。
次のステートメント
%INCLUDE DD1 (INVERT);
は、DD1 という名前の DD ステートメントで定義されたライブラリー のメンバー INVERT 内のソース・ステートメントを、ソース・プログラム に連続して挿入することを指定します。 コンパイル・ジョブ・ステップには、適切な DD ステートメントが 入っていなければなりません。
dd 名を省略すると、SYSLIB という dd 名 がとられます。 その場合、SYSLIB という名前で DD ステートメントを組み込む 必要があります。(IBM 提供のカタログ式プロシージャーの場合は、 コンパイル・プロシージャー・ステップにこの名前の DD ステートメントは 組み込まれていません。)
実際の組み込みファイルの名前は、UPPERINC を指定しない限り、 小文字でなければなりません。 例えば、%include sample という include ステートメントを使用した場合、コンパイラーは、sample.inc というファイルを 検出しますが SAMPLE.inc というファイルは検出しません。%include SAMPLE という include ステートメントを使用した 場合でも、コンパイラーは sample.inc を検索します。
コンパイラーは次の順序で INCLUDE ファイルを探します。
コンパイラーが検出した最初のファイルがソースに組み込まれます。
%INCLUDE ステートメントによってソース・テキスト内に %PROCESS ステートメントが 組み込まれると、コンパイル・エラーになります。
図 1 は、%INCLUDE ステートメントを使って、プロシージャー TEST 内に FUN 用のソース・ステートメントを組み込む方法を示しています。 ライブラリー HPU8.NEWLIB が修飾名 PLI.SYSLIB を持つ DD ステートメント に定義されていますが、これはこのジョブ用のカタログ式プロシージャーの ステートメントに付け加えられます。 ソース・ステートメント・ライブラリーが SYSLIB という名前 の DD ステートメントで定義されているため、%INCLUDE ステートメント に DD 名を入れる必要はありません。
ソース・プログラムや、入れようとするテキストにマクロ・ステートメントが まったく入っていなければ、プリプロセッサーを呼び出す必要はありません。
//OPT4#9 JOB
//STEP3 EXEC IBMZCBG,PARM.PLI='INC,S,A,X,NEST'
//PLI.SYSLIB DD DSN=HPU8.NEWLIB,DISP=OLD
//PLI.SYSIN DD *
TEST: PROC OPTIONS(MAIN) REORDER;
DCL ZIP PIC '99999'; /* ZIP CODE */
DCL EOF BIT INIT('0'B);
ON ENDFILE(SYSIN) EOF = '1'B;
GET EDIT(ZIP) (COL(1), P'99999');
DO WHILE(¬EOF);
PUT SKIP EDIT(ZIP, CITYFUN(ZIP)) (P'99999', A(16));
GET EDIT(ZIP) (COL(1), P'99999');
END;
%PAGE;
%INCLUDE FUN;
END; /* TEST */
//GO.SYSIN DD *
95141
95030
94101
//