Alle DVS-Makros benutzen in ihrer 31-Bit-Schnittstelle den Standardheader für BS2000-Makros. Dieser Standardheader ist ein 8-Byte-Feld am Beginn der Operandenliste, das die normierte Bezeichnung der Schnittstelle enthält und Returncodes aufnehmen kann. Er wird vom jeweiligen Makro erzeugt und sollte – wenn möglich – mit der List-Form der MF-Operanden initialisiert werden.
Aufbau des Standardheaders
Feldinhalt | Byte-Position | Bedeutung |
UNIT | 0-1 | bezeichnet die Funktionseinheit, in der die gesuchte Funktion realisiert ist |
FUNCTION | 2 | bezeichnet die Funktion (innerhalb der Funktionseinheit) |
VERSION | 3 | bezeichnet den „Änderungsstand“, d.h. die Versionsnummer der Funktion |
SUBCODE2 | 4 | enthält den Sub-Returncode2 |
SUBCODE1 | 5 | enthält den Sub-Returncode1 |
MAINCODE | 6-7 | enthält den Haupt-Returncode |
Die Felder SUBCODE2, SUBCODE1, MAINCODE enthalten den Returncode. Der Haupt-Returncode zeigt an, ob eine Operation erfolgreich ausgeführt werden konnte. Im Fehlerfall kann durch die Sub-Returncodes der Fehler festgestellt werden.
Folgende Werte des Returncodes sind Konvention:
SUBCODE2 | SUBCODE1 | MAINCODE | Bedeutung |
X'00' | X'00' | X'0000' | Erfolgreiche Funktionsausführung. |
X'01' | X'00' | X'0000' | Erfolgreiche Funktionsausführung. |
X'00' | X'01' | X'FFFF' | Die angeforderte Funktion wird nicht unterstützt (falsche Angabe für UNIT oder FUNCTION im Standardheader). |
X'00' | X'02' | X'FFFF' | Die angeforderte Funktion ist nicht verfügbar. |
X'00' | X'03' | X'FFFF' | Die angegebene Version der Schnittstelle wird nicht unterstützt (falsche Versionsangabe im Standardheader). |
X'00' | X'04' | X'FFFF' | Parameterliste ist nicht auf Wortgrenze ausgerichtet. |
X'00' | X'41' | X'FFFF' | Das Subsystem ist nicht vorhanden; es muss explizit erzeugt werden. |
X'00' | X'42' | X'FFFF' | Der aufrufende Ablauf ist mit dieser Schnittstelle nicht konnektiert; er muss explizit konnektiert werden. |
X'00' | X'81' | X'FFFF' | Subsystem zurzeit nicht verfügbar. |
X'00' | X'82' | X'FFFF' | Subsystem im DELETE- oder HOLD-Zustand. |
MAINCODE kennzeichnet das Ergebnis der Funktionsausführung. SUBCODE1 dient der Qualifizierung des Hauptwertes. SUBCODE2 dient der weiteren Unterteilung des Fehlers in Fehlerklassen.
Der Returncode sollte ausschließlich im Standardheader übergeben werden (Ausnahmen DVS-Makros siehe "Fehlermeldungsschlüssel im DVS"). In einer Übergangsphase kann der Returncode 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. Das Ergebnis der Prüfung des Standardheaders wird in jedem Fall auch im Register R15 übergeben:
X'00000000': | Standardheader richtig initialisiert; normale Ausführung. |
X'0001FFFF' | Falsche Angabe für UNIT oder FUNCTION. |
X'0003FFFF': | Falsche Angabe für VERSION. |