Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

DECLARE-CONSTANT Variable mit konstantem Wert deklarieren

&pagelevel(4)&pagelevel

Anwendungsgebiet: PROCEDURE

Kommandobeschreibung

Das Kommando DECLARE-CONSTANT deklariert eine oder mehrere Variablen und weist ihnen einen konstanten Wert zu. So sind diese Werte vor Überschreiben geschützt. Variablen mit konstantem Wert können nahezu so behandelt werden wie herkömmliche Variablen. Allerdings kann der Wert nicht mit SET-VARIABLE geändert und auch nicht mit FREE-VARIABLE entfernt werden.

Format

DECLARE-CONSTANT

VARIABLE-NAME = list-poss(2000): <structured-name 1..20>(...)

<structured-name 1..20>(...)

VALUE = <text 0..1800 with-low expr>

,TYPE = *ANY / *STRING / *INTEGER / *BOOLEAN

,SCOPE = *CURRENT(...) / *PROCEDURE(...) / *TASK(...)

*CURRENT(...)

IMPORT-ALLOWED = *NO / *YES

*PROCEDURE(...)

IMPORT-ALLOWED = *NO / *YES

*TASK(...)

STATE = *ANY / *NEW / *OLD

,CONTAINER = *STD / <composed-name 1..64> / *VARIABLE(...)

*VARIABLE(...)

VARIABLE-NAME = <structured-name 1..20>

,SCOPE = *VISIBLE / *TASK

Operandenbeschreibung

VARIABLE-NAME = list-poss (2000): <structured-name 1..20>(...)
Name der zu deklarierenden konstanten Variablen. Das darf allerdings nur eine einfache Variable, also keine zusammengesetzte Variable oder ein Variablenelement sein.

VALUE = <text 0..1800 with-low expr>
Weist einer Variablen einen konstanten Wert zu; der Wert muss zum Datentyp der Variablen passen, er kann auch als Ausdruck angegeben werden.

TYPE =
Weist der Variablen den Datentyp zu.

TYPE = *ANY
Der Variablen kann als Datentyp STRING, INTEGER oder BOOLEAN zugewiesen werden. Aber nach der Deklaration der konstanten Variablen kann er nicht mehr geändert werden.

TYPE = *STRING
Weist der Variablen den Datentyp STRING zu.
Wertebereich: beliebige Zeichenkette

TYPE = *INTEGER
Weist der Variablen den Datentyp INTEGER zu.
Wertebereich: Ganzzahl zwischen -231 und 231-1

TYPE = *BOOLEAN
Weist der Variablen den Datentyp BOOLEAN zu.
Wertebereich: TRUE, FALSE, YES, NO, ON, OFF.

SCOPE =
Definiert den Geltungsbereich der Variablen.

SCOPE = *CURRENT(...)
Die Variable ist eine prozedurlokale Variable.
Entspricht in Call-Prozeduren der Angabe PROCEDURE.
In Include-Prozeduren bedeutet CURRENT, dass die Variable in der aktuellen Include-Prozedur angelegt wird. Sie ist dann in dieser Include-Prozedur und in allen tiefergeschachtelten Include-Prozeduren sichtbar (= Geltungsbereich Include).

IMPORT-ALLOWED =
Gibt an, ob die Variable mit IMPORT-VARIABLE in einer gerufenen Prozedur importiert werden kann.

IMPORT-ALLOWED = *NO
Die Variable kann nicht mit IMPORT-VARIABLE in einer gerufenen Prozedur importiert werden.

IMPORT-ALLOWED = *YES

Die Variable kann mit IMPORT-VARIABLE in einer gerufenen Prozedur importiert werden.

SCOPE = *PROCEDURE(...)
Die Variable ist eine prozedurlokale Variable mit dem Geltungsbereich Prozedur.
Die Variable wird in der aktuellen Prozedur angelegt.
Bei Include-Prozeduren ist die aktuelle Prozedur jeweils die umgebende Call-Prozedur, von der aus die Include-Prozedur aufgerufen wurde.
Die Variable ist in dieser Prozedur sichtbar sowie in allen tiefergeschachtelten Include-Prozeduren.

IMPORT-ALLOWED =
Gibt an, ob die Variable mit IMPORT-VARIABLE in einer gerufenen Prozedur importiert werden kann.

IMPORT-ALLOWED = *NO
Die Variable kann nicht mit IMPORT-VARIABLE in einer gerufenen Prozedur importiert werden.

IMPORT-ALLOWED = *YES
Die Variable kann mit IMPORT-VARIABLE in einer gerufenen Prozedur importiert werden.

