Anfang des InhaltsbereichsVergleiche Dokument im Navigationsbaum lokalisieren

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:

  1. Wenn eine Struktur rein zeichenartig ist, wird sie beim Vergleich wie ein C-Feld behandelt.
  2. Ist das Einzelfeld vom Typ C, die Struktur aber nur zum Teil zeichenartig, dann ist der Vergleich nur erlaubt, wenn die erste zeichenartige Gruppe der Struktur länger als das Einzelfeld ist. Für den Vergleich wird das Einzelfeld zur Laufzeit auf die Länge der Struktur erweitert und mit Initialwerten aufgefüllt. Der Vergleich erfolgt dann wie bei strukturierten Feldern, wobei das Auffüllen selbst analog der MOVE-Anweisung vorgenommen wird.

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.

Hinweis Im Zusammenhang mit Strukturerweiterungen sind die im Dictionary verwendeten Kategorien zu beachten.

Ende des Inhaltsbereichs