Show TOC Anfang des Inhaltsbereichs

Konstanten  Dokument im Navigationsbaum lokalisieren

Konstanten sind benannte Datenobjekte, die statisch mit einer deklarativen Anweisung erzeugt werden. Konstanten dienen dazu, nichtänderbare Daten unter einem bestimmten Namen im Arbeitsspeicher eines Programms zu halten. Der Wert einer Konstanten kann zur Laufzeit des Programms nicht mehr geändert werden. Beim Versuch eine Konstante zu ändern kommt es zu einem Syntax- oder Laufzeitfehler.

Konstanten werden mit der Anweisung CONSTANTS deklariert. Innerhalb eines Programms können in Prozeduren mit CONSTANTS nochmals lokale Konstanten definiert werden. Für die Sichtbarkeit von Konstanten gilt hierbei sinngemäß das Gleiche, wie für die Sichtbarkeit von Datentypen. Lokale Konstanten in Prozeduren verschatten gleichnamige Variablen im Rahmenprogramm. Konstanten leben solange wir ihr Kontext.

Die Syntax der Anweisung CONSTANTS entspricht vollständig der Syntax der Anweisung DATA mit folgenden Ausnahmen:

·        Der VALUE-Zusatz ist bei CONSTANTSzwingend erforderlich. Der hinter VALUEangegebene Startwert kann während der Programmausführung nicht mehr geändert werden.

·        Konstanten können nicht für XSTRINGS, Referenzen und interne Tabellen bzw. Strukturen, die interne Tabellen enthalten, definiert werden.

Beispiel

Elementare Konstanten:

CONSTANTS: pi     TYPE p DECIMALS 10 VALUE '3.1415926536'.

           ref_c1 TYPE REF TO C1 VALUE IS INITIAL.

Die letzte Zeile verdeutlicht den Sinn des Arguments IS INITIAL beim VALUE-Zusatz. Da der VALUE-Zusatz in der CONSTANTS-Anweisung zwingend erforderlich ist, kann nur mit IS INITIAL einer Konstanten explizit ihr typspezifischer Initialwert zugewiesen werden.

Komplexe Konstanten:

CONSTANTS: BEGIN OF myaddress,
           name     TYPE c LENGTH 20 VALUE 'Fred Flintstone',
           street   TYPE c LENGTH 20 VALUE 'Cave Avenue',
           number   TYPE p           VALUE  11,
           postcode TYPE n LENGTH 5  VALUE  98765,
           city     TYPE c LENGTH 20 VALUE  'Bedrock',
           END OF myaddress.

Dies ist die Deklaration einer konstanten Struktur myaddress. Die Komponenten können mit myaddress-name, myaddress-streetusw. angesprochen, jedoch nicht mehr geändert werden.

 

Ende des Inhaltsbereichs