CASE directive

Introduces a "multiple-selection" control structure.


No options


Parameter

    expression
Expression which is evaluated to an integer, indicating which set of statements to execute


Description

A multiple-selection control structure consists of several alternative blocks of statements. The first of these is introduced by a CASE statement. This has a single parameter, which is an expression that must yield a single number. Subsequent blocks are each introduced by an OR statement. There can then be a final block, introduced by an ELSE statement. The whole structure is terminated by an ENDCASE statement. Thus the general form is: first

          CASE expression

            statements

then either none, one or several blocks of statements of the form

          OR

            statements

then, if required, a block of the form

          ELSE

            statements

and finally the statement

          ENDCASE

GenStat rounds the expression in the CASE expression to the nearest integer, k say, and then executes the kth block of statements. If there is no kth block present (as for example if k is negative) the block of statements following the ELSE statement is executed, if there is such a block; otherwise an error diagnostic is given.

   This example prints the salient details about each day in the song The twelve days of Christmas. The scalar Day indicates which day it is.

CASE Day

  PRINT 'a partridge in a pear tree'

OR

  PRINT 'two turtle doves and a partridge in a pear tree'

OR

  PRINT 'three French hens, two turtle doves \

    and a partridge in a pear tree'

OR

  PRINT 'four calling birds, three French hens ...'

OR

  PRINT 'five gold rings ...'

OR

  PRINT 'six geese a-laying ...'

OR

  PRINT 'seven swans a-swimming ...'

OR

  PRINT 'eight maids a-milking ...'

OR

  PRINT 'nine drummers drumming ...'

OR

  PRINT 'ten pipers piping ...'

OR

  PRINT 'eleven ladies dancing ...'

OR

  PRINT 'twelve lords a-leaping ...'

ELSE

  PRINT 'sorry, no delivery today'

ENDCASE


CASE statements can be nested to any depth.


Options: none.

Parameter: unnamed.