目的
テスト式に基づいて条件付きでコードを実行します。
構文
%[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 文と同じです。
例
%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);
説明
%IF 文では、プリプロセッサ式の値に応じてスキャンの流れを制御できます。
プリプロセッサ式が評価されます。評価の結果が 1 以上の場合は、clause-1 が実行され、clause-2 は無視されます (存在する場合)。評価の結果が 0 の場合は、clause-1 は無視され、clause-2 が実行されます (存在する場合)。いずれの場合も、IF 文の直後からスキャンが再開されますが、いずれかの句の %GOTO によって他の場所で再開されることもあります。%IF 文は、Open PL/I の IF 文の入れ子の規則に従って入れ子にすることができます。