SCOPE = *TASK(...)
Die Variable ist eine taskglobale Variable.
Wird sie in einer Include-Prozedur angelegt, so ist sie auch in der umgebenden Call-Prozedur, von der aus die Include-Prozedur aufgerufen wurde, und in allen tiefergeschachtelten Include-Prozeduren sichtbar.

STATE = *ANY
Existiert in der Task bereits eine Variable mit dem angegebenen Namen, so wird diese verwendet, andernfalls wird eine neue Variable deklariert.

STATE = *NEW
In der Task darf keine Variable mit dem angegebenen Namen existieren.

STATE = *OLD
In der Task muss eine Variable mit dem angegebenen Namen existieren. Die aktuelle Variablendeklaration muss dann mit der Deklaration der bereits vorhandenen Variablen übereinstimmen.

CONTAINER = *STD
Der Variablen wird kein Variablenbehälter zugeordnet. Der Wert der Variablen wird im Klasse-5-Speicher abgelegt.

CONTAINER = <composed-name 1..64>
Verbindet die aktuell deklarierte Variable mit dem hier angegebenen Variablenbehälter. Dieser Variablenbehälter muss geöffnet sein. Die Angabe von „STD“ ist hier nicht erlaubt, da „STD“ nicht als permanent-bestehender Variablenbehälter interpretiert wird.

CONTAINER = *VARIABLE(...)
Verbindet die aktuell deklarierte Variable über einen Link-Mechanismus mit einer anderen Variablen, die in dieser Prozedur bereits definiert ist. Diese Variable wird dann als Variablenbehälter bezeichnet.
Strukturelemente können nicht als Variablenbehälter angegeben werden.

VARIABLE-NAME = <structured-name 1..20>
Name einer Variablen, die in der Prozedur bereits definiert wurde. Die Attribute der Variablen, die als Variablenbehälter dient, und die Attribute der aktuell deklarierten Variablen müssen miteinander verträglich sein. Diese Variable muss auch mit einem konstanten Wert (demselben konstanten Wert wie bei beim Operanden VARIABLE-NAME) und einem konstanten Datentyp deklariert sein.

SCOPE =
Geltungsbereich der Behälter-Variablen

SCOPE = *VISIBLE
Die Variable ist sichtbar.

SCOPE = *TASK
Task-Variable

Kommando-Returncode

(SC2)

SC1

Maincode

Bedeutung / garantierte Meldungen


0CMD0001Ohne Fehler

0CMD0001Warnung; Element schon deklariert

1CMD0202Syntaxfehler

3CMD2203Falsche Syntaxdatei

32CMD0221Systemfehler (interner Fehler)

64CMD0216Erforderliches Privileg fehlt

64SDP0091Semantikfehler
garantierte Meldungen: SDP1018, SDP1030

130SDP0099Kein Adressraum mehr verfügbar

Beispiel

/DECLARE-CONSTANT KBYTE(TYPE=*INTEGER,VALUE=1024)
/DECLARE-CONSTANT MBYTE(TYPE=*INTEGER,VALUE=KBYTE*KBYTE)
/DECLARE-CONSTANT PAMPAGE(TYPE=*INTEGER,VALUE=2*KBYTE)
/DECLARE-VARIABLE FILE(TYPE=*STRUCTURE)
/DECLARE-VARIABLE FILES(TYPE=*STRUCTURE),MULTIPLE-ELEMENTS=*LIST
/EXECUTE-CMD (SHOW-FILE-ATTRIBUTES *ALL),STRUCTURE-OUTPUT=FILES,-
/            TEXT-OUTPUT=*NO
/
/FOR FILE=*LIST(FILES)
/   IF (FILE.F-SIZE * PAMPAGE >= 5 * MBYTE)
/       WRITE-TEXT 'VERY HUGE FILE &(FILE.SHORT-F-NAME)'
/   ELSE-IF (FILE.F-SIZE * PAMPAGE >= 100 * KBYTE)
/       WRITE-TEXT 'HUGE FILE &(FILE.SHORT-F-NAME)'
/   END-IF
/END-FOR

Diese Prozedur deklariert die drei Variablen KBYTE, MBYTE und PAMPAGE. Sie werden mit konstanten Werten deklariert, um ihre Korrektheit während der gesamten Prozedur sicherzustellen. Ihre Werte können nicht verändert werden.

Diese Variablen werden gebraucht, um die Größe von Dateien der gegenwärtigen Benutzerkennung zu testen.