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

SELECT ステートメント

SELECT グループを使用すれば、複数経路の条件付き分岐を行うことができます。 SELECT グループは、SELECT ステートメント、オプションの WHEN ステートメント (1 つまたは複数)、オプションの OTHERWISE ステートメント、および END ステートメントで構成されます。

注:
条件接頭語は、OTHERWISE ステートメントでは使用することはできません。
構文図を読む構文図をスキップする                          .---------------------------.
                          V                           |
>>-SELECT--+--------+--;----+-----------------------+-+--------->
           '-(exp1)-'       |       .-,----.        |
                            |       V      |        |
                            '-WHEN(---exp2-+-)unit;-'
 
>--+--------------------+--------------------------------------><
   '-OTHERWISE--unit--;-'
 

省略形: OTHERWISE の場合は OTHER

SELECT (exp1)
SELECT ステートメントとこれに対応した END ステートメントが、 SELECT グループと集合的に呼ばれるステートメントのグループを区切ります。 SELECT ステートメント内の式が計算され、その値が保管されます。
WHEN (exp2, exp2, ...) unit
1 つまたは複数の式を指定します。これらの式は計算されて、 SELECT ステートメントにより保管された値と比較されます。

保管されたものと同じ値を持つ式が見付かると、その時点で、 WHEN ステートメント内の式の計算は終了し、 その WHEN ステートメントのユニットが実行されます。 保管されたものと同じ値を持つ式が見付からなかった場合は、 OTHERWISE ステートメントのユニットが実行されます。

WHEN ステートメントにラベルを付けることはできません。

OTHERWISE unit
先行の WHEN ステートメントのすべてのテストが失敗した場合に 実行されるユニットを指定します。

OTHERWISE ステートメントを省略した場合、SELECT グループが 実行された結果としてどのユニットも選択されなかったときは、 ERROR 条件が起こります。

OTHERWISE ステートメントにラベルまたは条件接頭語を付けてはなりません。

unit
各ユニットは、有効な単一ステートメント、グループ、 または開始ブロックのいずれかです。 DECLARE、DEFAULT、END、ENTRY FORMAT、 PROCEDURE、および %statement ステートメントは無効です。 それぞれのユニットには、制御の移動を指定する ステートメント (例えば、GO TO) が含まれていてもかまいません。 そのようなステートメントを指定すれば、 SELECT ステートメントの正規の順序を指定変更することができます。

exp1 を省略した場合、それぞれの exp2 が計算され、必要に応じてビット・ストリングに変換されます。 そのストリングのいずれかのビットが '1'B であれば、 その WHEN ステートメントのユニットが実行されます。 すべてのビットが 0 であるか、そのストリングがヌルであれば、 OTHERWISE ステートメントのユニットが実行されます。

WHEN または OTHERWISE ステートメントのユニットが実行されたあとは、 そのユニット内で制御の通常の流れが変更されたのでない限り、 SELECT グループの次のステートメントに制御が渡されます。

exp1 を指定した場合は、それぞれの exp2 は、 次の比較式がスカラー・ビット値を持たねばなりません。

  (exp1) = (exp2)

exp1exp2 は、両方ともスカラー式でなければなりません。 したがって、配列、構造体、および和集合が exp1exp2 のいずれかで使用される可能性がありますが、計算後の式はスカラー値でなければなりません。


Terms of use | Feedback

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