control structure
do select numeric-expression ((case selector (| selector)* local-scope)+ (else local-scope)? done
Evaluates a numeric expression, compares it against the numeric values or ranges in the case
alternatives, then selects the alternative that applies. It is an error to have more than one case
alternative apply to the same value.
If none of the case
alternatives apply, and there is an else
declaration, then the else
declaration is selected. Otherwise, none of the parts are selected.
If a part was selected, the actions in that part are performed. Otherwise, none of the actions are performed.
The numeric ranges are inclusive. If the value falls between the upper and lower bounds, or matches either bound, the test succeeds and that case
alternative is selected.
It is an error for a selecting value to match more than one case
alternative. Each range set in a do select
must describe a set of values separate from those in all the other range sets. This provision provides error detection, avoids "what happens when" questions, and allows for optimization.
This code sample shows how do select
is used to evaluate a numeric expression, and then compare that expression against the numeric values or ranges in the case
alternative, in order to select the alternative that applies.
If none of the case
alternatives apply and there is an else
part, then the else
is selected.
local integer val ... do select val case 1 | 3 | 5 ; do something case 2 | 4 | 6 to 10 ; do something else else ; do something different done