Node: case, Next: CBoolean, Previous: Cardinal, Up: Reference

### case

#### Synopsis

         case expression of
           selector: statement;
           ...
           selector: statement;
         end;

or, with alternative statement sequence:

         case expression of
           selector: statement;
           ...
           selector: statement;
         otherwise  { ``else'' instead of ``otherwise'' is allowed }
           statement;
           ...
           statement;
         end;

or, as part of the invariant `record` type definition:

         foo = record
           field_declarations
         case bar: variant_type of
           selector: (field_declarations);
           selector: (field_declarations);
           ...
         end;

or, without a variant selector field,

         foo = record
           field_declarations
         case variant_type of
           selector: (field_declarations);
           selector: (field_declarations);
           ...
         end;

#### Description

`case` opens a case statement. For further description see case Statement.

For `case` in a variant record type definition, see Record Types.

#### Conforming to

The `case` statement is defined in ISO 7185 Pascal and supported by all known Pascal variants.

According to ISO 7185 Pascal, the selector type must be a named type. UCSD Pascal and Borland Pascal allow any ordinal type here.

The alternative statement execution with `otherwise` it is an Extended Pascal extension; with `else` it is a Borland Pascal extension. In GNU Pascal, both are allowed.

#### Example

         program CaseDemo;
         var
           Foo: String (10);
           Bar: Integer;
         begin
           WriteLn ('Enter up to ten arbitrary characters:');
           ReadLn (Foo);
           for Bar := 1 to Length (Foo) do
             begin
               Write (Foo[Bar], ' is ');
               case Foo[Bar] of
                 'A' .. 'Z', 'a' .. 'z':
                   WriteLn ('an English letter');
                 '0' .. '9':
                   WriteLn ('a number');
               otherwise
                 WriteLn ('an unrecognized character')
               end
             end
         end.

#### See also

Keywords, if Statement, Record Types, else, otherwise