Allgemeines
Anwendungsgebiet: | Abfragen und Zugriff zu Listen und Tabellen; siehe "Abfragen und Zugriff zu Listen und Tabellen"; Kommunikation; siehe "Kommunikation (Programm, Anwender, System)" |
Makrotyp: | O-Typ; siehe "O-Typ-Makroaufrufe" |
Zur Beschreibung der Ausgabefelder siehe Makro DTMODE. Die symbolischen Feldnamen bei Generierung der 24-Bit-Schnittstelle beginnen mit dem Präfix TSK statt TMOD.
Makrobeschreibung
Durch den Aufruf des Makros TMODE erhält das Benutzerprogramm Information über den Auftrag (Job), unter dem es abläuft. Das Benutzerprogramm stellt einen Bereich zur Verfügung, in dem die Information gespeichert werden soll.
Das Aufrufformat ist von der gewünschten Schnittstelle abhängig.
Hinweis
Die Benutzerkennung, unter der das Benutzerprogramm läuft, kann auch mit dem Makro RDUID abgefragt werden. Die Privilegierung des Auftrags, unter dem es läuft, lässt sich auch mit dem Makro CHKPRV abfragen.
Makroaufrufformate und Operandenbeschreibungen
Format 1: Aufruf der 24-Bit-Schnittstelle
[name] TMODE |
[ {bereich[,länge] / D}] [,PARMOD=24] |
name
Name der DSECT, wenn der Operand D angegeben wird.Voreinstellung: name = TSKINF0.
bereich
bereich = Name eines Bereichs, in dem die Information über den Auftrag abgespeichert wird. Der Name D ist nicht zulässig.
länge
Länge des Bereichs in Byte. Wenn dieser Operand nicht angegeben wird, wird das Längenattribut von bereich verwendet. Wenn in jedem dieser beiden Fälle die Längenangabe kleiner ist als die Länge der angebotenen Information, dann werden nur so viele Daten zur Verfügung gestellt, wie in diesen Bereich passen.
Die Länge der angebotenen Informationen steht als symbolische Konstante L@TS-
KINF(EQU-Wert) zur Verfügung.
D
Eine Dummy Section (DSECT) zu der Ausgabeliste wird generiert.
PARMOD=
steuert die Makroauflösung. Wenn PARMOD nicht spezifiziert wird, erfolgt die Makroauflösung entsprechend der Angabe für den Makro GPARMOD oder der Voreinstellung für den Assembler (= 24-Bit-Schnittstelle).
24
Die 24-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 24-Bit-Adressen (Adressraum <= 16 MB).
keine Angabe
Die Operandenwerte können auch in einem Datenbereich übergeben werden, deren Adresse Register R1 enthalten muss. Aufbau der Operandenliste:
Byte | Operand |
0 | muss auf X' 00' gesetzt sein; wichtig, da nur dann die ordnungsgemäße Makroausführung |
1 - 3 | Adresse des Bereichs, in dem die Information über den Auftrag gespeichert werden soll. |
4 - 5 | Länge dieses Bereichs (hier kann die symbolische Konstante L@TSKINF angegeben |
Format 2: Aufruf der 31-Bit-Schnittstelle
TMODE |
[PARMOD=31] [,PARLIST=adr / (r)] |
PARMOD=
steuert die Makroauflösung. Wenn PARMOD nicht spezifiziert wird, erfolgt die Makroauflösung entsprechend der Angabe für den Makro GPARMOD oder der Voreinstellung für den Assembler (= 24-Bit-Schnittstelle).
31
Die 31-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 31-Bit-Adressen (Adressraum <= 2 GB). Datenlisten beginnen mit dem Standardheader.
PARLIST=
bezeichnet die Adresse eines Bereichs zur Aufnahme der Auftragsdaten. Der Bereich ist auf Wortgrenze auszurichten und muss mit dem Standardheader beginnen.
Der Makro DTMODE erzeugt eine Beschreibung des Ein-/Ausgabebereichs als DSECT oder als Datenabschnitt; der Standardheader ist initialisiert.
adr
symbolische Adresse (Name) des Bereichs.
(r)
r = Register mit dem Adresswert adr.
Rückinformation und Fehleranzeigen
R15:
+---------------+ | | | | | |0|0|a|a|a|a|a|a| +---------------+
Über die Ausführung des Makros TMODE wird im Register R15 ein Returncode übergeben.
X'aaaaaa' | Erläuterung |
X'000000' | Funktion ausgeführt. |
X'000004' | Operandenfehler. |
X'00000C' | Systemfehler. |
X'01FFFF' | Falsche Angabe für UNIT/FUNCTION im Standardheader. |
X'03FFFF' | Falsche Angabe für VERSION im Standardheader. |
Beispiel
Mit dem Makro TMODE sollen einige Auftragsattribute, wie Typ der Datensichtstation, Größe des Puffers der Datensichtstation, TSN des Auftrags, Benutzerkennung usw. abgefragt werden. Die Ausführung erfolgt im 31-Bit-Adressierungsmodus, der Ausgabebereich wird mit dem Makro DTMODE generiert (der Standardheader ist initialisiert). Für die Ausgabe mit dem Makro WROUT werden die Ausgabefelder geeignet aufbereitet.
TMODE START PRINT NOGEN TMODE AMODE ANY BALR 3,0 USING *,3 TMODE PARMOD=31,PARLIST=TMODPL -------------------------------(1) UNPK HFIELD(3),TMODTYPE(2) MVC TASKT+2(2),HFIELD TR TASKT+2(2),CODTAB UNPK HFIELD(5),TMODBUFS(3) MVC TASKB+2(4),HFIELD TR TASKB+2(4),CODTAB UNPK HFIELD(3),TMODPRI(2) MVC TASKP+2(2),HFIELD TR TASKP+2(2),CODTAB MVC TSN,TMODTSN MVC USERID,TMODUSER MVC ACC,TMODACCT MVC JOB,TMODNAME WROUT AUSB,TERM,MODE=LINE,PARMOD=31 --------------------------(2) 2 *,@DCEO 999 921011 53531004 TERM TERM DS 0F AUSB DC Y(AUSBE-AUSB) DS CL3 DC X'15' DC C'TERMINAL TYPE: ' TASKT DC C'X''00''' DC X'15' DC C'BUFFER TERMINAL: ' TASKB DC C'X''0000''' DC X'15' DC C'RUN PRIORITY: ' TASKP DC C'X''00''' DC X'15' DC C'TSN: ' TSN DS CL4
DC X'15' DC C'USER ID: ' USERID DS CL8 DC X'15' DC C'ACCOUNT NUMBER: ' ACC DS CL8 DC X'15' DC C'JOB NAME: ' JOB DS CL8 DC X'15' AUSBE EQU * HFIELD DS CL5 CODTAB DS CL240 DC C'0123456789' DC C'ABCDEF' DS 0F DTMODE DSECT=NO ----------------------------------------------(3) END
Ablaufprotokoll:
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,tmode), - // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,tmode)) % ASS6011 ASSEMBLY TIME: 336 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 86 MSEC //end % ASS6012 END OF ASSTRAN /start-executable-program library=macexmp.lib,element-or-symbol=tmode % BLS0523 ELEMENT 'TMODE', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'TMODE', VERSION ' ' OF '<date> <time>' LOADED TERMINAL TYPE: X'35' ----------------------------------------------------(4) BUFFER TERMINAL: X'07F8' RUN PRIORITY: X'D2' TSN: 2QSE USER ID: QM212 ACCOUNT NUMBER: 89002 JOB NAME: MACTEST
(1) | Aufruf des Makros TMODE. Die 31-Bit-Schnittstelle wird generiert; der Ausgabebereich wird mit dem Makro DTMODE erzeugt. | ||||
(2) | Ausgabe der abgefragten Werte mit WROUT im LINE-Modus. Einige Werte mussten zuvor für die Ausgabe aufbereitet werden (entpacken und in abdruckbare Zeichen umwandeln). | ||||
(3) | Der Ausgabebereich wird mit dem Makro DTMODE erzeugt. Der Standardheader ist initialisiert. | ||||
(4) | Ausgabe im LINE-Modus:
|