Anfang des Inhaltsbereichs

Datenlayout von Strukturen Dokument im Navigationsbaum lokalisieren

Für einige Datentypen wie I, F oder Objektreferenzen gibt es bestimmte Ausrichtungsanforderungen, die von der jeweiligen Plattform abhängen. Felder mit einem solchen Typ müssen im Speicher auf Adressen beginnen, die durch 4 oder 8 teilbar sind. Zeichenartigen Typen stehen an Speicheradressen, die je nach Unicode-Darstellung durch 2 oder 4 teilbar sind.

Innerhalb einer Struktur werden vor Komponenten mit Ausrichtungsanforderungen gegebenenfalls Bytes eingefügt, um die notwendige Ausrichtung zu erreichen. Diese Bytes werden als Alignment (A) bezeichnet. Grundsätzlich wird eine Unterstruktur gemäß der größten Alignmentanforderung eines der enthaltenen Felder ausgerichtet. Dabei gilt eine enthaltene Unterstruktur als Feld. Includes in Strukturen gelten in diesem Sinne als Unterstruktur.

Bei dem folgenden Beispiel einer Struktur mit drei Feldern werden weder in NUS noch in US Alignments gebildet:

BEGIN OF struc1,
  a(1) TYPE X,
  b(1) TYPE X,
  c(6) TYPE C,
END OF struc1.

Dagegen werden im nächsten Beispiel in US Alignments gebildet, in NUS jedoch nicht. Die erste Alignment-Lücke wird wegen der Ausrichtung der Struktur struc3, die zweite wegen der Ausrichtung des C-Feldes c und die dritte wegen der Adressierung der Intergerzahl d gebildet.

BEGIN OF struc2,
  a(1) TYPE X,
  BEGIN OF struc3,
    b(1) TYPE X,
    c(6) TYPE C,
  END OF struc3,
  d TYPE I,
END OF struc2.

Diese Grafik wird im zugehörigen Text erklärt

Ende des Inhaltsbereichs