SELECT block
The 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 SELECT and DEFAULT parts.
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 ENDSELECT).
It should be clear that SELECT blocks can be rewritten as IF blocks, with the checks on the IF and 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 IF and 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.