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

IF ステートメント

IF ステートメントは、式を計算し、計算結果に応じて実行の流れを制御します。 したがって、IF ステートメントは、条件分岐です。

注:
条件接頭語は、ELSE ステートメントでは使用することはできません。
構文図を読む構文図をスキップする>>-IF--expression--THEN--unit1--+-------------+----------------><
                                '-ELSE--unit2-'
 
expression
RULES(LAXIF) が使用されない場合は、式で属性 BIT(1) NONVARYING を使用する必要があります。

式の中で & または | (もしくはその両方の) 演算子が 使用されている場合は、それらの演算子は、各種演算の組み合わせに 説明した方法で計算されます。

unit
有効な単一のステートメント、グループ、または開始ブロックのいずれかです。 DECLARE、DEFAULT、END、FORMAT、PROCEDURE、 または % ステートメントを除いて、 すべての単一ステートメントは有効と見なされ、実行可能です。 非実行ステートメントを指定すると、結果は予想できません。 それぞれのユニットには、制御の移動を指定する ステートメント (例えば、GO TO) が含まれていてもかまいません。 そのようなステートメントを使用すれば、IF ステートメントの 正規の順序を無効にすることができます。

それぞれのユニットには、ラベルを付けることも、条件接頭語を付けることもできます。

IF は複合ステートメントです。 最後のユニットを終了させるセミコロンは、IF ステートメントも終了させます。

ストリング式のいずれかのビットが '1'B であれば、 unit1 が実行され、unit2 は存在していても無視されます。 すべてのビットが '0'B であるか、 ストリングがヌルであれば、unit1 は無視され、 unit2 (存在していれば) が実行されます。

IF ステートメントはネストさせることができます。 つまり、一方または両方のユニットが IF ステートメントであってもかまいません。 それぞれの ELSE は、同じブロックまたは DO グループに含まれている IF ステートメントのうち、最も内側にあって、しかも対応する ELSE を持っていない IF に関連付けられます。したがって、所要の制御順序を指定するために、ヌル・ステートメントを持つ ELSE が必要になることがあります。 例えば、B および C が定数である場合、

if A = B then

·
·
·
else if A = C then
·
·
·
else
·
·
·

上記の例は、次の例と同等ですが、より巧みにコード化されています。

select( A );
when ( B )

·
·
·
when ( C )
·
·
·

·
·
·
end;

Terms of use | Feedback

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