Syntaxregeln
Die USAGE OBJECT REFERENCE-Klausel sollte nur auf Stufe 01 oder innerhalb einer Typerklärung mit dem Attribut STRONG angegeben werden. Abweichungen davon werden als Erweiterung zugelassen.
Die USAGE OBJECT REFERENCE-Klausel darf in Datendefinitionen nicht auf Gruppenebene angegeben werden.
Die USAGE OBJECT REFERENCE-Klausel darf nicht in der FILE SECTION angegeben werden.
Die ACTIVE -CLASS- Angabe ist nur in einer Fabrik(Factory)-, Objekt- oder Methodendefinition zulässig.
Die USAGE OBJECT REFERENCE-Klausel darf nicht in Strukturen angegeben werden, in denen auf Stufe 01 die EXTERNAL- oder DYNAMIC-Klausel verwendet wird.
Für Datenfelder, die mit einer USAGE OBJECT REFERENCE-Klausel definiert sind, darf keine VALUE-Klausel angegeben werden.
Datenfelder, für die eine USAGE OBJECT REFERENCE-Klausel gilt, dürfen weder eine REDEFINES-Klausel haben, noch darf direkt von solch einer Klausel auf sie Bezug genommen werden. Außerdem dürfen Datenfelder auch nicht indirekt in einer redefinierten oder redefinierenden Struktur enthalten sein.
Datenfelder und Strukturen, für die eine USAGE OBJECT REFERENCE-Klausel gilt, dürfen nicht mit einem anderen Namen benannt werden (RENAMES-Klausel).
Für Gruppen, die Datenfelder mit einer USAGE OBJECT REFERENCE-Klausel definiert haben, darf auf Gruppenebene keine VALUE-Klausel angegeben werden.
Für Datenfelder mit einer USAGE OBJECT REFERENCE-Klausel, darf kein Bedingungsname (Stufennummer 88) angegeben werden.
Das in der KEY-Angabe einer OCCURS-Klausel angegebene Datenfeld, darf nicht mit einer USAGE OBJECT REFERENCE-Klausel definiert sein.
Allgemeine Regeln
Ein mit der USAGE OBJECT REFERENCE-Klausel beschriebenes Datenfeld ist eine Objektreferenz. Es gelten folgende Regeln:
Wenn keine der wahlweisen Angaben definiert ist, ist dieses Datenelement eine universelle Objektreferenz. Sie kann auf jedes mögliche Objekt verweisen.
interfacename bzw. klassenname müssen die Namen der umfassenden Schnittstellen- bzw. Klassendefinition sein oder im REPOSITORY Paragrafen entsprechend aufgeführt sein.
Ist interfacename-1 angegeben, dann verweist die Objektreferenz auf ein Objekt, dessen Schnittstelle zu interface-1 konform ist.
Ist klassenname-1 angegeben, so verweist diese Objektreferenz auf ein Objekt der Klasse, die durch klassenname -1 bezeichnet ist oder auf eine Unterklasse davon. Es gelten hierfür folgende Regeln:
Ist die ONLY nicht angegeben, aber FACTORY, so verweist diese Objektreferenz auf das Fabrikobjekt der entsprechenden Klasse bzw. einer Unterklasse davon. Ist FACTORY nicht angegeben, so verweist die Objektreferenz auf ein Objekt dieser Klasse bzw. einer Unterklasse davon.
Ist die ONLY angegeben, gelten dieselben Regeln wie unter a), außer dass kein Bezug auf eine Unterklasse möglich ist.
Ist ACTIVE-CLASS angegeben, dann verweist die Objektreferenz auf ein Objekt der Klasse des Objekts, für das die Methode aufgerufen wurde, in der die Objektreferenz definiert ist. Ist FACTORY angegeben, bezieht sich die Objektreferenz auf das Fabrikobjekt dieser Klasse, andernfalls auf ein Objekt dieser Klasse.