Allgemeines
Anwendungsgebiet: | Ereignissteuerung; siehe "Ereignisgesteuerte Verarbeitung (Eventing)" |
Makrotyp: | S-Typ, MF-Format 1: Standardform/L-/E-Form; siehe "S-Typ-Makroaufrufe" |
Makrobeschreibung
Der Makro ENAEI richtet für die Task des Aufrufers eine Ereigniskennung ein. Wenn eine Ereigniskennung mit den angegebenen Namen in dem definierten Geltungsbereich bereits besteht (eingerichtet durch einen ENAEI-Makroaufruf in einer anderen Task), bewirkt der Aufruf nur eine Zuordnung zwischen der Task des Aufrufers und der Ereigniskennung. Andernfalls wird die Ereigniskennung vom System erstellt und der Task zugeordnet.
Durch diesen Aufruf wird außerdem eine Kurzkennung für die Ereigniskennung zur Verfügung gestellt, die in weiteren Aufrufen zur Beschleunigung der Verarbeitung verwendet werden kann.
In einem Programm können maximal 2000 Ereigniskennungen gleichzeitig verwendet werden.
Makroaufrufformat und Operandenbeschreibung
ENAEI |
{ EINAME=name / EINAMAD={adr / (r)} [,EINAMLN=länge] },SCOPE=LOCAL / GROUP / USER_GROUP / GLOBAL ,EIIDRET=adr / (r) ,SOSIGQ=FIFO / LIFO [,PARMOD=24 / 31] [,MF=L / (E,..)] |
EINAME=
bezeichnet den Namen der Ereigniskennung.
name
Name der Ereigniskennung. 1 <= Namenslänge <= 54
Namensbildung: 1. Zeichen: Buchstabe, #, @ 2.-54. Zeichen: beliebige Kombination aus der Zeichenmenge (A,...,Z,0,...,9,$,#,@). Das erste Blank (X'40') beendet den Namen.
EINAMAD=
bezeichnet die Adresse des Felds mit dem Namen der Ereigniskennung (Namensbildung siehe oben).
adr
symbolische Adresse (Name) des Feldes
(r)
r = Register mit dem Adresswert adr
EINAMLN=
beschreibt die Länge des Namens der Ereigniskennung, wenn EINAMAD=... spezifiziert wurde.
länge
Länge des Namens in Byte
Voreinstellung:
Längenattribut des bei EINAMAD angegebenen Feldes.
54 Byte, wenn EINAMAD=(r) spezifiziert wurde.
SCOPE=
beschreibt den Geltungsbereich (Teilnehmerkreis) für die Ereigniskennung.
LOCAL
Die Ereigniskennung wird nur von der Task des Aufrufers benutzt.
GROUP
Teilnehmer sind alle Tasks unter der Benutzerkennung des Aufrufers.
USER_GROUP
Teilnehmer können alle Tasks sein, deren Benutzerkennungen der gleichen Benutzergruppe angehören wie die Benutzerkennung des einrichtenden Teilnehmers.
Der Operandenwert setzt die Existenz von Benutzergruppen voraus und kann daher nur angegeben werden, wenn die Funktionseinheit SRPM des Software-Produkts SE-COS im System vorhanden ist. Vor einem Makroaufruf mit SCOPE=USER_GROUP
muss deshalb mit dem Makro GETUGR (siehe Handbuch „SECOS“ [14]) geprüft werden, ob SRPM zur Verfügung steht; abhängig vom Ergebnis (Returncode) ist im Programm zu reagieren.
GLOBAL
Teilnehmer sind alle Tasks im System.
EIIDRET=
bezeichnet ein Feld, in das die Kurzkennung für die Ereigniskennung übergeben werden soll.
adr
symbolische Adresse (Name) des Feldes für die Kurzkennung;
Feldlänge = 4 Byte; das Feld ist auf Wortgrenze auszurichten.
(r)
r = Register mit dem Adresswert adr.
SOLSIGQ=
bezeichnet das Warteschlangen-Prinzip für die Einreihung der SOLSIG-Anforderungen. Alle ENAEI-Makros unter einer bestimmten Ereigniskennung müssen dasselbe Warteschlangen-Prinzip für die SOLSIG-Anforderungen vereinbaren.
FIFO
FIFO = First In First Out.
LIFO
LIFO = Last In First Out.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
PARMOD=
steuert die Makroauflösung. Es wird entweder die 24-Bit- oder die 31-Bit-Schnittstelle generiert.
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).
31
Die 31-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 31-Bit-Adressen (Adressraum <= 2 GB).
Rückinformation und Fehleranzeigen
Während der Makrobearbeitung enthält Register R1 die Adresse der Operandenliste.
R15:
+---------------+ | | | | | |b|b| | | | |a|a| +---------------+
Über die Ausführung des Makros ENAEI wird ein gegliederter Returncode (aa=primärer RC, bb=sekundärer RC) im Register R15 übergeben.
X'bb' | X'aa' | Erläuterung |
X'04' | X'00' | Funktion ausgeführt: Die Ereigniskennung wurde vom System erstellt und der |
X'08' | X'00' | Funktion ausgeführt: Die vom System bereits erstellte Ereigniskennung wurde der |
X'0C' | X'04' | Keine Aktion: Die Ereigniskennung war bereits der Task des Aufrufers zugeordnet. |
X'10' | X'04' | Keine Aktion: Es wurden ungültige Operanden angegeben. |
X'18' | X'04' | Keine Aktion: Die maximal erlaubte Anzahl von gleichzeitig verwendeten |
X'1C' | X'04' | Keine Aktion: Für die Ereigniskennung wurden unterschiedliche Vereinbarungen |
Beispiele siehe "Ereignisgesteuerte Verarbeitung (Eventing)", "Contingency-Prozesse" sowie die Beschreibung der Makros POSSIG ("POSSIG - Ereignis signalisieren") und SOLSIG ("SOLSIG - Signal anfordern").