Copyright Digital Equipment Corp. All rights reserved.

SELECT[ONE]

 The SELECT statement  causes  zero,  one,  or  more  of  several
 statements  to be executed.  The SELECTONE statement causes zero
 or one statements to be executed.  The execution depends on  the
 value of an ordinal expression called the select selector.

 The SELECT and SELECTONE statements  look  much  like  the  CASE
 statement  except  for  one  very powerful feature.  Namely, the
 labels of a  SELECT  or  SELECTONE  statement  can  be  run-time
 expressions  as  opposed to the CASE statement which only allows
 constant expressions.

 Syntax:

    SELECT select-selector OF
           [[{{select-label-list},...: statement};...]]
           [[ [[OTHERWISE {statement};...]]
              [[ALWAYS {statement};...]] ]]
           [[;]]
       END

    SELECTONE select-selector OF
           [[{{select-label-list},...: statement};...]]
           [[ OTHERWISE {statement};... ]]
           [[;]]
       END


 The 'select-selector' is an expression of an ordinal type.

 The 'select-label-list' is one or more select labels of the same
 ordinal  type  as  the  select selector, separated by commas.  A
 select label can be a single expression, such as 1, or  a  range
 of   expressions,   such   as   5..10.   The  expressions  in  a
 'select-label-list' can be full run-time expressions.

 When two expressions are provided as a lower  and  upper  bound,
 they  must  be  of  the same ordinal type.  There is no check to
 ensure that the lower bound expression is less than or equal  to
 the  upper  bound  expression.  If that occurs then there are no
 values of the select-selector that can be in the range.

 The 'statement' is any statement to be executed depending on the
 values of both the select-selector and the select-label.

 The  SELECT  statement  checks  to  see  if  the  value  of  the
 select-selector  is  contained in the select-label-list.  If so,
 then   the   corresponding   statement   is    executed.     The
 select-label-lists  are  checked  in the same lexical order that
 they appear in the source file.  The same value  can  appear  in
 more  than  one select-label-list.  All corresponding statements
 to select-label-lists are executed if the value is contained  in
 the  select-label-list.   By  contrast,  the SELECTONE statement
 stops processing after it  executes  the  first  statement  that
 corresponds   to   a   select-label-list   that   contains   the
 select-selector value.

 The optional OTHERWISE and ALWAYS clauses can appear  in  either
 order.   The  ALWAYS  clause  is always executed.  The OTHERWISE
 clause is executed only if none of the prior statements  (except
 for an optional ALWAYS statement) have been executed.

 The syntax for the SELECTONE statement is almost  identical  but
 does not provide for an ALWAYS clause.


Additional information available:

Examples