<<>> <> <> DIRECTORY ; XMesaCmplr17: PROGRAM = BEGIN ReferenceDotReference: TYPE = LONG CARDINAL; ReferenceDotNull: ReferenceDotReference = 0; TemplateInternalHandle: TYPE = LONG POINTER TO TemplateInternalObject; TemplateInternalObject: TYPE = RECORD [ ref: ReferenceDotReference _ ReferenceDotNull, domain: ReferenceDotReference _ ReferenceDotNull, sets: ReferenceDotReference _ ReferenceDotNull, functions: ReferenceDotReference _ ReferenceDotNull, name: LONG STRING]; DomainInternalHandle: TYPE = LONG POINTER TO DomainInternalObject; DomainInternalObject: TYPE = MACHINE DEPENDENT RECORD [ count: CARDINAL _ 0, ref: ReferenceDotReference _ ReferenceDotNull, zone: UNCOUNTED ZONE _ NIL, vals: SEQUENCE COMPUTED CARDINAL OF DomainElement]; DomainElement: TYPE = LONG POINTER; JDataXferDotTemplateObjectV0: TYPE = RECORD [ ref: ReferenceDotReference, domain: JDataXferDotTemplateStringDomain, sets: SetsBinding, functions: FunctionsBinding, name: LONG STRING]; SetsBinding: TYPE = RECORD [ref: ReferenceDotReference, bindingObject: SetsBindingObject]; SetsBindingObject: TYPE = RECORD [count: CARDINAL, left: JDataXferDotTemplateStringDomain, right: TemplateSetRefDomain, vals: BindingValueList]; TemplateSetRefDomain: TYPE = RECORD [ref: ReferenceDotReference, domainObject: TemplateSetRefDomainObject]; TemplateSetRefDomainObject: TYPE = RECORD [count: CARDINAL, sorted: IndexSet, vals: TemplateSetRefDomainValueList]; TemplateSetRefDomainValueList: TYPE = LONG DESCRIPTOR FOR ARRAY TemplateSetRefDomainValueListIndex OF TemplateSet; TemplateSetRefDomainValueListIndex: TYPE = CARDINAL; TemplateSet: TYPE = RECORD [ref: ReferenceDotReference, setObject: TemplateSetObject]; TemplateSetObject: TYPE = RECORD [size: CARDINAL, set: IndexSet]; DomainIndex: TYPE = CARDINAL; IndexSet: TYPE = LONG DESCRIPTOR FOR ARRAY IndexSetIndex OF DomainIndex; IndexSetIndex: TYPE = CARDINAL; BindingValueList: TYPE = LONG DESCRIPTOR FOR ARRAY BindingValueListIndex OF DomainIndex; BindingValueListIndex: TYPE = CARDINAL; FunctionsBinding: TYPE = RECORD [ref: ReferenceDotReference, bindingObject: FunctionsBindingObject]; FunctionsBindingObject: TYPE = RECORD [count: CARDINAL, left: JDataXferDotTemplateStringDomain, right: TemplateFunctionRefDomain, vals: BindingValueList]; TemplateFunctionRefDomain: TYPE = RECORD [ref: ReferenceDotReference, domainObject: TemplateFunctionRefDomainObject]; TemplateFunctionRefDomainObject: TYPE = RECORD [count: CARDINAL, sorted: IndexSet, vals: TemplateFunctionRefDomainValueList]; TemplateFunctionRefDomainValueList: TYPE = LONG DESCRIPTOR FOR ARRAY TemplateFunctionRefDomainValueListIndex OF TemplateFunction; TemplateFunctionRefDomainValueListIndex: TYPE = CARDINAL; TemplateFunction: TYPE = RECORD [ref: ReferenceDotReference, functionObject: TemplateFunctionObject]; TemplateFunctionObject: TYPE = RECORD [count: CARDINAL, lhs: IndexSet, rhs: SetOfIndexSet]; SetOfIndexSet: TYPE = LONG DESCRIPTOR FOR ARRAY SetOfIndexSetIndex OF IndexSet; SetOfIndexSetIndex: TYPE = CARDINAL; JDataXferDotTemplateStringDomain: TYPE = RECORD [ count: CARDINAL, ref: ReferenceDotReference, sorted: IndexSet, vals: StringValueList]; StringValueList: TYPE = LONG DESCRIPTOR FOR ARRAY StringValueListIndex OF LONG STRING; StringValueListIndex: TYPE = CARDINAL; ConvertFromV0: PROC [ externalTemplate: JDataXferDotTemplateObjectV0, z: UNCOUNTED ZONE] RETURNS [tHandle: TemplateInternalHandle] = BEGIN ConvertFromExtStringDomain: PROC [ -- OK extDomain: JDataXferDotTemplateStringDomain] RETURNS [domainRef: ReferenceDotReference _ ReferenceDotNull] = BEGIN domainHandle: DomainInternalHandle _ z.NEW[ DomainInternalObject[extDomain.count]]; END; -- of ConvertFromExtStringDomain tHandle _ z.NEW[TemplateInternalObject]; END; END...