case
The EGL case statement marks the start of multiple sets of statements, where at most only one of those sets is run. The case statement is equivalent to a C or Java switch statement that has a break at the end of each case clause.
- criterion
- An item, constant, expression, literal, or system variable, including sysVar.eventKey or sysVar.systemType.
If you specify criterion, each of the subsequent when clauses (if any) must contain one or more instances of matchExpression. If you do not specify criterion, each of the subsequent when clauses (if any) must contain a logical expression.
- when
- The beginning of a clause that is invoked only in these cases:
- You specified a criterion, and the when clause is the first to contain a matchExpression that is equal to the criterion; or
- You did not specify a criterion, and the when clause is the first to contain a logical expression that evaluates to true.
If you wish the when clause to have no effect when invoked, code the clause without EGL statements.
A case statement may have any number of when clauses.
- matchExpression
- One of the following values:
- A numeric or string expression
- A symbol for comparison to sysVar.eventKey or sysVar.systemType
The primitive type of matchExpression value must be compatible with the primitive type of the criterion value. For details on compatibility, see Logical expressions.
- logicalExpression
- A logical expression.
- statement
- An EGL statement.
- otherwise
- The beginning of a clause that is invoked if no when clause runs.
After the statements run in a when or otherwise clause, control passes to the EGL statement that immediately follows the end of the case statement. Control does not fall through to the next when clause under any circumstance. If no when clause is invoked and no default clause is in use, control also passes to the next statement immediately folowing the end of the case statement, and no error situation is in effect.
An example of a case statement is as follows:
case (myRecord.requestID) when (1) myFirstFunction(); when (2, 3, 4) try call myProgram; onException myCallFunction(12); end otherwise myDefaultFunction(); endIf a single clause includes multiple instances of matchExpression (2, 3, 4 in the previous example), evaluation of those instances is from left to right, and the evaluation stops as soon as one matchExpression is found that corresponds to the criterion value.
Related tasks
Syntax diagram
Related reference
EGL statements
Logical expressions
sysVar.eventKey
sysVar.systemType