SYSDTA einer Eingabequelle zuordnen
Komponente: | SYSFILE |
Funktionsbereich: | Auftragsverarbeitung |
Anwendungsbereich: | JOB |
Privilegierung: | STD-PROCESSING |
Funktionsbeschreibung
Das Kommando ASSIGN-SYSDTA weist die System(eingabe)datei SYSDTA einer Eingabequelle zu. Primärzuweisung und Eigenschaften von SYSDTA sind im Abschnitt „Systemdateien" beschrieben.
Einschränkungen
Die Zuweisung einer Systemdatei zu einer Variablen mit TO=*VARIABLE(...) ist nur möglich, wenn das kostenpflichtige Subsystem SDF-P geladen ist.
Format
ASSIGN-SYSDTA | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Operandenbeschreibung
TO =
Eingabequelle, der SYSDTA zuzuordnen ist.
TO = <filename 1..54>
Name der Datei, der SYSDTA zuzuweisen ist. Die Datei muss mit folgenden Merkmalen katalogisiert sein:
variable Satzlänge
Zugriffsmethode SAM oder ISAM
Beginn des ISAM-Schlüssels: Byte 5
Länge des ISAM-Schlüssels: 8 Byte
TO = *VARIABLE(...)
Name einer zusammengesetzten S-Variablen vom Typ Liste (Folge von Elementen gleichen Variablentyps, auf die nur sequenziell zugegriffen werden kann).
Die Verwendung einer zusammengesetzten S-Variablen ist nur möglich, wenn das kostenpflichtige Subsystem SDF-P geladen ist (siehe Handbuch „SDF-P“ [34]).
Das Kommando wird abgewiesen, wenn die angegebene Liste nicht deklariert ist oder die Listenelemente nicht vom Variablentyp STRING (bzw. ANY) sind.
VARIABLE-NAME = <composed-name 1..254>
Name der S-Variablen.
TO = *LIBRARY-ELEMENT(...)
Eingabequelle ist ein PLAM-Bibliothekselement.
LIBRARY = <filename 1..54 without-gen-vers>
Name einer PLAM-Bibliothek.
ELEMENT = <composed-name 1..64 with-under>(...)
Name eines Elements aus der angegebenen Bibliothek.
VERSION = *HIGHEST-EXISTING / *STD / <composed-name 1..24>
Ergänzung des Elementnamens durch die Versionsangabe. Voreingestellt ist die höchste existierende Version des angegebenen Elements.
TYPE = S / <alphanum-name 1..8>
Typ des Elements.
S | Elementtyp S (Quellprogramme); Default-Wert |
D | Elementtyp D (Textdaten) |
M | Elementtyp M (Makros) |
TO = *PRIMARY
Setzt SYSDTA auf die Primärzuweisung zurück (siehe Abschnitt „Systemdateien").
TO = *SYSCMD
Schaltet SYSDTA mit SYSCMD zusammen, d.h. das System liest über SYSCMD nicht nur Kommandos, sondern auch Daten ein.
DATA-ESCAPE-CHAR =
Legt fest, ob in Datensätzen Variablen ersetzt werden sollen.
DATA-ESCAPE-CHAR = *COMPATIBLE
Die Ersetzung von Variablen bzw. Ausdrücken in Datensätzen soll kompatibel zu dem bisherigen Verhalten erfolgen:
Bei einer Zuweisung von SYSDTA ungleich SYSCMD findet in Datensätzen keine Ersetzung statt.
Bei einer Zuweisung von SYSDTA=SYSCMD erfolgt die Ersetzung in Datensätzen wie es im Kommando SET-PROCEDURE-OPTIONS, MODIFY-PROCEDURE-OPTIONS oder BEGIN-PROCEDURE festgelegt wurde.
DATA-ESCAPE-CHAR = ’&&’ / ’#’ / ’*’ / ’@’ / ’$’ / *STD
Diese Angabe ist nur möglich bei einer Zuweisung von SYSDTA ungleich SYSCMD. Im Falle von TO=*SYSCMD bzw. TO=*PRIMARY wird die Angabe zurückgewiesen.
In Datensätzen sollen Variable und Ausdrücke, die mit dem angegebenen Zeichen beginnen, ersetzt werden. Mögliche Zeichen sind &, #, *, @ oder $. Die Angabe & ist gleichbedeutend mit der Angabe *STD (wie auf Kommandoebene). Soll das Zeichen & explizit angegeben werden, muss es verdoppelt werden.
Kommando-Returncode
(SC2) | SC1 | Maincode | Bedeutung |
---|---|---|---|
0 | CMD0001 | Kommando ausgeführt | |
2 | 0 | SSM3200 | Kommando ausgeführt mit Warnung |
2 | 0 | SSM3034 | Die Systemdatei ist bereits *PRIMARY zugewiesen |
1 | SSM2036 | Operand fehlerhaft | |
32 | SSM1013 | Systemfehler während der Kommandoausführung | |
64 | SSM1025 | Diskettengerät nicht verfügbar | |
64 | SSM1026 | Diskettengerät nicht verfügbar oder die Diskette konnte nicht montiert werden | |
64 | SSM2061 | Fehler bei Zugriff auf PLAM-Bibliothekselement | |
64 | SSM2064 | Systemdatei kann nicht über RFA zugewiesen werden | |
64 | SSM3031 | Semantikfehler | |
64 | SSM3055 | fehlerhaftes Satz- oder Dateiformat | |
64 | SSM3056 | OPEN-Fehler bei Eingabe (DMS-Fehler ist als Insert in der SYSOUT-Meldung enthalten) | |
64 | SSM3100 | S-Variable existiert nicht | |
64 | SSM3101 | S-Variable nicht vom Typ Liste | |
64 | SSM3102 | Subsystem SDF-P nicht verfügbar | |
64 | SSM3104 | DATA-ESCAPE-CHAR ungleich *COMPATIBLE nicht erlaubt bei SYSDTA=SYSCMD | |
64 | SSM3105 | Angabe von DATA-ESCAPE-CHAR ungültig in der aktuellen Software-Konfiguration | |
64 | SSM3200 | Fehler bei Zugriff auf PLAM-Bibliothek oder Element | |
65 | SSM2074 | Subsystem SPOOL nicht geladen; Zugriff auf ein Diskettengerät ist nicht möglich |
Hinweise
Mit einem ASSIGN-SYSDTA-Kommando kann nur eine Datei zugewiesen werden. Will der Benutzer mehrere Dateien zuweisen, so muss er die entsprechende Anzahl von ASSIGN-SYSDTA-Kommandos geben.
Auf Prozedurebene ist die Systemdatei SYSDTA nicht mehr zugewiesen, wenn das Ende des Dateibestands erreicht ist. Jedes weitere Lesen erzeugt die Meldung SYSDTA NOT ASSIGNED
. Bei Rückkehr auf eine niedrigere Prozedurebene wird SYSDTA demjenigen Gerät zugewiesen, das auf dieser niedrigeren Ebene definiert war.
Die Variablen-Ersetzung, die im Operanden DATA-ESCAPE-CHAR für SYSDTA ungleich SYSCMD vereinbart wird, beschränkt sich auf S-Prozeduren.
Mit dieser Einstellung gilt:
Wenn Daten im Kontext einer Nicht-S-Prozedur oder ENTER-Datei gelesen werden, wird das Lesen mit der Meldung SSM3106 zurückgewiesen.
Wenn bei der Variablen-Ersetzung ein Fehler auftritt, wird der Datensatz zurückgewiesen und das Lesen von der Eingabequelle mit EOF beendet.
Wenn während des Lesens aus der Eingabequelle (Datei, Bibliothekselement oder S-Variable) auf die Primärzuweisung umgeschaltet wird, findet keine Variablen-Ersetzung statt (z.B. schaltet EDT nach Auftreten von EOF auf Primärzuweisung um).
Beispiele
Beispiel 1
/start-assembh ————————————————————————————————————————————————————— (1)
% BLS0523 ELEMENT 'ASSEMBH', VERSION '013', TYPE 'C' FROM LIBRARY ':1OSH:$TSOS. SYSPRG.ASSEMBH.013' IN PROCESS % BLS0500 PROGRAM 'ASSEMBH', VERSION '01.3A02' OF '2012-04-04' LOADED % BLS0552 COPYRIGHT (C) FUJITSU TECHNOLOGY SOLUTIONS 2012. ALL RIGHTS RESERVED % ASS6010 V01.3A02 OF BS2000 ASSEMBH READY % //compile source=*sysdta,... . . . % ASS6012 END OF ASSTRAN
/assign-sysdta to=src.testprog —————————————————————————————————————— (2)
/start-assembh
% BLS0523 ELEMENT 'ASSEMBH', VERSION '013', TYPE 'C' FROM LIBRARY ':1OSH:$TSOS. SYSPRG.ASSEMBH.013' IN PROCESS % BLS0500 PROGRAM 'ASSEMBH', VERSION '01.3A02' OF '2012-04-04' LOADED % BLS0552 COPYRIGHT (C) FUJITSU TECHNOLOGY SOLUTIONS 2012. ALL RIGHTS RESERVED % ASS6010 V01.3A02 OF BS2000 ASSEMBH READY % ASS6011 ASSEMBLY TIME: 385 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: WARNING % ASS6006 LISTING GENERATOR TIME: 121 MSEC % ASS6012 END OF ASSEMBH
/assign-sysdta to=*primary —————————————————————————————————————————— (3)
(1) | Die Systemdatei SYSDTA hat Primärzuweisung. Der Assembler liest seine Eingaben über den Bildschirm ein. |
(2) | SYSDTA wird der Datei SRC.TESTPROG zugewiesen. Der Assembler liest die Eingaben aus dieser Datei (COMPILE-Anweisung und Quellprogramm, falls in der COMPILE-Anweisung SOURCE=*SYSDTA vereinbart ist). |
(3) | SYSDTA erhält wieder die Primärzuweisung. |
Beispiel 2
/assign-sysdta to=*lib-elem(lib=biblio,elem=testprog)
/start-assembh
% BLS0523 ELEMENT 'ASSEMBH', VERSION '013', TYPE 'C' FROM LIBRARY ':1OSH:$TSOS. SYSPRG.ASSEMBH.013' IN PROCESS % BLS0500 PROGRAM 'ASSEMBH', VERSION '01.3A10' OF '2012-10-11' LOADED % BLS0552 COPYRIGHT (C) FUJITSU TECHNOLOGY SOLUTIONS 2012. ALL RIGHTS RESERVED % ASS6010 V01.3A10 OF BS2000 ASSEMBH READY % ASS6011 ASSEMBLY TIME: 429 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: WARNING % ASS6006 LISTING GENERATOR TIME: 154 MSEC % ASS6012 END OF ASSEMBH
/assign-sysdta to=*primary
Der Assembler liest seine Eingaben aus dem Element TESTPROG der Bibliotheksdatei BIBLIO. Nach Beendigung des Compilerlaufes erhält SYSDTA wieder die Primärzuweisung.
Beispiel 3
/BEG-PROC LOG=*ALL, PAR=*YES(PROC-PAR=(&SFFILE1,&SFFILE2)) /ASS-SYSDTA TO=*SYSCMD /START-SDF-A //OPEN-SYNTAX-FILE FILE=&SFFILE1, TYPE=*SYSTEM,MODE=*UPDATE //COPY OBJECT=*COMMAND(NAME=*ALL),FROM-FILE=&SFFILE2 //END /END-PROC
Durch das Kommando ASSIGN-SYSDTA liegt SYSDTA bei Ablauf der Nicht-S-Prozedur genau wie SYSCMD auf der Datei, in der die Prozedur gespeichert ist. Das ermöglicht nun auch, dass das Dienstprogramm SDF-A die Anweisungen aus dieser Prozedurdatei liest.