186  Pascal  Report  PackedConformantArraySchema  =  '(lacked" "array"  "["  IndexTypeSpeciJicati' ll "J"  "of"  Typeldentifier.  UnpackedConformantArraySchemo  :: "array"  "["  IndexTypeSpe( :,imtion  {";"  IndexTypeSpecification}  "]"  "of"  (Type/dellt '!cr  I  ConformantArraySchema) ,  IndexTypeSpecification  =  Identifier  .....  Identifier  ":"  OrdinalType/dentiJier .  BoundldentiJier  =  Identifier.  An index type specification int roduces the two identifiers as bound  identifiers possessing the type denoted by the ordinal type identifier.  The confonnant-array schema  array[Lowl .. Highl:  TI;  Lo) .. High2:  T2]  of T  is simply an abbreviation for  array[Lowl .. Highl:  TI]  of  Irray[Low2 .. High2:  T2]  of T  Example of a conformant-array p.trameter:  function Max  (A:  array  [L  .H:  Integer]  of Real;  N:  Integer):  Real;  {Return the maximum value·)f  elements A [L] , ... , A  [N] . }  {Program derived from fun  ion Max  shown in 11.2.}  var X:  Real;  I:  Intege  begin  X:=  A[L];  for  I  := succ(L)  to N d,  oegin  X  =  Max ( A [L] , ... ,A  [,1]  )  if X < A[I]  then X  :=  ~I  []  end;  { X  =  Max ( A [ L] , ... , A [N  I  )  Max  := X  end  { Max  } ;  11.3.1.2.  Formal  procedural  .md  functional  parameters.  A  procedural parameter specification IIltroduces the procedure identifier  with any associated fonnal param··ter list defined by the procedure  heading.  ProceduralParameterSpecification  =  l'n'('cilllreHeading .  A  functional  parameter  specification introduces  the  function  identifier with the result type and any associated fonnal parameter list  defined by the function heading.  FunctionalParameterSpecification  =  FlIllctionHeading . 