Routines (alphabetical) > Routines: C > CASE

# CASE

The CASE statement selects one, and only one, statement or block of statements for execution, depending on the value of an expression. This expression is called the case selector expression. Each statement that is part of a CASE statement is preceded by an expression that is compared to the value of the selector expression. CASE executes by comparing the CASE expression with each selector expression in the order written. If a match is found, the statement is executed and control resumes directly below the CASE statement.

The ELSE clause of the CASE statement is optional. If included, it matches any selector expression, causing its code to be executed. For this reason, it is usually written as the last clause in the CASE statement. The ELSE statement is executed only if none of the preceding statement expressions match. If an ELSE clause is not included and none of the values match the selector, an error occurs and program execution stops.

The BREAK statement can be used within CASE statements to force an immediate exit from the CASE.

In this CASE statement, only one clause is selected, and that clause is the first one whose value is equal to the value of the case selector expression.

Tip: Each clause is tested in order, so it is most efficient to order the most frequently selected clauses first.

For more information on the difference between CASE and SWITCH, see CASE Versus SWITCH.

Note: When using CASE with floating point values in the case expression, IDL may return unexpected results when the value being tested is not floating point (i.e., integer).

## Examples

This example illustrates how the CASE statement, unlike SWITCH, executes only the one statement that matches the case expression:

x=2

CASE x OF

1: PRINT, 'one'

2: PRINT, 'two'

3: PRINT, 'three'

4: PRINT, 'four'

ELSE: PRINT, 'Not one through four'

ENDCASE

IDL Prints:

two

For more examples, please see Additional Examples near the bottom of this topic.

## Syntax

CASE expression OF

expression: statement(s)

...

expression: statement(s)

[ ELSE: statement(s) ]

ENDCASE

## Additional Examples

More than one statement can be executed when a match for the case selector expression is encountered. To execute multiple statements, surround the statements with BEGIN...END statements:

x=5

CASE x OF

1: PRINT, 'one'

2: PRINT, 'two'

3: PRINT, 'three'

4: PRINT, 'four'

ELSE: BEGIN

PRINT, 'You entered: ', x

PRINT, 'Please enter a value between 1 and 4'

END

ENDCASE

Another example shows the CASE statement with the number 1 as the selector expression of the CASE. One is equivalent to true and is matched against each of the conditionals.

CASE 1 OF

(X GT 0) AND (X LE 50): Y = 12 * X + 5

(X GT 50) AND (X LE 100): Y = 13 * X + 4

(X LE 200): BEGIN

Y = 14 * X - 5

Z = X + Y

END

ELSE: PRINT, 'X has an illegal value.'

ENDCASE

In this CASE statement, only one clause is selected, and that clause is the first one whose value is equal to the value of the case selector expression.

Tip: Each clause is tested in order, so it is most efficient to order the most frequently selected clauses first.

## Version History

Original | Introduced

## See Also

BEGIN...END, BREAK, Case vs Switch, CONTINUE, FOR, FOREACH, GOTO, IF...THEN...ELSE, REPEAT...UNTIL, SWITCH, WHILE...DO

IDL Programming