Const MaxDim=3; MaxArgs = 10; Type Natural = 1..32767; NumberOfArgType = 1..MaxArgs; DataIdType = (CharId,integerId,realId,booleanId); StructureIdType= (Vector,TwoDimArray,ThreeDimArray,Primitive); UpperRangType = Array[1..maxDim] of Natural; LowerRangType = UpperRangType; NumberOfCellLimit = 1..32676; ArgPosition = 1..MaxArgs; DimLimit = 1..MaxDim; DataTypeType = ^DataCelllType; DataCellType = Record f1 :char; f2 :integer; f3 :real; f4 :boolean; next :DataPtrType end; DescripPtrType = ^Descriptor; Descriptor = Record AtomicId : DataIdType; StructureId : StructureIdType; Dim : DimLimit; UB : UpperRangType; LB : LowerRangType; First : DataPtrType; Last : DataPtrType; NumberOfCells : NumberOfCellLimit End; ArglistType = Record NumberOfArg :NumberOfArgType; descriptors :Array[1..maxArgs] of DescripPtrType End; StringType1 = String[100]; VAR GlobalArgList : ArgListType; GlobalUpperRang : UpperRangType; GlobalLowerRang : LowerRangType; GlobalArgNumber : ArgPosition; GlobalDim : DimLimit; GlobalStructureId : StructureIdType; GlobalAtomicId : DataIdType; GlobalChar : char; GlobalInteger : integer; GlobalReal : Real; GlobalBoolean : Boolean; Counter1,Counter2,Counter3 : Natural;