1.S-Variable deklarieren
Der Benutzer deklariert eine Listenvariable vom Typ Struktur. Die Struktur sollte dynamisch erweiterbar sein (Voreinstellung).
/DECLARE-VARIABLE NAME=USERVAR(TYPE=*STRUCTURE),MULTIPLE-ELEMENTS=*LIST
Wird die Struktur dagegen nur statisch angelegt, kann der Benutzer nur Informationsteile erhalten, für die er auch Strukturelemente explizit mit dem jeweils festgelegten Namen deklariert hat.
Strukturierte Ausgabe erzeugen
Kommando EXECUTE-CMD
Für die strukturierte Ausgabe eines Kommandos spezifiziert der Benutzer im Kommando EXECUTE-CMD ein SHOW-Kommando und gibt an, dass die strukturierte Systemausgabe in die bereits deklarierte S-Variable gelenkt werden soll.
/EXECUTE-CMD CMD =( SHOW-SYNTAX-VERSIONS SOFTWARE-UNIT-NAME=(JV, LMS) ), - /STRUCTURED-OUTPUT = USERVAR ,TEXT-OUTPUT = *NONE
Die Ausgabe nach SYSOUT wird dabei mit TEXT-OUTPUT=*NONE unterdrückt.
Wenn die Ausgabe in eine Variable mit statischer Struktur erfolgt, dann wird nur den bereits vorhandenen Elementen der Struktur ein Wert zugewiesen.
Ist für das Element kein Wert vorhanden, werden folgende typabhängige Defaultwerte eingesetzt:INTEGER: 0 STRING: '' (Leerstring) BOOLEAN: FALSE
Wenn keiner der Elementnamen mit den definierten Namen übereinstimmt, findet weder eine Zuweisung statt noch wird eine Fehlermeldung oder Warnung ausgegeben. Die Variable ist in diesem Fall nach dem EXECUTE-CMD leer, wenn der Operand WRITE-MODE=*REPLACE im Kommando DECLARE-VARIABLE angegeben wurde (vor der Kommandoausführung wird ein implizites FREE-VARIABLE abgesetzt).
Im Operanden MSG-STRUCTURE-OUTPUT kann angegeben werden, dass garantierte Meldungen für die angegebenen Kommandos in eine S-Variable ausgegeben werden.
Da das Kommando EXECUTE-CMD die mit dem Kommando ASSIGN-STREAM getroffenen Zuweisungen für SYSINF und SYSMSG temporär überschreibt, erfolgt keine gleichzeitige Ausgabe für den dort spezifizierten Server.
Kommando ASSIGN-STREAM
Mit ASSIGN-STREAM kann der Benutzer die S-Variablenströme SYSINF, SYSMSG oder SYSVAR der deklarierten Variablen zuordnen. Die strukturierten Ausgaben der SHOW-Kommandos werden über SYSINF, garantierte Meldungen über SYSMSG übertragen. Während der Zuordnung wird für jedes abgesetzte Kommando, das strukturierte Ausgaben unterstützt, die S-Variable entsprechend erweitert. Die Zuordnung gilt solange, bis sie explizit aufgehoben oder die Prozedur beendet wird
Inhalt der S-Variable ausgeben
/SHOW-VARIABLE USERVAR
Erläuterung der Ausgabe:
Die vom Benutzer definierte S-Variable (hier
USERVAR
) enthält die Gesamtausgabe. Die Zeichenfolge „#i“ zeigt die Nummer des jeweiligen Listenelements an (im SHOW-VARIABLE-Kommando wurde LIST-INDEX-NUMBER=*YES angegeben). Die S-VariableUSERVAR
enthält 2 Elemente:
Einmal die Struktur für Informationen über die Softwareeinheit JV, in der Ausgabe mit (1) gekennzeichnet, und einmal die Struktur für Informationen über die Softwareeinheit LMS, in der Ausgabe mit (2) gekennzeichnet.
Die Information für eine Softwareeinheit besteht aus den Elementen F-NAME, TYPE und SW-UNIT, wobei SW-UNIT selbst wieder eine Liste enthalten kann. Im Falle der Softwareeinheit JV enthält SW-UNIT ein Listenelement, nämlich die Struktur, die aus aus den Elementen NAME, VERSION und COMPONENT gebildet wird (in der Ausgabe mit (3) gekennzeichnet).
COMPONENT kann wiederum eine Liste sein: Die Softwareeinheit JV besteht aus 2 Komponenten, d.h. COMPONENT enthält 2 Listenelemente. Jedes Listenelement ist eine Struktur mit den Elementen NAME und VERSION. In der Ausgabe sind die Komponenten CJC und JVS mit (4) bzw. (5) gekennzeichnet.
4.Auf Einzelinformationen zugreifen
Auf einzelne Informationen kann der Benutzer über den Namen der S-Variablen zugreifen. Der anzugebende Name setzt sich wie folgt zusammen:
uservar#i.element | Dabei bedeuten: | |
uservar | Name der Struktur, die vom Benutzer deklariert | |
#i | i-tes Element der Liste | |
Punkt | Begrenzer im Namen von zusammengesetzen | |
element | vordefinierter Name des Strukturelements |
Der Benutzer kann sich den Inhalt z.B. mit „SHOW-VARIABLE uservar#.element“ anzeigen lassen oder mittels Variablenersetzung weiterverwenden: