Im Normalfall weist man einen S-Variablenstrom mit dem Kommando ASSIGN-STREAM einem Ausgabeziel zu. Das Ausgabeziel kann ein Server oder eine S-Variable sein.
Mit dem Kommando EXECUTE-CMD wird implizit der S-Variablenstrom SYSVAR einer S-Variablen zugewiesen. Die Zuweisung ist aber nur temporär für das spezifizierte Kommando gültig.
Zuweisung mit ASSIGN-STREAM
Das Kommando ASSIGN-STREAM besitzt zwei Hauptoperanden: STREAM-NAME und TO.
Operand STREAM-NAME
Im Operanden STREAM-NAME wird der Name des S-Variablenstroms angegeben, der zugewiesen werden soll. Es stehen dazu drei vom System vorgegebene S-Variablenströme zur Verfügung, die alle das Präfix SYS besitzen: SYSINF, SYSMSG, SYSVAR. Man kann allerdings auch einen eigenen S-Variablenstrom bzw. einen eigenen Namen hier angeben. Eigene S-Variablenströme sind aber nur sinnvoll, wenn man z.B. FHS-Anwendungen benutzen will.
Operand TO
Im Operanden TO wird das Ausgabeziel bzw. der Server angegeben, der mit dem S-Variablenstrom verknüpft werden soll. Es gibt folgende Möglichkeiten:
TO = *STD
*STD ist der Defaultwert. In Abhängigkeit von der Angabe bei STREAM-NAME gelten folgende Zuweisungen:STREAM-NAME=
TO=*STD
Übertragene Informationen
SYSINF
SYSVAR
Strukt. Ausgaben von Kommandos und Programmen
SYSMSG
SYSVAR
Strukt. garantierte Meldungen
SYSVAR
*DUMMY
Strukt. Kommando- und Programm-Ausgaben bzw.
strukt. Meldungen<structured-name 1..20>
*DUMMY
Benutzer-Variablenstrom
Der Standard-Variablenstrom für Systemausgaben und garantierte Meldungen ist SYSVAR, dem wiederum standardmäßig *DUMMY zugewiesen ist. So koexistieren SYSOUT- und SYSVAR-Ausgaben. (Wenn kein SYSOUT gewünscht wird, muss das Kommando ASSIGN-SYSOUT TO-FILE=*DUMMY spezifiziert werden.)
TO = <structured-name 1..20>
Name eines (eigenen) Servers.TO = *DUMMY
Mit *DUMMY wählt man keine Zuweisung.TO = *SAME-AS-CALLING-PROC
Die Angabe *SAME-AS-CALLING-PROC bedeutet, dass die in der aufrufenden Prozedur spezifizierte Zuweisung weiterhin gültig ist.TO = *VARIABLE(...)
Ausgabeziel ist die angegebene S-Variable. Indirekt ist SDF-P als Server zugewiesen. Es können Kontrollvariablen für den Datenaustausch mit dem Server spezifiziert werden. Alle angegebenen Variablen müssen als Listenvariablen vom Typ Struktur deklariert werden.
Von den Kommandos TRANSMIT-BY-STREAM und ASSIGN-STREAM aus gesehen werden die Daten in folgender Reihenfolge abgearbeitet:TRANSMIT-BY-STREAM
Richtung
ASSIGN-STREAM
(1) VARIABLE-NAME
(2) CONTROL-VAR-NAME
(3) RETURN-VARIABLE-NAME
(4) RET-CONTROL-VAR-NAME
→
→
←
←
VARIABLE-NAME
CONTROL-VAR-NAME
RETURN-VARIABLE-NAME
RET-CONTROL-VAR-NAME
Tritt während einer dieser Operationen ein Fehler auf, so werden diese - wie alle folgenden - Operationen beendet. Die Übertragung wird dann mit dem Status zum Fehlerzeitpunkt abgebrochen.
TO = *SERVER(...)
Name eines Servers, z.B. FHS. Dem Server können zusätzliche Informationen (Name der Formatbibliothek für FHS) übergeben werden.
Hinweise
Die verschiedenen Informationen von SYSINF und SYSMSG können auch bei der Zuweisung SYSVAR getrennt weiterverarbeitet werden.
Angaben von Systemdateien (SYSDTA, SYSCMD, SYSOUT, SYSLST, SYSOPT, SYSIPT) bei STREAM-NAME werden abgewiesen.
Sind die in *VARIABLE(...) angegebenen S-Variablen im Moment der ASSIGN-STREAM-Zuweisung unvollständig deklariert, wird diese Zuweisung abgewiesen.
Sind die Variablen nach der ASSIGN-STREAM-Zuweisung unvollständig deklariert, weil sie z.B. zwischenzeitlich mit DELETE-VARIABLE bearbeitet wurden, wird die nächste Übertragung mit einer Warnung abgewiesen und der Variablenstrom wird durch SDF-P auf *DUMMY gesetzt.
Wenn dieselbe S-Variable zwei unterschiedlichen Variablenströmen zugewiesen ist, werden die Daten beider Variablenströme in der Reihenfolge ihrer Übertragung abgearbeitet.
S-Variable können zwischen zwei Übertragungen verändert werden. Die nächste Übertragung berücksichtigt diese Veränderung.
Beispiel
/DECLARE-VARIABLE OPS-VAR(TYPE=*STRUCTURE),MULTIPLE-ELEMENTS=*LIST /ASSIGN-STREAM SYSINF,TO=*VARIABLE(OPS-VAR) /ASSIGN-SYSOUT TO=#ERROR-SYSOUT