Allgemeines
Anwendungsgebiet: | Contingency-Verfahren; siehe "Contingency-Prozesse" |
Makrotyp: | S-Typ, MF-Format 1: Standardform/L-/E-Form; siehe "S-Typ-Makroaufrufe" |
Makrobeschreibung
Durch den Aufruf des Makros ENACO wird eine Routine als Contingency-Prozess definiert. Der Contingency-Prozess erhält dabei einen Namen. Er muss definiert sein, bevor er in einem SOLSIG- oder POSSIG-Makroaufruf angegeben werden kann. Durch den Aufruf ENACO wird eine Kurzkennung zur Verfügung gestellt, die in weiteren Aufrufen, die sich auf den Contingency-Prozess beziehen, zu verwenden ist. Ein Programm kann maximal 400 Contingency-Prozesse gleichzeitig verwenden. Der Geltungsbereich eines Contingency-Prozesses ist lokal: Die Verwendung ist auf die Task des Aufrufers beschränkt.
Der zum Zeitpunkt des ENACO-Aufrufs bestehende Adressierungsmodus (AMODE) muss auch bei Ablauf der Contingency-Routine eingeschaltet sein.
Makroaufrufformat und Operandenbeschreibung
ENACO |
{ CONAME=name / CONAMAD={adr / (r)} [,CONAMLN=länge] } ,COADAD={adr / (r)} ,COIDRET={adr / (r)} [,COMAD={adr / (r)} ] [,LEVEL={prio / (r)}] [,PARMOD={24 / 31}] [,MF={L / (E, ..})] |
CONAME=
bezeichnet den Namen des Contingency-Prozesses.
name
Name des Contingency-Prozesses. 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.
CONAMAD=
bezeichnet die Adresse des Felds mit dem Namen des Contingency-Prozesses (Namensbildung siehe CONAME).
adr
symbolische Adresse (Name) des Feldes
(r)
r = Register mit dem Adresswert adr
CONAMLN=
beschreibt die Länge des Namens des Contingency-Prozesses, wenn CONAMAD=... spezifiziert wurde.
länge
Länge des Namens in Byte
Voreinstellung:
Längenattribut des bei CONAMAD=... angegebenen Feldes
54 Byte, wenn CONAMAD=(r) spezifiziert wurde
COADAD=
bezeichnet ein Feld, das die Startadresse des Contingency-Prozesses enthält. Das Feld ist auf Wortgrenze auszurichten.
adr
symbolische Adresse (Name) eines Feldes, das die Startadresse enthält
(r)
r = Register mit der Adresse adr
COIDRET=
bezeichnet die Adresse eines Feldes, in das eine Kurzkennung übergeben wird. Die Kurzkennung ist in weiteren Makroaufrufen, die sich auf den Contingency-Prozess beziehen, zu verwenden. Das Feld ist auf Wortgrenze auszurichten.
adr
symbolische Adresse (Name) des Feldes für die Kurzkennung
(r)
r = Register mit dem Adresswert des Feldes
COMAD=
bezeichnet ein Feld, das eine Contingency-Mitteilung enthält. Die Mitteilung wird in das Register R1 des Contingency-Prozesses übertragen. Eine hier gegebene Mitteilung kann durch eine eventuell beim SOLSIG- oder POSSIG-Makroaufruf gegebene ersetzt werden.
adr
symbolische Adresse (Name) des Feldes mit der Mitteilung
(r)
r = Register mit dem Adresswert adr
LEVEL=
benennt die Priorität (Verarbeitungsebene) des Contingency-Prozesses.
prio
Priorität des Contingency-Prozesses; 1 <= prio <= 127
Voreinstellung: prio = 1.
(r)
r = Register mit dem Wert für prio.
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 ENACO 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' | Der Contingency-Prozess wurde für den aufrufenden Prozess definiert. |
X'0C' | X'04' | Der Contingency-Prozess war bereits für den aufrufenden Prozess definiert. Keine |
X'10' | X'04' | Es wurden ungültige Operanden angegeben. Keine Aktion. |
X'18' | X'04' | Die maximal erlaubte Anzahl von gleichzeitig verwendeten Contingency-Prozessen |
Beispiele siehe "Contingency-Prozesse" und "POSSIG - Ereignis signalisieren".