SELECT block has the following form:
SELECT variable CASE expressionA statementsA CASE expressionB statementsB DEFAULT statementsC ENDSELECT
The value of the selection variable (denoted by variable in the
SELECT part) is compared with the value of the expression in each of the
CASE parts in turn.
If there's a match, the statements in the (first) matching
CASE part are executed.
There can be any number of
CASE parts between the
If there is no match, the statements in the
DEFAULT part are executed.
There does not need to be a
DEFAULT part but if one is present it must be the last part (immediately before the
It should be clear that
SELECT blocks can be rewritten as
IF blocks, with the checks on the
ELSEIF parts being equality checks on the selection variable.
For example, the following code fragments are equivalent:
SELECT x CASE 22 WriteF('x is 22\n') CASE (y+z)/2 WriteF('x is (y+x)/2\n') DEFAULT WriteF('x isn't anything significant\n') ENDSELECT IF x=22 WriteF('x is 22\n') ELSEIF x=(y+z)/2 WriteF('x is (y+x)/2\n') ELSE WriteF('x isn't anything significant\n') ENDIF
Notice that the
ELSEIF parts come from the
CASE parts, the
ELSE part comes from the
DEFAULT part, and the order of the parts is preserved.
The advantage of the
SELECT block is that it's much easier to see that the value of
x is being tested all the time, and also we don't have to keep writing `x=' in the checks.
Go to the Next or Previous section, the Detailed Contents, or the Amiga E Encyclopedia.