156  Pascal Report  6.2.1  Array types.  An array t) I)e is a structure consisting of a fixed  number of components which ,ilre  all of the same type, called the  component type.  The component', are in a one-to-{me correspondence  with the values of the  index type  More than one index type may b(' specified, as in  packed array  [TI,  T2,  , .. ,  Tn]  of c,  and this is simply an abbreviatioll for the notation  packed array  [T1]  of picked array  [T2, ... ,Tn]  of c.  These two notations would also  b~  equivalent if neither were prefixed  with  packed.  Examples of array types:  Each value of an array type is a functional (many-to--one) mapping  from the entire set of index values to the set of values of the component  type.  An array type is called a  sfl ing type  if it is packed, has as  its  component type the predefined t) pe Char and has as its index type a  subrange of Integer from 1 to n,  for n greater than 1. The character  strings (see Section 4) are constm  IS of string types.  Examples:  packed array  [1..  Strine  ,>[qth]  of Char  packed array  [1 .. 2]  of  ",It  6.2.2. Record types. A record typ;' has a fixed number of components,  possibly of different types. The sl"l'cific components and their types,  and the values of the record type, ,:  I'e  determined by the  field list  of the  record type.  RecordType  =  "record"  Fie/dList  "end" ,  Fie/dList  = [ (  FixedPart  [ ";"  Varial/tPart  1  VariantPart)  [ ";"  11 '  array  [1 .. 100]  of Real  array  [1 .. 10,  1 .. 20]  oj  0.99  array  [Boolean]  of Colc  r  array  [Size]  of packed  Jrray  ['a' .. 'z']  of Boolean  ArrayType  = "array" "["  lnde,\/\'pe  I  ","lndexType  I"]"  "of"  ComponentType  IndexType  =  OrdinalType ,  ComponentType  =  Type, 