Allgemeines
Anwendungsgebiet: | Jobvariablen |
Makrotyp: | S-Typ (bei VERSION=0): Standardform/C-/D-/E-/L-Form |
Makrobeschreibung
Im Makroaufruf ONEVT wird eine Bedingung angegeben und eine Ereigniskennung vorgegeben. Während der Programmausführung wird vom System immer dann ein POSSIG abgesetzt, wenn das Ereignis „Bedingung erfüllt“ oder „Katalog exportiert“ eintritt.
Die Maximalzahl abzusetzender POSSIG-Aufrufe kann angegeben werden.
Zur Ereignissteuerung siehe Handbuch „Makroaufrufe an den Ablaufteil“ [4].
Makroaufrufformat und Operandenbeschreibung
Operation | Operanden |
|
|
'bed.ausdruck'
Die Bedingung wird als Direktoperand angegeben und muss in Apostrophe eingeschlossen werden. Wegen der Verwendung des Apostrophs in der Assemblersprache als syntaktisches Zeichen müssen folgende Regeln beachtet werden:
Jeder Apostroph innerhalb von „bed.ausdruck“ muss verdoppelt werden. Die Maximallänge des „bed.ausdruck“ ohne die einschließenden Apostrophe beträgt 127 Bytes.
Sonder-Jobvariablen sind nicht zulässig.
adr1
symbolische Adresse eines Bereichs im Benutzerprogramm, der den „bed.ausdruck“ enthält.
Das Satzformat muss vom Typ „variabel“ sein. Der Bereich beginnt mit einem 4 Byte langen Feld, dessen erste zwei Byte die Länge des „bed.ausdruck“ in Byte + 4 enthalten.
Beispiel
SYMADR1 DC Y(END-SYMADR1) DS CL2 DC 'bedingter ausdruck' END EQU *
(r1)
r1 = Register, das die Adresse des „bed.ausdruck“ enthält, der wie unter adr1 beschrieben aufgebaut sein muss. Der „bed.ausdruck“ darf keine Sonder-Jobvariablen enthalten.
EIID=
benennt die Ereigniskurzkennung, die durch den TU-Eventing Makroaufruf ENAEI dem Benutzerprogramm zur Verfügung gestellt wird. Der Makro ENAEI muss vor dem ONEVT-Makro aufgerufen werden.
adr
symbolische Adresse der Ereigniskurzkennung,
(r)
r = Register, das die Adresse der Ereigniskurzkennung enthält.
POST=
gibt einen 2 Byte langen Wert an, der auf Programmebene zur Identifizierung des ONEVT verwendet werden kann. Er wird an das Benutzerprogramm in den zwei am weitesten rechts stehenden Bytes des Post Codes übergeben. Der Post Code ist 4 Byte lang und wird dem Programm bei Ereignissen wie „Bedingung erfüllt“ etc. mitgeteilt.
wert
2 Byte lange Assembler-Konstante beliebigen Formats.
(r)
r = Register, das die Adresse eines 2 Byte langen Feldes enthält, in
dem der Benutzer den Wert hinterlegt hat.
Format des Post Codes:
ereignisbezogene | Bedingungsergebnis | 'ONEVT' |
1 Byte | 1 Byte | 2 Byte |
Bedeutung der ersten beiden Bytes:
ereignisbezogene Anzeige:
X'14' gibt an, dass das Ereignis durch einen ONEVT-Makro verursacht wurde.- Bedingungsergebnis:
gibt den 'Grund' für den vom System angegebenen POSSIG an.
X'00': Bedingung erfüllt
X'08': Katalog exportiert
Ist der Post-Operand nicht vorhanden, so wird auch kein „wert“ zur ONEVT-Kennung (d.h. also X'00000000') übermittelt.
COUNT=
gibt an, wie viel POSSIG-Aufrufe maximal vom System abgesetzt werden dürfen (1 <=
zahl <=
32767); Standardwert = 1.
Vom COUNT-Operanden hängt es ab, wie oft das Programm über ein Ereignis unterrichtet wird.
zahl
Anzahl der erlaubten POSSIG-Aufrufe für den Fall „Bedingung erfüllt“. Wenn die Anzahl erreicht ist, erlischt die Wirksamkeit des Makroaufrufs ONEVT.
Unabhängig von der Angabe im COUNT-Operanden erlischt die Wirksamkeit des ONEVT-Makros unmittelbar nach einem POSSIG-Aufruf, der durch das Ereignis „Katalog exportiert“ verursacht wurde oder durch einen DONEVT-Makroaufruf.
(r)
r = Register, das die Adresse eines Halbwortes enthält, in dem der Wert des COUNT-Operanden abgespeichert ist.
MF=
PREFIX=
MACID=
PARAM=
Zur Beschreibung der Operanden MF, PREFIX, MACID und PARAM siehe "Allgemeine Makro-Operanden". Die gültigen Werte und Voreinstellungen von MF für diesen Makro sind zu Beginn der Makrobeschreibung, von PREFIX und MACID bei der Beschreibung des Operanden VERSION angegeben.
VERSION
legt fest, welcher Version die Makroauflösung entsprechen soll.
0
ist Voreinstellung: Die Makroauflösung entspricht dem Stand JV <=
V8.7. Bei der C- und D-Form des Makroaufrufs kann ein Präfix (pre=1..3 Buchstaben) angegeben werden.
Voreinstellung: pre=ONE
1
Die Makroauflösung entspricht dem Stand JV >=
V10.0. Bei der C-, D- oder M-Form des Makroaufrufs kann ein Präfix (p=1 Buchstabe) und bei der C- oder M-Form zusätzlich eine Macid MACID angegeben werden.
Funktionsweise
Der Benutzer kann das Ergebnis „Bedingung erfüllt“ - über das er vom POSSIG unterrichtet wird - nach seinen Vorstellungen der BS2000-TU-Ereignissteuerung unterziehen, z.B. abwarten, bis „Bedingung erfüllt“ eintritt (SOLSIG COND=) oder dass asynchron ein Contingency-Prozess ausgeführt wird, wenn „Bedingung erfüllt“ gilt (SOLSIG COID=....).
Rückinformation und Fehleranzeigen
bei VERSION=0:
R15 |
| Über die Ausführung des Makros ONEVT (VERSION=0) wird im Register R15 ein Returncode übergeben: (aa=Rücksprungschalter, bb= Sekundärindikator) |
X'bb' | X'aa' | Erläuterung |
X'00' | X'00' | Ausführung normal beendet. |
X'00' | X'04' | Funktion nicht ausgeführt: ungültige Adresse für die Ereigniskennung bzw. die Bedingung oder ungültige COUNT-Angabe. |
X'04' | X'04' | Funktion nicht ausgeführt: Ereigniskennung nicht gefunden. |
X'08' | X'04' | Funktion nicht ausgeführt: ungültiger bedingter Ausdruck. |
X'10' | X'04' | Funktion nicht ausgeführt: auf eine angegebene Jobvariable kann nicht zugegriffen werden. |
X'FF' | Funktion nicht ausgeführt: CJC im System nicht verfügbar. |
bei VERSION=1:
Nach Initialisierung des Standardheaders (bei Aufruf mit MF=S/L) wird die Rückkehrinformation an der symbolischen Adresse <PREFIX><MACID>RET zur Verfügung gestellt (4Byte).
Standardheader |
| Über die Ausführung des Makros ONEVT (VERSION=1) wird im Standardheader ein Returncode übergeben: (aaaa=MAINCODE, bb=SUBCODE1, cc=SUBCODE2) |
X'cc' | X'aaaa' | Erläuterung |
X'00' | X'0000' | Ausführung normal beendet. |
X'00' | X'0004' | Funktion nicht ausgeführt: ungültige Adresse für die Bedingung bzw. die Ereigniskennung oder unzulässiger Wert für COUNT. |
X'04' | X'0004' | Funktion nicht ausgeführt: Ereigniskennung nicht gefunden. |
X'08' | X'0004' | Funktion nicht ausgeführt: Bedingung fehlerhaft. |
X'10' | X'0004' | Funktion nicht ausgeführt: auf eine genannte Jobvariable kann nicht zugegriffen werden. |
X'14' | X'0004' | Funktion nicht ausgeführt: es ist nicht genügend Speicherplatz vorhanden. |
X'18' | X'0004' | Funktion nicht ausgeführt: die Ereignissteuerung ist nicht verfügbar. |
X'FFFF' | Funktion nicht ausgeführt: Fehler bei der Initialisierung des Standardheaders, siehe . |
Zusätzlich zu den bei VERSION=0 bzw. 1 genannten Returncodes können bei grundlegenden Fehlern (z.B. ungültige Adresse der Operandenliste) auch allgemeine JV-Returncodes auftreten. Deren Bedeutung kann dem Kommentar zum entsprechenden Returncode im Makro IDEJVS (siehe "Makroebene") entnommen werden.
DSECT
ONEVT ONEVT MF=D,VERSION=1 1 ONEVT MFCHK MF=D, C 1 SUPPORT=(C,D,E,L,M,S), C 1 PREFIX=J, C 1 MACID=VSC, C 1 DMACID=VSC, C 1 DNAME=ONEVTPL, C 1 PARAM=, C 1 SVC=190 2 ONEVT DSECT , 2 *,##### PREFIX=J, MACID=VSC ##### 1 JVSCFHDR FHDR MF=(C,JVSC),EQUATES=NO 2 JVSCFHDR DS 0A 2 JVSCFHE DS 0XL8 0 GENERAL PARAMETER AREA HEADER 2 * 2 JVSCIFID DS 0A 0 INTERFACE IDENTIFIER 2 JVSCFCTU DS AL2 0 FUNCTION UNIT NUMBER 2 * BIT 15 HEADER FLAG BIT, 2 * MUST BE RESET UNTIL FURTHER NOTICE 2 * BIT 14-12 UNUSED, MUST BE RESET 2 * BIT 11-0 REAL FUNCTION UNIT NUMBER 2 JVSCFCT DS AL1 2 FUNCTION NUMBER 2 JVSCFCTV DS AL1 3 FUNCTION INTERFACE VERSION NUMBER 2 * 2 JVSCRET DS 0A 4 GENERAL RETURN CODE 2 JVSCSRET DS 0AL2 4 SUB RETURN CODE 2 JVSCSR2 DS AL1 4 SUB RETURN CODE 2 2 JVSCSR1 DS AL1 5 SUB RETURN CODE 1 2 JVSCMRET DS 0AL2 6 MAIN RETURN CODE 2 JVSCMR2 DS AL1 6 MAIN RETURN CODE 2 2 JVSCMR1 DS AL1 7 MAIN RETURN CODE 1 2 JVSCFHL EQU 8 8 GENERAL OPERAND LIST HEADER LENGTH 2 * 1 JVSCUNU1 DS CL3 UNUSED 1 JVSCPCON DS X PARAM.-CONTROL 1 JVSCCORE EQU X'80' A(CONDITION) IN REGISTER 1 JVSCEREG EQU X'40' A(IDENTIFIER) IN REGISTER 1 JVSCPREG EQU X'20' POST IN REGISTER 1 JVSCCREG EQU X'10' COUNT IN REGISTER 1 JVSCPTPR EQU X'02' P2 CALLER 1 JVSCCOND DS A A(CONDITION) 1 ORG JVSCCOND 1 JVSCCONR DS AL1 REG. CONT. A(COND.) 1 DS AL3 NOT USED IN THIS CONTEXT 1 JVSCEIID DS A A(IDENTIFIER) 1 ORG JVSCEIID 1 JVSCEIDR DS AL1 REG. CONT. A(IDENTIFIER) 1 DS AL3 NOT USED IN THIS CONTEXT 1 JVSCPOST DS H POST-VALUE 1 ORG JVSCPOST 1 JVSCPOSR DS AL1 REG. CONT. POST-VALUE 1 DS AL1 NOT USED IN THIS CONTEXT 1 JVSCCNT DS H COUNT-VALUE 1 ORG JVSCCNT 1 JVSCCNTR DS AL1 REG. CONT. COUNT-VALUE 1 DS AL1 NOT USED IN THIS CONTEXT 1 JVSCJVS DS F RESERVED 1 JVSC# EQU *-JVSCFHDR LENGTH 1 * 1 * RETURNCODES 1 * 1 JVSCOK EQU X'00000000' SUCCESSFUL CALL 1 JVSCINAD EQU X'00010004' INVALID PARM.-LIST 1 JVSCINEI EQU X'04010004' INVALID IDENTIFIER 1 JVSCSYTE EQU X'08000004' SYNTAX ERROR IN CONDITION 1 JVSCJVNA EQU X'10000004' JV NOT ACCESSABLE 1 JVSCSYSE EQU X'14000004' SYSTEM ERROR ($GETMEM) 1 JVSCBOER EQU X'18000004' SYSTEM ERROR (BOURSES)