%IF

目的

テスト式に基づいて条件付きでコードを実行します。

構文

%[label:]... IF expr %THEN clause-1 [%ELSE clause-2]

パラメーター

expr は、長さが ≥ 1 のビット文字列のスカラー値に評価される任意の式です。test-expression は、文字列のビットのいずれかが 1 であれば真と見なされ、すべてのビットが 0 の場合にのみ偽と見なされます。clause-n は、任意の単一のプリプロセッサ文 (%DECLARE、%PROCEDURE、%END、%DO 以外)、またはプリプロセッサ DO グループです。それ以外の説明は、Open PL/I の IF 文と同じです。

説明

%IF 文では、プリプロセッサ式の値に応じてスキャンの流れを制御できます。

プリプロセッサ式が評価されます。評価の結果が 1 以上の場合は、clause-1 が実行され、clause-2 は無視されます (存在する場合)。評価の結果が 0 の場合は、clause-1 は無視され、clause-2 が実行されます (存在する場合)。いずれの場合も、IF 文の直後からスキャンが再開されますが、いずれかの句の %GOTO によって他の場所で再開されることもあります。%IF 文は、Open PL/I の IF 文の入れ子の規則に従って入れ子にすることができます。

%DECLARE (A,B) CHARACTER;
%A ='CONTROL_1';
%B = 'NAME';
%IF A = 'CONTROL_1' 
%THEN %DO;
   RES = B + F(X); 
%END;
%ELSE %DO;
   RES = B - F(X) + SQRT(X);
   LST = F(X) + 1; 
%END;

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

RES = NAME + F(X);