目的
CASE ステートメントは、いくつかのステートメント・ブロックの中から 1 つを実行のために選択するための簡潔な構文を備えている、CASE 構文の中の CASE ステートメント・ブロックを開始します。
構文
>>-CASE--case_selector--+---------------------+---------------->< '-case_construct_name-' |
case_selector
>>-+-DEFAULT------------------------------------------+-------->< | .-,--------------------------------------. | | V | | '-(----+-case_value-------------------------+-+--)-' +-low_case_value--:--high_case_value-+ +-low_case_value--:------------------+ '-:--high_case_value-----------------' |
規則
SELECT CASE ステートメントにより決定するケース指標 は、CASE ステートメント内の各 case_selector と 比較されます。 一致すると、CASE ステートメントに関連する stmt_block が実行されます。 一致しないと、stmt_block は実行されません。 どのケース値範囲もオーバーラップすることはできません。
一致があるかどうかは次のように判別します。
複数の一致があってはなりません。 一致が 1 つの場合、その一致した case_selector に関連 するステートメント・ブロックが実行され、ケース構文の実行が完了します。 一致がない場合、ケース構文の実行が完了します。
case_construct_name を指定する場合は、SELECT CASE ステートメントおよび END SELECT ステートメントに指定した名前に一致してい なければなりません。
DEFAULT はデフォルトの case_selector です。 CASE ステートメントのうち case_selector と して DEFAULT を持てるのは 1 つだけです。
各ケース値は、SELECT CASE ステートメントに定義してある case_expr と同じデータ型でなければ なりません。 型なし定数または BYTE 名前付き定数が case_selectors で検出された場合、その定数は case_expr のデータ型に変換されます。
case_expr およびケース値が文字型の場合、それらの長さは異なってもかまいません。 -qctyplss コンパイラー・オプションを指定する と、case_expr として使用される文字定数が文字型として 残ります。文字定数式は型なし定数としては処理されません。
例
ZERO: SELECT CASE(N) CASE DEFAULT ZERO ! Default CASE statement for ! CASE construct ZERO OTHER: SELECT CASE(N) CASE(:-1) ! CASE statement for CASE ! construct OTHER SIGNUM = -1 CASE(1:) OTHER SIGNUM = 1 END SELECT OTHER CASE (0) SIGNUM = 0 END SELECT ZERO
関連情報