%ACTIVATE

目的

識別子を、置換するアクティブな識別子にします。

構文

%[label:]...ACTIVATE ident[SCAN|RESCAN|NORESCAN][,ident[SCAN|RESCAN|NORESCAN]]...;

省略形:%ACT は %ACTIVATE の省略形です。

パラメーター

各識別子は、プリプロセッサ変数、プリプロセッサ プロシージャ名、またはプリプロセッサ組み込み関数名でなければなりません。

説明

プリプロセッサ変数は、宣言すると自動的にアクティブになります。非アクティブ化するには %DEACTIVATE 文を使用し、再アクティブ化するには %ACTIVATE 文を使用します。

RESCAN、SCAN、NORESCAN のいずれも指定されていない場合は、RESCAN と想定されます。RESCAN では、置換後にテキストが再スキャンされて、さらなる置換が適用されるかどうかが確認されます。SCAN および NORESCAN はその反対です。SCAN は NORESCAN と同意です。

%ACTIVATE 文に記述された識別子は、置換するアクティブな識別子として扱われます。つまり、その識別子が以降にプリプロセッサ文以外の文に記述されていた場合、アクティブであれば置換処理が開始されます。ただし、コメント内にある場合や、一重引用符で囲まれている場合を除きます。

例 1。

%DECLARE A FIXED, B CHARACTER;
%DEACTIVATE B;
%A = 24;
%B = 'VAR_NAME'; 
NUM = B + A; 
%ACTIVATE B; 
%DEACTIVATE A; 
NUM = B + A;

この例で生成されるテキストは次のようになります。

NUM = B + 24;
NUM = VAR_NAME + A;

例 2。

%DECLARE (C,D) CHARACTER;
%C = D**2;
%D = 'NUM';
NUM = C;
%ACTIVATE C NORESCAN;
NUM = C;

この例で生成されるテキストは次のようになります。

NUM = NUM**2; 
NUM = D**2;

制約事項

%ACTIVATE 文をプリプロセッサ プロシージャ内に記述することはできません。再スキャン操作での置換は 1023 文字までに制限されます。

プリプロセッサ プロシージャへの参照は、置換する識別子を再スキャンする際には認識されません。