Variable deklarieren
Komponente: | SDF-P-BASYS |
Funktionsbereich: | Prozeduren |
Anwendungsbereich: | PROCEDURE |
Privilegierung: | STD-PROCESSING |
Funktionsbeschreibung
Mit DECLARE-VARIABLE werden Variablen erzeugt und die Attribute (evtl. auch ein Anfangswert) festgelegt.
Die Einbindung von Jobvariablen in SDF-P ist über den Operanden CONTAINER möglich.
Einschränkungen
Ist das kostenpflichtige Subsystem SDF-P nicht verfügbar, bestehen die folgenden Einschränkungen:
Es können nur einfache S-Variablen deklariert werden (TYPE=*ANY und MULTIPLE-ELEMENTS=*NO).
Deklarationen können nur aus einem Variablen-Container übernommen werden (CONTAINER=<composed-name>). Anderenfalls ist nur CONTAINER=*STD möglich.
Als Geltungsbereich kann nur SCOPE=*CURRENT(...) vereinbart werden. Innerhalb der Struktur *CURRENT(...) ist nur der Default-Wert IMPORT-ALLOWED=*NO erlaubt.
Format
DECLARE-VARIABLE | Kurzname: DCV | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Operandenbeschreibung
VARIABLE-NAME = list-poss (2000): <structured-name 1..20>(...)
Deklariert den Variablennamen, das heißt den Namen einer einfachen Variablen, die nicht Element einer zusammengesetzten Variablen ist, oder den Namen einer zusammengesetzten Variablen.
INITIAL-VALUE = *NONE
Die Variable wird nicht initialisiert.
Das bedeutet für eine neue Variable: sie erhält keinen Anfangswert; ein Lesezugriff würde einen Fehler verursachen.
Ist die Variable bereits vorhanden, bleibt ihr Inhalt unverändert, ihr wird kein neuer Anfangswert zugewiesen.
INITIAL-VALUE = <text 0..1800 with-low expr>
Weist einer neuen Variablen einen Anfangswert zu; der Wert muss zum Datentyp der Variablen passen, er kann auch als Ausdruck angegeben werden.
Bei bereits bestehenden Variablen wird die Angabe ignoriert; ihnen wird kein neuer Anfangswert zugewiesen.
Zusammengesetzte Variablen können nicht als Ganzes initialisiert werden, das heißt, es darf ihnen mit INITIAL-VALUE kein Anfangswert zugewiesen werden.
TYPE = *ANY / *STRING / *INTEGER / *BOOLEAN / *STRUCTURE(...)
Weist der Variablen den Datentyp zu.
TYPE = *ANY
Der Variablen können beliebig wechselnde Werte der Datentypen STRING, INTEGER und BOOLEAN zugewiesen werden.
MULTIPLE-ELEMENTS = *NO / *ARRAY(...) / *LIST(...)
Gibt an, ob mehrere Elemente einer Variable in einem Array oder einer Liste möglich sind.
MULTIPLE-ELEMENTS = *NO
Bestimmt, dass die Variable kein Array und keine Liste ist.
SCOPE = *CURRENT(...) / *PROCEDURE(...) / *TASK(...)
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). Der untergeordnete Operand IMPORT-ALLOWED ist mit *NO voreingestellt (Default-Wert), d.h. die deklarierte Variable kann nicht mit IMPORT-VARIABLE importiert werden. Ohne Einsatz des kostenpflichtigen Subsystems SDF-P ist nur dieser Default-Wert zugelassen.
CONTAINER = *STD / <composed-name 1..64> / *VARIABLE(...) / *JV(...)
Legt die Zuordnung der Variablen zu einem Variablenbehälter fest.
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.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung / garantierte Meldungen |
---|---|---|---|
0 | CMD0001 | Ohne Fehler | |
1 | 0 | CMD0001 | Warnung: Element bereits deklariert |
1 | CMD0202 | Syntaxfehler | |
3 | CMD2203 | Falsche Syntaxdatei | |
32 | CMD0221 | Systemfehler (interner Fehler) | |
64 | CMD0216 | Erforderliches Privileg fehlt | |
64 | SDP0091 | Semantikfehler | |
130 | SDP0099 | Kein Adressraum mehr verfügbar |
Beispiele
Beispiel 1
Die prozedurlokale Variable DATA mit Typ *ANY wird mit dem String 'ANTON' initialisiert und anschließend wird der Variablenwert mit dem Kommando SHOW-VARIABLE ausgegeben:
/declare-variable data(c'Anton',*any)
/show-variable data
DATA = Anton
Beispiel 2
Der Variablenbehälter MY-CONT wird geöffnet. Anschließend wird die S-Variable MY-VAR-1 als Behältervariable deklariert. Nach dem Zuweisen eines Wertes wird der Variablenbehälter (und damit auch die S-Variable) gesichert. Nach dem Schließen des Variablenbehälters ist die die S-Variable MY-VAR-1 nicht mehr zugreifbar:
/declare-variable my-var-1, container=my-cont
/open-variable-container my-cont,from=*lib-elem(lib=my-lib)
/my-var-1=’saved value’
/show-variable my-var-1
MY-VAR-1 = saved value *END-OF-CMD
/save-variable-container my-cont
/...
/close-variable-container my-cont
/show-variable
% SDP1030 CONTAINER / VARIABLE-CONTAINER 'MY-CONT' DOES NOT EXIST % SDP0234 OPERAND 'NAME' INVALID