目的
CASE ステートメントは、CASE 構造体の中の CASE ステートメント・ブロックを初期化します。また、このステートメントは 1 つのブロックを実行のために選択するための、非常に簡潔な構文を備えています。
構文
>>-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
関連情報