Prinzipiell gilt die Regel, daß Operanden, die einander mit der MOVE-Anweisung zugewiesen werden können, auch miteinander vergleichbar sind. Abweichend davon sind Objektreferenzen zwar vergleichbar, jedoch nicht immer zuweisbar.
Vergleiche zwischen flachen Strukturen
Ein Vergleich ist auch dann möglich, wenn die Strukturen nicht kompatibel sind. Es muß aber analog zu MOVE gelten, daß die Fragmentsichten in der Länge der kürzeren Struktur übereinstimmen. Sind die Strukturen verschieden lang, dann wird die kürzere Struktur bis zur Länge der anderen Struktur aufgefüllt. Analog wie bei der Zuweisung werden beim Auffüllen alle zeichenartigen Komponenten mit Leerzeichen und alle anderen Komponenten mit typgerechtem Initialwert gefüllt. Der Vergleich erfolgt fragmentweise entsprechend der Fragmentsicht.
Vergleiche zwischen Einzelfeldern und Strukturen
Bei Vergleichen zwischen Einzelfeldern und Strukturen gelten folgende Regeln:
Beispiel
c0(10) TYPE C.
BEGIN OF struc,
c1(15) TYPE C,
i TYPE I,
c2(5) TYPE C,
n(7) TYPE N,
END OF struc.
... c0 logexp struc ...
In diesem Beispiel wird c0 im Speicher auf die Länge von struc erweitert. Alle Bereiche > 10 werden bei nicht zeichenartigen Komponenten mit typgerechten Initialwerten belegt, ansonsten mit Leerzeichen.
Vergleich zwischen tiefen Strukturen
Wie bisher wird bei tiefen Strukturen für den Vergleich im wesentlichen die Typkompatibilität der Operanden gefordert. Der Kompatibilitätstest für die Vergleichbarkeit wurde zur Abrundung dahingehend verallgemeinert, daß analog zu Einzelfeldern Strukturkomponenten mit Referenzen auf Klassen oder Interfaces unabhängig von Klassenhierarchie und Implementierungsrelation miteinander vergleichbar sind. Bei Tabellenkomponenten wird nur die Vergleichbarkeit der Tabellentypen gefordert.
Vergleich zwischen internen Tabellen
Tabellen sind dann vergleichbar, wenn ihre Zeilentypen vergleichbar sind. Die oben beschriebenen Restriktionen wirken sich somit auch auf den Vergleich von Tabellen aus.
Im Zusammenhang mit
Strukturerweiterungen sind die im Dictionary verwendeten Kategorien zu beachten.