Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Standardheader

&pagelevel(3)&pagelevel

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 des Datenbereichs 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 den Datenbereich 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

2

Bezeichnung der Funktion (FUNCTION) innerhalb der Funktionseinheit

3

Bezeichnung des Änderungsstandes (VERSION) der Funktion

4

Unterwert 2 des Returncodes (SUBCODE2)

5

Unterwert 1 des Returncodes (SUBCODE1)

6 - 7

Hauptwert des Returncodes (MAINCODE)

Tabelle 3: Standardheader

Folgende Werte des Returncodes sind durch Konvention makroübergreifend festgelegt:

SUB-
CODE2

SUB-
CODE1

MAIN-
CODE

Bedeutung

X'00'

X'00'

X'0000'

Erfolgreiche Funktionsausführung. Es gibt keine zusätzlichen
Informationen zum MAINCODE.

X'01'

X'00'

X'0000'

Erfolgreiche Funktionsausführung. Es waren keine Aktionen erforderlich.


X'00'

X'01'

X'FFFF'

Die angeforderte Funktion wird nicht unterstützt (falsche Angabe für
UNIT oder FUNCTION im Standardheader).
Nicht behebbarer Fehler.

X'00'

X'02'

X'FFFF'

Die angeforderte Funktion ist nicht verfügbar.
Nicht behebbarer Fehler.

X'00'

X'03'

X'FFFF'

Die angegebene Version der Schnittstelle wird nicht unterstützt (falsche
Versionsangabe im Standardheader).
Nicht behebbarer Fehler.

X'00'

X'04'

X'FFFF'

Der Datenbereich 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'

Die aufrufende Task ist mit dieser Schnittstelle nicht konnektiert; sie
muss explizit konnektiert werden.

X'00'

X'81'

X'FFFF'

Das Subsystem ist zurzeit nicht verfügbar.

X'00'

X'82'

X'FFFF'

Das Subsystem ist im DELETE- oder HOLD-Zustand.

MAINCODE kennzeichnet das Ergebnis der Funktionsausführung. SUBCODE1 dient der Klassifizierung des Hauptwertes. SUBCODE2 dient der weiteren Unterteilung des Fehlers in Fehlerklassen oder enthält zusätzliche Diagnoseinformationen.
Bei allen neuen Makros sollte der Returncode ausschließlich im Standardheader übergeben werden. Der Returncode kann bei manchen Makroschnittstellen aber auch im Register R15 oder im Standardheader und 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.

Beispiel für die Erzeugung des Standardheaders

           WROUT    START
           PRINT NOGEN
           BALR  3,0
           USING *,3
  WROUT    AMODE ANY
  WROUT    RMODE ANY
           GPARMOD 31
1                 *,MACRO: GPARMOD, VERSION: VER121
           PRINT GEN
           WROUT OUTPUT,STOP
1          ##SPASS S0002S,S0002D                                     A312
2          CNOP  0,4
2          BAS   1,S0002S           ADDRESS AND SKIP PARAMS
1 S0002D     DS 0F                                                   A340
1          FHDR  UNIT=36,FUNCT=17,VERS=2
2          DS    0A
2          DS    0XL8                GENERAL OPERAND LIST HEADER
2          DC    AL2(36)             FUNCTION UNIT NUMBER
2          DC    AL1(17)             FUNCTION NUMBER
2          DC    AL1(2)              FUNCTION INTERFACE VERSION NUMBER
2          DC    X'FFFFFFFF'          Returncode is virgin
1 *
1          DC    AL4(STOP)                ERROR ADDRESS
1          DC    AL4(OUTPUT)              MESSAGE AREA ADDRESS
  *        :