Go to the first, previous, next, last section, table of contents.

CASE Statement

CASE <expr> OF { "|" <case> ... } [ ELSE <stmts> ] END
  where
    <case> = { <label> "," ... } "=>" <stmts>
    <label> = <const expr> [ ".." <const expr> ]

The case statement is a specialization of the IF/THEN/ELSIF statement that allows discrimination among a set of possible values of some ordinal expression <expr>. If a case is encountered that is not handled by one of the arms of the case statement, the ELSE arm is taken; if no ELSE arm is present in this situation, a checked run-time error occurs.

CASE IO.GetChar() OF
| 'a'..'z' => IO.Put("Lowercase");
| 'A'..'Z' => IO.Put("Uppercase");
| '0'..'9' => IO.Put("Digit");
| '!', '.', ':', ';', '?' => IO.Put("Punctuation");
ELSE
  IO.Put("Other")
END

The compiler will generate a warning if no ELSE arm appears and not all cases are covered. This can be ignored at risk of a possible runtime error, or an empty ELSE arm can be inserted to pacify the compiler and runtime system.


Go to the first, previous, next, last section, table of contents.