The SELECT statement causes zero, one, or more of several
statements to be executed. The SELECTONE statement causes zero
or one statements to be executed. The execution depends on the
value of an ordinal expression called the select selector.
The SELECT and SELECTONE statements look much like the CASE
statement except for one very powerful feature. Namely, the
labels of a SELECT or SELECTONE statement can be run-time
expressions as opposed to the CASE statement which only allows
constant expressions.
Syntax:
SELECT select-selector OF
[[{{select-label-list},...: statement};...]]
[[ [[OTHERWISE {statement};...]]
[[ALWAYS {statement};...]] ]]
[[;]]
END
SELECTONE select-selector OF
[[{{select-label-list},...: statement};...]]
[[ OTHERWISE {statement};... ]]
[[;]]
END
The 'select-selector' is an expression of an ordinal type.
The 'select-label-list' is one or more select labels of the same
ordinal type as the select selector, separated by commas. A
select label can be a single expression, such as 1, or a range
of expressions, such as 5..10. The expressions in a
'select-label-list' can be full run-time expressions.
When two expressions are provided as a lower and upper bound,
they must be of the same ordinal type. There is no check to
ensure that the lower bound expression is less than or equal to
the upper bound expression. If that occurs then there are no
values of the select-selector that can be in the range.
The 'statement' is any statement to be executed depending on the
values of both the select-selector and the select-label.
The SELECT statement checks to see if the value of the
select-selector is contained in the select-label-list. If so,
then the corresponding statement is executed. The
select-label-lists are checked in the same lexical order that
they appear in the source file. The same value can appear in
more than one select-label-list. All corresponding statements
to select-label-lists are executed if the value is contained in
the select-label-list. By contrast, the SELECTONE statement
stops processing after it executes the first statement that
corresponds to a select-label-list that contains the
select-selector value.
The optional OTHERWISE and ALWAYS clauses can appear in either
order. The ALWAYS clause is always executed. The OTHERWISE
clause is executed only if none of the prior statements (except
for an optional ALWAYS statement) have been executed.
The syntax for the SELECTONE statement is almost identical but
does not provide for an ALWAYS clause.
Additional Information:
explode
extract