A record defining Person can n:1W be fonnulated as: 

type String15 = packed a:ray [1 .. 15] of Char; Status = (Married, Wid wed, Divorced, Single); Date = packed record Year: 1900 .. 2)0; Mo: (Jan, Feb ~ar, Apr, May, Jun, Ju1, Aug. Sep, Oct, Nov, Dec); Day: 1. .31; end; Natural = O .. Maxlnt; Person = record Name: recor( First, Last: String15 end; Height: Natl! ,,1 { centimeters }; Sex: (Male ,'emale) ; Birth: Date; Depdts: Natl dl; case MS: Sti ll:; of Married, v j()wed: (MDate: Date); Divorced: :~II)ate: Date; Single: () end { Person } ~.rstD: Boolean); 

Notes: 

1. All field names must be distinct - even if they occur in different variants. 

2. If a variant is empty (i.e., has no fields), the fonn is: c: () 

3. A field list can have only (Ille variant part and it must follow the fixed part of the recon 1 . 

4. A variant may itself contaill a variant part; hence variant parts can be nested. 

5. The scope of enumerated t I pe constant identifiers that are introduced in a record typl: extends over the enclosing block. 

Referencing a record compon~nt is essentially a simple linear reconstruction of the outline. As an example, assume a variable P of type Person and "create" the second of the model people. 

