CHOICE Type

12-1
The CHOICE type allows the definition of a number of components, each of which is an alternative in the data structure. A CHOICE component can be named, such as the details component in this example:
Person ::= SET {    name       GraphicString,    birthDate  GeneralString, -- YY/MM/DD    age        INTEGER,    details    CHOICE {               femaleInfo   [1]   FemaleInfo,               maleInfo     [2]   MaleInfo } }
The
details
component can contain either
femaleInfo
or
maleInfo
, but not both. In this case the
details
component containing the choice can be referenced directly without first knowing which choice was made. If this is changed to the following:
Person ::= SET {    name       GraphicString,    birthDate  GeneralString, -- YY/MM/DD    age        INTEGER,    CHOICE {            femaleInfo   [1] FemaleInfo,            maleInfo     [2] MaleInfo } }
then both
femaleInfo
and
maleInfo
are alternatives within the SET type, and must have unique names within that set. In this case, the actual choice that is present can only be discovered by attempting to reference each possible one, and determining whether it exists or not.
All alternatives of a CHOICE must have unique tags so that they can be differentiated. It is good practice to use explicit tags for each CHOICE item.

External Form -- Input and Output

This is the same as the CHOICE item.

Local Form and Behavior

This is the same as the CHOICE item.

Named Values

Named values are not applicable to the CHOICE type.

Constraints

Constraints are not applicable to the CHOICE type.