Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, 言語解説書

%INCLUDE ステートメント

%INCLUDE が実行されると、そのステートメントで指定された外部テキストが、 プリプロセッサー入力の中に、%INCLUDE ステートメントの代わりとして 組み込まれます。 そのようなテキストがいったん組み込まれると、それは組み込み済み テキスト と呼ばれます。そのテキストは、プリプロセッサー・ステートメント、 リスト制御ステートメント、および PL/I 原始ステートメントで 構成することができます。

%INCLUDE ステートメントの構文は、%INCLUDE ディレクティブで説明しています。

datasetmember name の各ペアは、ソース・プログラムに組み込まれる 外部テキストを識別します。

走査は、包含されるテキストの最初の文字から続行されます。 包含されるテキストは、プリプロセッサー入力と同じ方法で走査されます。 ですから、包含されるテキストを、形成するプリプロセッサー出力の基にすることができます。

%INCLUDE ステートメントはネストすることができます。 つまり、組み込まれたテキストの中に、%INCLUDE ステートメントがあってもかまいません。

組み込み済みテキスト内の %GO TO ステートメントが制御権を移動することができる のは、同じ組み込みファイルの内部の点に限られています。 %GOTO ステートメントよりも、その %GOTO ステートメントのターゲット・ラベルが 先に来てはなりません。

組み込み済みテキスト内のプリプロセッサー・ステートメント、DO グループ、 SELECT グループ、およびプロシージャーは完結していなければなりません。 例えば、%IF ステートメントの半分が組み込みテキスト内にあり、残りの 半分がプリプロセッサー入力の別の部分にあるということは許されません。

プリプロセッサー入力と組み込み済みテキスト内に、%INCLUDE 以外には プリプロセッサー・ステートメントが含まれていない場合は、 プリプロセッサーの実行を省略することができます。 (その場合、INCLUDE コンパイル時オプションを使用する必要があります。)

例えば、データ・セット SYSLIB のメンバー PAYRL に下記のテキスト (構造体宣言) が収められているとします。

DECLARE 1 PAYROLL,
          2 NAME,
            3 LAST   CHARACTER (30) VARYING,
            3 FIRST  CHARACTER (15) VARYING,
            3 MIDDLE CHARACTER (3) VARYING,
          2 CURR,
            3 (REGLAR, OVERTIME) FIXED DECIMAL (8,2),
          2 YTD LIKE CURR;

このとき、下記のプリプロセッサー・ステートメントが実行されると、

%DECLARE PAYROLL CHARACTER;
%PAYROLL='CUM_PAY';
%INCLUDE PAYRL;
%DEACTIVATE PAYROLL;
%INCLUDE PAYRL;

2 つの構造体宣言がプリプロセッサー出力テキスト内に生成されます。 それら 2 つの構造体宣言は名前だけが異なっており、それぞれ CUM_PAY と PAYROLL という名前です。

最初の %INCLUDE ステートメントが実行されると、PAYRL 内のテキストが プリプロセッサー入力の中に組み込まれます。 この組み込み済みテキスト内の ID PAYROLL がプリプロセッサー走査で検出される と、ID PAYROLL はアクティブのプリプロセッサー変数 PAYROLL の現行値 (つまり CUM_PAY) で 置き換えられます。 それ以上の包含されたテキストを走査しても、追加の置換は行われません。 次に、%DEACTIVATE ステートメントがプリプロセッサー走査で検出され、 プリプロセッサー変数 PAYROLL が非活動化されます。 2 番目の %INCLUDE ステートメントが実行されると、PAYRL 内のストリングが もう一度プリプロセッサー入力の中に組み込まれます。 しかし、今回は、この組み込み済みテキストが走査されても置き換えはまったく 行われません。


Terms of use | Feedback

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