70  Pascal User Manual  Each  variant  is  characteriz  I'd  by  a  list,  in  parentheses,  of  declarations of its pertinent comp(lilents. Each list is preceded by one or  more constants, and the  set of  I  isis  is  preceded by a case clause  specifying the data type of these ('nnstants (i.e., the type according to  which the variants are discriminak'd).  As an example, assume the existence of a  type  MaritalStatus  =  (Marr  d,Widowed,Divorced,Single)  Then we can describe persons by data of the  type  Person  record  {  fields  common to  case MaritalStatus of  Married:  (  {fields  Single:  (  {fields c  end  ,~l  persons go here  };  ,j  married persons only}  );  :;ingle persons only}  );  Note  that  every  value of the  type  by  which  the  variants  are  discriminated (the so-called  tag typ,'  ) must be explicitly listed with one  of the variants. In the above eXaJllple  the constants Widowed  and  Di vorced must also appear (along ,vilh Marr ied and Single) for the  example to be valid.  Usually,  a component (field)  I)f  the  record itself indicates its  currently valid variant. For example the above defined person record is  likely to contain a common field:  Figure 7.e  Syntax cI.lagram for  VariantPart  Figure 7.f  Syntax diagram for  Variant 