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.
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.