Alle neuen Makros und i.d.R. die Makros, die um die 31-Bit-Schnittstelle erweitert wurden, benutzen zur Identifikation ihrer Schnittstelle den Standardheader.
Der Standardheader ist ein 8 Byte langes Feld am Anfang der Operandenliste (Parameterliste) mit der (normierten) Bezeichnung der Schnittstelle und 4 Byte zur Aufnahme eines Returncodes. Der Standardheader wird vom jeweiligen Makro erzeugt und initialisiert, d.h. mit den gültigen Werten für UNIT, FUNCTION und VERSION versorgt. Bei Makroaufrufen in der E-Form unter Bezug auf die Operandenliste muss unter Umständen der Aufrufer den Standardheader initialisieren. Näheres ist beim jeweiligen Makro angegeben.
Aufbau des Standardheaders:
Byte | Feldinhalt und Bedeutung |
0 - 1 | Bezeichnung der Funktionseinheit (UNIT) mit der verlangten Funktion |
Folgende Werte des Returncodes sind Konvention:
(SC2) | SC1 | Maincode | Bedeutung |
00 | 00 | 0000 | Erfolgreiche Funktionsausführung. Es gibt keine zusätzlichen Informationen zum Maincode. |
01 | 00 | 0000 | Erfolgreiche Funktionsausführung. Es waren keine weiteren Aktionen erforderlich. |
00 | 01 | FFFF | Die angeforderte Funktion wird nicht unterstützt (falsche Angabe für UNIT oder FUNCTION im Standardheader). Nicht behebbarer Fehler. |
00 | 02 | FFFF | Die angeforderte Funktion ist nicht verfügbar. Nicht behebbarer Fehler. |
00 | 03 | FFFF | Die angegebene Version der Schnittstelle wird nicht unterstützt (falsche Versionsangabe im Standardheader). Nicht behebbarer Fehler. |
00 | 04 | FFFF | Parameterliste nicht auf Wortgrenze ausgerichtet. |
00 | 41 | FFFF | Das Subsystem ist nicht vorhanden; es muss explizit erzeugt werden. |
00 | 42 | FFFF | Die aufrufende Task ist mit dieser Schnittstelle nicht konnektiert; sie muss explizit konnektiert werden. |
00 | 81 | FFFF | Subsystem zurzeit nicht verfügbar. |
00 | 82 | FFFF | Subsystem im DELETE- oder HOLD-Zustand. |
Der Maincode kennzeichnet das Ergebnis der Funktionsausführung. SC1 dient der Klassifizierung des Hauptwertes. SC2 dient der weiteren Unterteilung des Fehlers in Fehlerklassen oder enthält zusätzliche Diagnoseinformationen.
Bei allen ab BS2000 V9.0 neu eingeführten Makros sollte der Returncode ausschließlich im Standardheader übergeben werden. In einer Übergangsphase kann der Returncode bei manchen Makroschnittstellen aber auch im Register R15 oder sowohl im Standardheader als auch im Register R15 übergeben werden. Um zu prüfen, ob im Standardheader ein Returncode übergeben wurde, sollte das Returncode-Feld mit X’FFFFFFFF’ vorbesetzt werden.