Designational expressions are expressions that return a value that is a label.
<designational expression>
──┬─<label designator>─────────────────────┬───────────────────────────┤ ├─<designational case expression>────────┤ └─<conditional designational expression>─┘
<label designator>
──┬─<label identifier>───────────────────────────────┬─────────────────┤ └─<switch label identifier>── [ ──<subscript>── ] ─┘
<designational case expression>
┌◄──────────── , ────────────┐ ──<case head>── ( ─┴─<designational expression>─┴─ ) ──────────────────┤
<conditional designational expression>
──<if clause>──<designational expression>── ELSE ──────────────────────► ►─<designational expression>───────────────────────────────────────────┤
If a designational expression is a label identifier, then the value of the expression is that label.
If a designational expression is a subscripted switch label identifier, then the numerical value of the subscript designates one of the elements in the switch label list. The value of the subscript is rounded, if necessary, to an integer. This value is used as an index into the switch label list. The entries of the list are numbered sequentially from 1 through N, where N is the number of entries in the list. The entry corresponding to the value of the subscript is selected. If the value of the subscript is outside the range of the switch label list, program control continues to the next statement without any error indication. For more information about the switch label list, refer to SWITCH LABEL Declaration.
The evaluation of a designational case expression is described in Case Expression.
The evaluation of a conditional designational expression is described in Conditional Expressions.
Examples of Designational Expression
ENDLABEL CHOOSELABEL[I+2] CASE X OF (GOTDATA, GOTERR, GOTREAL, GOTCHANGE, ESCAPE) IF K = 1 THEN SELECT[2] ELSE START

