FixedPart = RecordSection { ";" RecordSection I . RecordSection = IdentifierList ":" Type. Fieldldentifier = Identifier. 

A field list may contain afixed part, which specifies a fixed number of components called fields. A record section introduces each of the identifiers in its list to be a field identifier possessing the type given in the record section. The scope of a field identifier extends over its record type, as well as the field designators and with statements where it may be used (see Sections 7.2.2, 9.2.4, and 10.2). Thus each field identifier spelling must be unique within a record type. 

Examples of record types with only fixed parts: 

packed record Year: 1900 .. 2100; Month: 1 .. 12; Day: 1. .31 end record Firstname, Lastname: packed array [1 .. 32] of Char; Age: 0 •. 99; Married: Boolean end 

A field list may also contain a variant part, which specifies one or more variants. The structure and values of a variant are specified by its field list. 

VariantPart = "case" VariantSelector "of" Variant { ";" Variant I . Variant = Constant [ "," Constant] ",''' "(" Fie/dList ") " . VariantSelector = { TagField ":" I TagType. TagType = OrdinalTypeldentifier . TagField = Identifier. 

A constant that prefixes a variant must denote a value of the tag type. Each such value must appear once and only once for a given variant part. If a tag field occurs in a variant selector, then it introduces its identifier as a field identifier to denote a field possessing the tag type. 

Only one variant of a given variant part can be active at a given time. If there is a tag field, the variant that is prefixed by the value of the tag field is the active variant. Ifthere is no tag field, then the active variant 

