Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, プログラミング・ガイド

%INCLUDE ステートメントの使用

%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 ステートメントは 組み込まれていません。)

z/OS UNIX コンパイルの場合

実際の組み込みファイルの名前は、UPPERINC を指定しない限り、 小文字でなければなりません。 例えば、%include sample という include ステートメントを使用した場合、コンパイラーは、sample.inc というファイルを 検出しますが SAMPLE.inc というファイルは検出しません。%include SAMPLE という include ステートメントを使用した 場合でも、コンパイラーは sample.inc を検索します。

コンパイラーは次の順序で INCLUDE ファイルを探します。

  1. 現行ディレクトリー
  2. -I フラグまたは INCDIR コンパイラー・オプションで指定された ディレクトリー
  3. /usr/include ディレクトリー
  4. INCPDS コンパイラー・オプションで指定された PDS

コンパイラーが検出した最初のファイルがソースに組み込まれます。

%INCLUDE ステートメントによってソース・テキスト内に %PROCESS ステートメントが 組み込まれると、コンパイル・エラーになります。

図 1 は、%INCLUDE ステートメントを使って、プロシージャー TEST 内に FUN 用のソース・ステートメントを組み込む方法を示しています。 ライブラリー HPU8.NEWLIB が修飾名 PLI.SYSLIB を持つ DD ステートメント に定義されていますが、これはこのジョブ用のカタログ式プロシージャーの ステートメントに付け加えられます。 ソース・ステートメント・ライブラリーが SYSLIB という名前 の DD ステートメントで定義されているため、%INCLUDE ステートメント に DD 名を入れる必要はありません。

ソース・プログラムや、入れようとするテキストにマクロ・ステートメントが まったく入っていなければ、プリプロセッサーを呼び出す必要はありません。

図 1. ライブラリーからのソース・ステートメントの組み込み
 //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
 //

Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)