Anwendungsgebiet: PROCEDURE
Kommandobeschreibung
Mit dem Kommando OPEN-VARIABLE-CONTAINER werden Variablenbehälter, die als PLAM-Bibliothekselemente abgespeichert sind, geöffnet. Existiert ein solcher Variablenbehälter bzw. ein solches Element beim Aufruf dieses Kommandos noch nicht, wird er bzw. es automatisch erzeugt.
Damit ist es möglich, permanent vorhandene S-Variablen zu erzeugen, d.h. S-Variablen, die in ihrer Existenz nicht von der jeweiligen Task abhängig sind.
Format
OPEN-VARIABLE-CONTAINER |
CONTAINER-NAME = <composed-name 1..64> ,FROM-FILE = *LIBRARY-ELEMENT (...) *LIBRARY-ELEMENT(...) LIBRARY = <filename 1..54 without-vers> ,ELEMENT = *CONTAINER-NAME / <composed-name 1..64>(...) <composed-name 1..64>(...) VERSION = *HIGHEST-EXISTING / <composed-name 1..24> ,LOCK-ELEMENT = *NO / *YES ,SCOPE = *CURRENT / *PROCEDURE / *TASK(...) *TASK(...) SAVE-AT-TERMINATION = *NO / *YES ,AUTOMATIC-DECLARE = *ALL / *NONE / <structured-name 1..20 with-wild(40)> / list-poss(2000): <structured-name 1..20> |
Operandenbeschreibung
CONTAINER-NAME = <composed-name 1..64>
Name des Variablenbehälters.
FROM-FILE = *LIBRARY-ELEMENT(...)
Bibliothekselement, das den Variablenbehälter enthält.
Der Datentyp des Elements ist SYSVCONT.
LIBRARY = <filename 1..54 without-vers>
Name der Plam-Bibliothek.
Die Angabe einer Bibliotheksliste (S-Variable SYSPLAMALT-<name>) ist erlaubt
ELEMENT =
Name des Elements.
ELEMENT = *CONTAINER-NAME
Der Name des Elements ist identisch mit dem des Variablenbehälters.
ELEMENT = <composed-name 1..64>(...)
Der Name des Elements kann sich von dem des Variablenbehälters unterscheiden.
VERSION =
Bezeichnet die Versionsnummer des Elements.
VERSION = *HIGHEST-EXISTING
Wählt die höchste existierende Versionsnummer.
VERSION = <composed-name 1..24>
Wählt die angegebene Versionsnummer.
LOCK-ELEMENT =
Gibt an, ob das Element geschlossen ist oder nicht.
LOCK-ELEMENT = *NO
Das Element ist im Input-Modus geöffnet. Die Behälter-Variablen werden von diesem Element in den Variablenbehälter kopiert. Anschließend wird das Element geschlossen.
LOCK-ELEMENT = *YES
Das Element ist im Input- wie im Output-Modus geöffnet. Die Behälter-Variablen werden von diesem Element in den Variablenbehälter kopiert. Anschließend bleibt das Element geöffnet, bis das Kommando CLOSE-VARIABLE-CONTAINER angegeben wird. Nachfolgende Angaben von OPEN-VARIABLE-CONTAINER in derselben oder in anderen Tasks werden abgewiesen.
SCOPE =
Definiert den Geltungsbereich des Variablenbehälters. Er kontrolliert den Zugriff zu den im Variablenbehälter enthaltenen Variablen. Der Geltungsbereich der Behälter-Variablen darf nicht größer sein als der des Variablenbehälters.
SCOPE = *CURRENT
Der Geltungsbereich des Variablenbehälters ist prozedurlokal (siehe dazu Abschnitt„Geltungsbereich von Variablen“ (Geltungsbereich von Variablen )).
Der Variablenbehälter kann nur in der lokalen Prozedur und in allen tieferliegenden Include-Prozeduren benutzt werden, nicht aber in der aufrufenden Prozedur. Er wird implizit beim Ende der aktuellen Prozedur geschlossen.
SCOPE = *PROCEDURE
Der Geltungsbereich des Variablenbehälters ist prozedurlokal (siehe dazu Abschnitt„Geltungsbereich von Variablen“ (Geltungsbereich von Variablen )).
Der Variablenbehälter kann in der lokalen Prozedur und in allen tieferliegenden Include-Prozeduren benutzt werden. Er kann auch in den aufrufenden Prozeduren benutzt werden, wenn der Aufruf mit INCLUDE-PROCEDURE erfolgte. Er wird implizit beim Ende der zuerst aufgerufenen Prozedur geschlossen. D.h. er ist über alle Include-Prozeduren hinweg bis zum Ende der hierarchiehöchsten Aufruf-Prozedur geöffnet.
SCOPE = *TASK(...)
Der Geltungsbereich des Variablenbehälters ist taskglobal (siehe dazu Abschnitt„Geltungsbereich von Variablen“ (Geltungsbereich von Variablen )).
Der Variablenbehälter kann benutzt werden, solange er nicht geschlossen oder die Task beendet wird. Im Unterschied zum Geltungsbereich von Variablen muss der Name des Behälters nicht früher, als er benützt wird, importiert werden.
SAVE-AT-TERMINATION =
Gibt an, ob der Variablenbehälter bei EXIT-JOB bzw. LOGOFF gesichert werden muss.
SAVE-AT-TERMINATION = *NO
Der Variablenbehälter wird bei EXIT-JOB nicht gesichert.
SAVE-AT-TERMINATION = *YES
Der Variablenbehälter wird bei EXIT-JOB gesichert. Allerdings wird er nicht bei abnormaler Task-Beendigung gesichert, wie z.B. bei der Einstellung EXIT-JOB MODE = ABNORMAL.
AUTOMATIC-DECLARE =
Gibt an, ob die Behälter-Variablen automatisch deklariert werden sollen.
AUTOMATIC-DECLARE = *ALL
Die Behälter-Variablen werden automatisch mit dem Geltungsbereich des Variablenbehälters deklariert.
AUTOMATIC-DECLARE = *NONE
Behälter-Variablen werden nicht automatisch deklariert.
AUTOMATIC-DECLARE = list-poss(2000): <structured-name 1..20>
Die angegebenen Behälter-Variablen werden automatisch mit dem Geltungsbereich des Variablenbehälters deklariert.
AUTOMATIC-DECLARE = <structured-name 1..20 with-wild(40)>
Die Behälter-Variablen, die das angegebene Suchmuster erfüllen, werden automatisch mit dem Geltungsbereich des Variablenbehälters deklariert.
Hinweise
Variablen in einem Variablenbehälter können mit dem Kommando DECLARE-VARIABLE und dem darin enthaltenen Operanden CONTAINER erzeugt werden.
Variablen, die als statische Strukturlayouts deklariert wurden, werden mit dem Namen dieses Strukturlayouts gesichert.
Eine Bezugnahme auf einen Variablenbehälter ist erst erlaubt, wenn er mit OPEN-VARIABLE-CONTAINER erzeugt wurde.
Wenn Variablen mit OPEN-VARIABLE-CONTAINER automatisch erzeugt werden und die Variable mit anderen Attributen schon existiert, wird die Deklaration abgewiesen und die Fehlermeldung SDP1018 zur Warnung zurückgegeben. Der Prozess des Öffnens wird allerdings fortgesetzt.
Der Benutzer kann die zurückgewiesene Variable mit dem S-Variablenstrom SYSMSG abfragen.Wenn Behälter-Variablen mit AUTOMATIC-DECLARE erzeugt werden und sich auf statische Strukturen beziehen, werden sie in Strukturen vom Typ „*BY-SYSCMD“ konvertiert.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung |
0 | CMD0001 | Ohne Fehler | |
2 | 0 | SDP00xx | Warnung, weil folgendes passiert ist:garantierte Meldungen: SDP1008, SDP1018 |
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 |
Beispiel
Siehe Kommando SHOW-VARIABLE-CONTAINER-ATTR, "SHOW-VARIABLE-CONTAINER-ATTR Offene Variablenbehälter anzeigen ".