Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

CDUMP2 - User-, System- oder Areadump ausgeben

&pagelevel(3)&pagelevel

Die drei von CDUMP2 unterstützten Dumpformen unterscheiden sich im Umfang der angebotenen Informationen und im Namen und der Kennung für die ausgegebene Dump-Datei. Die folgenden Abschnitte stellen die wichtigsten Eigenschaften des Area-, User- und Systemdumps zusammen:

Areadump

Umfang des Areadumps:

  • Die im CDUMP2-Aufruf angegebenen Bereiche des Benutzeradressraumes aus dem Klasse-6-Speicher und Klasse-5-Speicher, sofern die Ausgabe nicht durch den Systemparameter DUMPCL5P verboten ist.

  • Besonders geschützte Seiten („Secret Pages“, Makroaufruf CSTAT PROTECT=YES) werden nur in dem Umfang ausgegeben, der durch den Systemparameter DUMPSEPA festgelegt ist.

  • Zusätzliche Systembereiche: Modul AIDSYSD, der Bereich mit der COMAREA, die Tabellen TCB und TU-PCB (siehe Userdump); darüber hinaus - falls mit dem Operanden MODE=*EXP angefordert - alle weiteren Systembereiche des Userdumps.

  • Datenräume (siehe Abschnitt „Erweiterung durch Datenräume“), an die der CDUMP2-Aufrufer konnektiert ist. Der Aufrufer bestimmt über den Datenbereich, welche Bereiche aus welchen Datenräumen gesichert werden sollen.

  • Mit /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(...) kann die Ausgabe gesteuert werden, siehe „Kommandos“ [19].

Kennung für die Areadump-Datei:

  • Benutzerkennung der Task, die CDUMP2 aufgerufen hat, falls der Benutzer berechtigt ist, alle im Dump ausgegebenen Daten zu lesen.

  • Systemkennung SYSUSER, wenn der Dump lesegeschützte Daten enthält, auf die der Benutzer nicht zugreifen darf (z.B. Programme, die mit einem Lese-Kennwort geschützt sind, das der Benutzer nicht in die Passwort-Tabelle der Task eingetragen hat).

Name der Areadump-Datei:

  • $userid.SYS.ADUMP[.jobname].tsn.i, falls die Datei unter der Kennung des CDUMP2-Aufrufers angelegt wird

  • $SYSUSER.SYS.ADUMP[.jobname].tsn.i.userid, falls die Datei unter der Systemkennung SYSUSER angelegt wird.

    Dabei bedeuten:

    userid

    Benutzerkennung des CDUMP2-Aufrufers

    jobname

    JOB-NAME des Auftrags, der CDUMP2 aufgerufen hat (aus dem SET-LOGON-PARAMETERS-Kommando)

    tsnTSN des Auftrags, der CDUMP2 aufgerufen hat
    ilaufende Nummer des Area-/ Userdumps innerhalb der Task

Userdump

Umfang des Userdumps:

  • Gesamter Klasse-6- und Klasse-5-Speicher, sofern nicht durch den Systemparameter DUMPCL5P verboten.

  • Besonders geschützte Seiten („Secret Pages“, Makroaufruf CSTAT PROTECT=YES) werden nur in dem Umfang ausgegeben, der durch den Systemparameter DUMPSEPA festgelegt ist.

  • Zusätzliche Systembereiche: Modul AIDSYSD, Trace Dump List; taskspezifische Systemtabellen wie TCB (Task Control Block), TFT (Task File Table), TU-PCB (Process Control Block), TU-AUDIT-TABLE (AUDIT-Tabelle, siehe Makro AUDIT).

  • Die System-Trace-Table wird zum Zeitpunkt des CDUMP2-Aufrufs zwischengespeichert und bei der Dump-Erstellung in den Dump eingearbeitet (an der Stelle, wo sie auch im System steht).

  • Zeigt der Fehlertask-Befehlszähler (PC) in den Systemadressraum, werden zusätzlich alle über Mehrzweckregister und PCs referenzierte Seiten (plus 5 Seiten davor und 5 Seiten danach) ausgegeben. Ist mindestens eine Seite dabei, die privilegiert, aber nicht „common readable“ ist, wird der Userdump auf die Kennung SYSUSER ausgegeben.

  • Datenräume (siehe Abschnitt „Erweiterung durch Datenräume“), an die der CDUMP2-Aufrufer konnektiert ist.Über den Makro-Operanden DS bestimmt der Aufrufer, ob bestimmte, alle oder keine Datenräume gesichert werden sollen. Wird der Operand DS nicht angegeben, so bestimmt der bei /MODIFY-TEST-OPTIONS Operand DATA-SPACES=*YES/*NO eingestellte Wert die Ausgabe der Datenräume.

  • Mit /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(...) kann die Ausgabe gesteuert werden, siehe „Kommandos“ [19].

Kennung für die Userdump-Datei:

  • Benutzerkennung der Task, die CDUMP2 aufgerufen hat, wenn der Benutzer berechtigt ist, alle im Dump ausgegebenen Daten zu lesen und der Dump keine referenzierten Seiten enthält, die im privilegierten Adressraum liegen und nicht „common readable“ sind.

  • Systemkennung SYSUSER, wenn der Dump lesegeschützte Daten enthält, auf die der Benutzer nicht zugreifen darf (z.B. Programme, die mit einem Lese-Kennwort geschützt sind, das der Benutzer nicht in die Passwort-Tabelle der Task eingetragen hat).

Name der Userdump-Datei:

  • $userid.DUMP[.jobname].tsn.i, falls die Datei unter der Benutzerkennung des CDUMP2-Aufrufers eingerichtet wird.

  • $SYSUSER.DUMP[.jobname].tsn.i.userid, falls die Datei unter der Benutzerkennung SYSUSER angelegt wird.

    Bedeutung siehe Areadump.

Systemdump

Einen Systemdump kann ein Anwender nur dann anfordern, wenn er mit /MODIFY-TEST-OPTIONS PRIVILEGE=*PARAMETERS(READ=m,WRITE=1) seine Leseprivilegierung auf einen Wert m>=3 eingestellt hat. Dazu ist er nur berechtigt, wenn ihm diese Privilegierungsmöglichkeit im Benutzerkatalog eingeräumt wurde.

Ein User- oder Areadump kann bei vorliegender Testprivilegierung (siehe oben) in einen Systemdump umgewandelt werden

  • mit /MODIFY-TEST-OPTIONS Operand DUMP=*SYSTEM. Die Meldung IDA0N45 wird dann unterdrückt.

  • durch die Antwort Y,SYSTEM auf die Meldung IDAN045.

Der Operator kann steuern, ob der Systemdump auf Platte oder auf Magnetband ausgegeben wird.
Beim Systemdump wird, abhängig vom Wert des Systemparameters DUMPCTRL, bei einem abnormalen Dumpabbruch die Meldung IDA0N99 ausgegeben.

Umfang des Systemdumps:

  • Gesamter Klasse-6-Speicher - abhängig vom Wert des Systemparameters DUMPS-REF - mit Ausnahme der Seiten, die zu „Secret Pages“ erklärt wurden.

  • Gesamter Klasse-5, Klasse-3- und Klasse-1-Speicher mit Ausnahme der Seiten, die zu „Secret Pages“ erklärt wurden.

  • Alle Datenbereiche aus dem Klasse-4-Speicher sowie jene Coding-Seiten aus dem Klasse-4- und Klasse-2-Speicher, die bis zu einem Abstand von 5 Seiten vor und nach einer Adresse liegen, auf die die Befehlszähler (PC) aus den PCBs und der Trace Table sowie die Mehrzweckregister der PCBs und die Börsenregister des TCB verweisen. Ausgenommen davon sind „Secret Pages“.

  • Besonders geschützte Seiten („Secret Pages“, Makroaufruf CSTAT PROTECT=YES) werden nur in dem Umfang ausgegeben, der durch den Systemparameter DUMPSEPA festgelegt ist.

  • Mit SNAP wird der Klasse-1-, Klasse-3- und der residente Klasse-4-Speicher vor der eigentlichen Dump-Erstellung zwischengespeichert und anschließend in den Dump eingearbeitet.

  • Die System-Trace-Table wird zum Zeitpunkt des CDUMP2-Aufrufs zwischengespeichert und bei der Dump-Erstellung in den Dump eingearbeitet (an der Stelle, wo sie auch im System steht).

  • Zusätzliche Systembereiche: Die Module AIDSYSD, EOLDTAB, DMCHD, NSISINF, CLASS2OP; Bereiche mit TU-AUDIT, Trace Dump List und die Systemdateien REPLOG und SERSLOG; Systemtabellen wie beim Userdump.

  • Datenräume (siehe Abschnitt „Erweiterung durch Datenräume“), die das Betriebssystem über eine privilegierte Schnittstelle ($DMPDEF(I)) beim Dumperzeuger CDUMP angemeldet hat.

Kennung für die Systemdump-Datei: SYSDUMP

Name der Systemdump-Datei:

:catid:$SYSDUMP.{ABSOLU / modul}.pc.ec.tsn.datum.uhrzeit

Dabei bedeuten:


modul

Name des Moduls, aus dem CDUMP2 aufgerufen wurde, max. 8
Zeichen

ABSOLU

Wird eingesetzt, wenn kein Modulname existiert

pc

Adresse im Befehlszähler (relativ zum Modulanfang bzw. absolut)

ec

Ereigniscode (sedezimal)

tsn

TSN der Task, die CDUMP2 aufgerufen hat

datum

Datum in der Form Dyymmdd (D ist Aufmerker für Datumsbeginn)

uhrzeit

Uhrzeit in der Form hhmmss


Dumpausgabe

  • Der Anwender kann einen Dump anfordern, wenn vorher /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(DUMP=*YES) angegeben wurde bzw. DUMP=*STD voreingestellt ist. Bei DUMP=*YES wird der Dump automatisch erstellt, sonst erscheint bei der Dumpanforderung folgende Anfrage:

    IDA0N45 DUMP DESIRED? REPLY (Y=USER-/AREADUMP TO DISK; 
                          Y,<VOLUMETYPE>=USER-/AREADUMP TO TAPE; 
                          Y,SYSTEM=SYSTEMDUMP; 
                          N=NO)
    

    Der Anwender kann wahlweise einen User- oder Areadump (mit der Antwort: Y) oder einen Systemdump (mit der Antwort: Y,SYSTEM) auf Platte anfordern. Für die Anforderung eines Systemdumps ist eine entsprechende Testprivilegierung erforderlich. Bei Angabe von <VOLUMETYPE> wird der Dump auf Band ausgegeben.

  • Wenn /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(DUMP=*STD) voreingestellt ist, wird in Prozeduren oder im Batch-Betrieb kein Speicherauszug ausgegeben. Es erscheint folgende Meldung:

    IDA0N48 TASK/SYSTEM SETTINGS PROHIBIT DUMP

  • Ist /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(DUMP=*NO) gesetzt, wird die Dumpanforderung abgewiesen. Es erscheint folgende Meldung:

    IDA0N47 DUMP PROHIBITED BY /MODIFY-TEST-OPTIONS COMMAND

  • Hat der Anwender einen Systemdump angefordert, erscheint an der Konsole folgende Meldung:

    IDA0N52 SYSTEM DUMP DESIRED? REPLY (EOT=OUTPUT TO DISK;

                                 <VOLUMETYP>=OUTPUT TO TAPE;

    N=NO)

    Die Konsolemeldung IDA0N52 kann mit den Systemparametern DUMPCTRL und DUMPSD# unterdrückt werden. Generell wird die Meldung unterdrückt, wenn DUMP-CTRL auf „operatorlosen Betrieb“ oder „Fehler in Systemtask“ gesetzt ist. Weiter kann mit DUMPSD# die Anzahl der Meldungen IDA0N52 angegeben werden, die pro Session nicht an der Konsole erscheinen sollen.

    Wird IDAN052 unterdrückt, so wird der Dump automatisch erstellt. Dadurch kann eine bessere Konsistenz der Daten im Klasse-3- und Klasse-4-Speicher erreicht werden.

  • Ist für die Ausgabe eines User- oder Areadumps zu wenig Speicherplatz vorhanden, so wird mit folgender Meldung abgebrochen:

    IDA0N57 INSUFFICIENT DISK SPACE. NO DUMP OUTPUT

  • Sind die CDUMP2-Operanden nicht ordnungsgemäß angegeben, wird die Speicherausgabeanforderung mit folgender Meldung abgewiesen:

    IDA0N46 CDUMP OPERAND LIST INCORRECT OR NOT AVAILABLE .

    Tritt bei der Ausgabe des Speicherabzugs ein Fehler im System auf, so werden (abhängig vom Fehler) folgende Meldungen ausgegeben:

  • IDA0N63 DMS xxxx ERROR OCCURRED. DUMP PROCESSING CONTINUED
    Die Dump-Verarbeitung wird fortgesetzt.

  • IDA0N61 DUMP PROCESSING ABORTED DUE TO aaa ERROR AT PC=bbb. RC=ccc
    Diese Meldung wird bei User- oder Systemdump auch auf Konsole ausgegeben. Gleichzeitig wird bei Ausgabe der Meldung ein SERSLOG-Eintrag geschrieben. Die Dump-Verarbeitung wird abgebrochen.

  • Die Dump-Ausgabe wird zeitlich überwacht. Kann der Dump nicht innerhalb von 36 Minuten ausgegeben werden, wird die Dump-Ausgabe abgebrochen.

  • Einspielen von Dumpdateien vom Band
    Wurde der Dump auf Magnetbandkassette gezogen, so kann er mittels COPY-FILE-Kommando auf Platte kopiert werden. Das Dienstprogramm PERCON kann in diesem Fall nicht benutzt werden.

    Beispiel

    /IMPORT-FILE SUPPORT=*TAPE(VOLUME=<volume>,DEVICE=<device>,-
           FILE-NAME=<originaldateiname>)
    /ADD-FILE-LINK LINK=DMCOPY11,FILE-NAME=<originaldateiname>,-
           ACCESS-METHOD=*UPAM,BUF-LEN=*STD(2)
    /ADD-FILE-LINK LINK=DMCOPY22,FILE-NAME=<ausgabedateiname>,-
           ACCESS-METHOD=*UPAM,BUF-LEN=*STD(2)
    /COPY-FILE FROM-FILE=<originaldateiname>,TO-FILE=<ausgabedateiname>
    

    Siehe dazu auch COPY-FILE-Kommando im Handbuch „Kommandos“ [19].

Allgemeines

Anwendungsgebiet: Testhilfe; siehe "Testhilfe"

Makrotyp: S-Typ, MF-Format 1: C-/D-/L-/M-/E-Form; siehe "S-Typ-Makroaufrufe"

CDUMP2 generiert immer eine 31-Bit-Schnittstelle. Zur Generierung einer 24-Bit-Schnittstelle muss der alte Makro CDUMP (Anhang) verwendet werden.

Makrobeschreibung

Der Makro CDUMP2 erstellt (in einer eigenen Dumptask) einen Speicherabzug für die Task, die CDUMP2 aufgerufen hat. Durch Angabe des Operanden SCOPE kann der Anwender bestimmen, ob ein Area-, User- oder Systemdump ausgegeben werden soll.

Der Dump wird unaufbereitet als PAM-Datei auf Platte geschrieben (wahlweise auch auf Magnetband/Magnetbandkassette). Es ist nicht möglich, den Dump auf mehrere Bänder zu verteilen. Zur Auswertung und Druckausgabe kann der Dump mit den Software-Produkten DAMP und AID aufbereitet werden (siehe „Diagnosehandbuch“ [9] und „AID“ [3]).

Makroaufrufformat und Operandenbeschreibung

CDUMP2

MF=C / D / L / M / E

,SCOPE=*USER / *SYSTEM / *AREA

[,XPAND=PARAM / DSCB / AREA]

,PC=*STD / <var: pointer> / (<reg: pointer> )

,EC=*STD / <var: pointer> / (<reg: pointer> )

,CODE=<var: pointer> / (<reg: pointer> )

,INSERT=<var: pointer> / (<reg: pointer> )

,TITL=*STD / <var: pointer> / (<reg: pointer> )

,SNAP=*STD / *YES / *NO

,ELSN=*NONE / <var: pointer> / (<reg: pointer> )

,DIAG=*NO / *YES

,DIV=*STD / *YES / *NO

,DS=*STD / *YES / *NO / <var: pointer> / (<reg: pointer>)

,MMAP=*STD / *YES / *NO

,NUM=<integer 1..2048>

,MODE=*STD / *EXP

,DSCTRL=<var: pointer> / (<reg: pointer> )

In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.

CODE=
bezeichnet eine Zeichenfolge zur Kennzeichnung des Dumps; Länge = 7 Byte. Die Zeichenfolge wird bei der Meldung IDA0N51 ausgegeben. Der Operand darf nur zusammen mit SCOPE=*USER oder SCOPE=*SYSTEM angegeben werden.

<var: pointer>
Name des Feldes mit der Adresse der Zeichenfolge; nur in Verbindung mit MF=M zulässig.

(<reg: pointer>)
Register mit der Adresse der Zeichenfolge; nur in Verbindung mit MF=M zulässig.

DIAG=
steuert, ob die Meldung IDA0N50 an den Operator gesendet wird, die die Adresse des CDUMP2-SVCs enthält. Der Operand darf nur in Verbindung mit SCOPE=*SYSTEM angegeben werden.

*NO
Die Meldung IDA0N50 wird nicht ausgegeben.

*YES
Die Meldung IDA0N50 wird ausgegeben.

DIV=
gibt an, ob DIV-Fenster im Userdump enthalten sein sollen. Der Operand darf nur zusammen mit SCOPE=*USER angegeben werden, andernfalls wird DIV=*YES angenommen. Siehe auch Abschnitt „Erweiterung durch Datenräume“.

*STD
Der mit dem Operanden DATA-IN-VIRTUAL in /MODIFY-TEST-OPTIONS eingestellte Wert bestimmt, ob DIV-Fenster im Userdump enthalten sein sollen (*YES) oder nicht (*NO).

*YES
Es sollen alle DIV-Fenster im Userdump enthalten sein.

*NO
Es sollen keine DIV-Fenster im Userdump enthalten sein.

DS=
bestimmt, welche Speicherbereiche aus Datenräumen (DS) in den Userdump aufgenommen werden sollen. Angabe nur zusammen mit SCOPE=*USER.
Im Areadump sind genau diejenigen Bereiche aus Datenräumen enthalten, die der Benutzer beim DSCTRL-Operanden angegeben hat. Bei Systemdumps werden nur die Bereiche aus Datenräumen aufgenommen, die das Betriebsystem über eine priviligierte Schnittstelle ($DMPDEF(I)) beim Dumperzeuger CDUMP angemeldet hat.
Siehe auch Abschnitt „Erweiterung durch Datenräume“.

*STD
Der mit dem Operanden DATA-SPACES in /MODIFY-TEST-OPTIONS eingestellte Wert bestimmt, ob Datenräume in den Userdump aufgenommen werden sollen (*YES) oder nicht (*NO).

*YES
Es werden alle, aber max. 100, vom Aufrufer genutzte Datenräume in den Userdump aufgenommen.

*NO
Es werden keine Datenräume in den Userdump aufgenommen.

<var: pointer>
Name des Feldes mit der Adresse der Liste der Datenräume; nur in Verbindung mit MF=M zulässig.

(<reg: pointer>)
Register mit der Adresse der Liste der Datenräume; nur in Verbindung mit MF=M zulässig.
Diese Liste enthält die SPIDs (8 Byte pro Eintrag). Sie muss mit einem Null-Eintrag (D(0)) abgeschlossen werden.

DSCTRL=
ist ein Zeiger auf einen Data Space Control Block (DSCB). Im DSCB können ein Datenraum und die zugehörigen Bereiche definiert werden. DSCTRL muss auf den ersten DSCB zeigen. Der Operand darf nur zusammen mit SCOPE=*AREA angegeben werden.

Datenstruktur eines DSCB:

CDDDSCB   DSECT  ,        DATA SPACE  CTRL BLOCK
CDDDS@    DS     A                    Zeiger auf nächsten DSCB
CDDSPID   DS     XL8                  SPID des DS
CDDNUM    DS     H                    Anzahl der Bereiche im DS
CDDSTRT   DS     A                    Beginn des ersten Bereiches
CDDEND    DS     A                    Ende des ersten Bereiches

Maximale Anzahl der Bereiche im DSCB ist 2048. Der Anwender kann DSCB-Blöcke verketten, um Bereiche mehrerer Datenräume seiner Task angeben zu können. Standardmäßig sind keine Bereiche aus einem Datenraum angegeben. Siehe auch Abschnitt „Erweiterung durch Datenräume“.

<var: pointer>
Name des Feldes mit der Adresse des DSCB; nur in Verbindung mit MF=M zulässig.

(<reg: pointer>)
Register mit der Adresse des DSCB; nur in Verbindung mit MF=M zulässig.

Angabe, um die DSECT eines DSCB zu erhalten: CDUMP2 MF=D,XPAND=DSCB. Angabe, um die DSECT eines Bereichs zu erhalten: CDUMP2 MF=D,XPAND=AREA.

EC=

bestimmt, woher der Ereigniscode (Eventcode, Unterbrechungsgewicht) geholt werden soll. Der Ereigniscode wird in der Meldung IDA0N51 ausgegeben. Der Operand darf nur zusammen mit SCOPE=*USER oder SCOPE=*SYSTEM angegeben werden, bei SCOPE=*AREA wird der Ereigniscode stets aus dem Aufrufer-Stack geholt.

*STD
Der Ereigniscode soll aus dem Aufrufer-Stack geholt werden.

<var: pointer>
Name des Feldes mit der Adresse des Ereigniscodes; nur in Verbindung mit MF=M zulässig.

(<reg: pointer>)
Register mit der Adresse des Ereigniscodes; nur in Verbindung mit MF=M zulässig.

ELSN=
bezeichnet die Adresse eines Feldes mit der Nummer eines Error-Log-Sequence-Blocks, in den der Aufrufer spezielle Daten in die Error-Log-Datei abgelegt hat. Die Nummer wird in der Meldung IDA0N51 ausgegeben.
Feldlänge = 4 Byte; Ausrichtung auf Wortgrenze erforderlich. Die Nummer muss als Binärzahl eingegeben werden. Der Operand darf nur in Verbindung mit SCOPE=*SYSTEM angegeben werden.

*NONE
Ein ELSN wird nicht ausgegeben.

<var: pointer>
Name des Feldes mit der Adresse des ELSN; nur in Verbindung mit MF=M zulässig.

(<reg: pointer>)
Register mit der Adresse des ELSN; nur in Verbindung mit MF=M zulässig.

INSERT=
legt einen Text fest, der mit der Meldung IDA0N51 ausgegeben wird. In ihm können z.B. nähere Angaben zur Ursache des Speicherabzuges gemacht werden.
Der Anwender muss diesen Text, der bis zu 60 Zeichen lang sein darf, in einem Datenbereich hinterlegen. Aufbau des Datenbereichs:

Byte 1:

Länge (sedezimal) des auszugebenden Textes (in Byte). Enthält
Byte 1 den Wert 0, wird kein INSERT-Text ausgegeben.

Byte 2 bis n (n<=61):

Auszugebender Text.

Der Operand darf nur zusammen mit SCOPE=*USER oder SCOPE=*SYSTEM angegeben werden.

<var: pointer>
Name des Feldes mit der Adresse des Textes; nur in Verbindung mit MF=M zulässig.

(<reg: pointer>)
Register mit der Adresse des Textes; nur in Verbindung mit MF=M zulässig.

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.
Für Areadumps sind folgende Angaben Pflicht: Bei MF=C/D/E muss der Operand SCOPE, bei MF=C/D zusätzlich der Operand NUM angegeben werden.
Für Systemdumps ist folgende Angabe Pflicht: Bei MF=C/D/E muss der Operand SCOPE angegeben werden.

MMAP=
legt fest, ob Memory-Map-Seiten (Datenbereiche von POSIX-Seiten) im Dump gesichert werden sollen. Dieser Operand wird nur zusammen mit SCOPE=*USER ausgewertet. Für SCOPE=*SYSTEM wird MMAP=*YES angenommen.

*STD
Der mit dem Operanden MEMORY-MAP in /MODIFY-TEST-OPTIONS eingestellte Wert bestimmt, ob Memory-Map-Seiten im Userdump enthalten sein sollen.

*YES
Es sollen alle zur Task gehörenden Memory-Map-Seiten im Userdump enthalten sein.

*NO
Es sollen keine Memory-Map-Seiten im Userdump enthalten sein.

MODE=
legt bei einem Areadump den Umfang der auszugebenden Diagnosedaten fest. Der Operand darf nur zusammen mit SCOPE=*AREA angegeben werden.

*STD
Bewirkt, dass zusätzlich zu den angegebenen Bereichen im Klasse-6- und Klasse-5-Speicher nur das Modul AIDSYSD und die Bereiche mit COMAREA, TU-PCB und TCB ausgegeben werden (siehe Abschnitt „Areadump“).

*EXP
veranlasst, dass zusätzlich zu den angegebenen Bereichen in Klasse-6- und Klasse-5-Speicher auch der Bereich mit COMAREA sowie alle weiteren Systembereiche wie beim Userdump ausgegeben werden (siehe Abschnitt „Userdump“).

NUM=

bezeichnet die Anzahl der auszugebenden Bereiche. NUM darf nur in Verbindung mit MF=L/C/D und nur in Verbindung mit SCOPE=*AREA angegeben werden. Die Anfangs- und Endadressen der auszugebenden Bereiche müssen (dynamisch) im erzeugten Datenbereich eingetragen werden. Die DSECT des Bereichs wird mit CDUMP2 MF=D, XPAND=AREA erzeugt. In Verbindung mit MF=C/D ist NUM Pflichteingabe.

<integer 1..2048>
Anzahl der auszugebenden Bereiche als Direktangabe; Zahlenbereich: 1..2048.

PC=
bezeichnet ein Register oder Feld, das den zu protokollierenden Befehlszähler enthält.

*STD
Der Befehlszähler soll aus dem Aufrufer-Stack geholt werden.

<var: pointer>
Name des Feldes mit der Adresse des Befehlszählers; nur in Verbindung mit MF=M zulässig.

(<reg: pointer>)
Register mit der Adresse des Befehlszählers; nur in Verbindung mit MF=M zulässig.

SCOPE=
gibt an, ob ein User-, System- oder Areadump ausgegeben werden soll.

*USER
Ein Userdump wird ausgegeben.

*SYSTEM
Ein Systemdump wird ausgegeben. Angabe nur erlaubt für Anwender mit Lese-Testprivilegierung >= 3 bzw. für TPR-Programme.

*AREA
Ein Areadump wird ausgegeben.
Die Adressen für die Bereiche müssen direkt nach der Parameterliste angegeben werden. In Abhängigkeit von der Anzahl der Bereiche müssen die Adressen in der Abfolge Anfangsadresse, Endadresse, Anfangsadresse, Endadresse, ..., Anfangsadresse, Endadresse angegeben werden.

SNAP=

steuert die Verwendung des SNAP zur Erstellung eines hochkonsistenten Systemdumps. Der Operand darf nur zusammen mit SCOPE=*SYSTEM angegeben werden.

*STD
bedeutet, dass zur Erstellung des Systemdumps ein zugehöriger Snapdump verwendet wird, falls ein solcher vorhanden ist (wenn der Systemdump auf Grund eines TPR-Programmfehlers entstanden ist, so wurde in der Regel vom System dazu ein Snapdump erzeugt).

*YES
Bedeutet, dass CDUMP2 einen Snapdump erzeugt (falls nicht schon ein zugehöriger vorhanden ist) und diesen zur Erstellung des Systemdumps verwendet.

*NO
bedeutet, dass CDUMP2 den Systemdump ohne Verwendung eines (eventuell trotzdem vorhandenen) zugehörigen Snapdump erstellt.

TITL=
bezeichnet eine zusätzliche Titelzeile für den Speicherabzug. Länge = 132 Zeichen.

*STD
CDUMP2 erzeugt eine Standard Titelzeile.

<var: pointer>
Name des Feldes mit der Adresse der Titelzeile; nur in Verbindung mit MF=M zulässig.

(<reg: pointer>)
Register mit der Adresse der Titelzeile; nur in Verbindung mit MF=M zulässig.

XPAND=
gibt an, ob eine DSECT für die CDUMP2-Parameterliste, den DSCB oder einen Bereich erzeugt werden soll. Die Angabe ist nur in Verbindung mit MF=D möglich.

PARAM
Es wird eine DSECT für die CDUMP2-Parameterliste erzeugt.

DSCB
Es wird eine DSECT für den Data-Space-Control-Block erzeugt.

AREA
Es wird eine DSECT für einen Bereich erzeugt.

Angabe, um die DSECT eines DSCB zu erhalten: CDUMP2 MF=D,XPAND=DSCB. Angabe, um die DSECT eines Bereichs zu erhalten: CDUMP2 MF=D,XPAND=AREA.

Rückinformation und Fehleranzeigen

Die Returncodes sind kompatibel zu denen des alten Makro CDUMP

Standardheader:

+---------------+
|   |   |   |   |
| | | | | | |a|a|
+---------------+

Über die Ausführung des Makros CDUMP2 wird im Standardheader folgender Returncode übergeben (aa=Maincode):

X'aa'

Erläuterung

X'00'

Dump fehlerfrei abgeschlossen.

X'04'

Dump unter Verwendung von Standardwerten abgeschlossen.

X'08'

Dump wegen /OPTION DUMP-Operand unterdrückt.

X'0C'

Dump wegen Systemkonventionen unterdrückt.

X'10'

Dump wegen schwerer CDUMP2-Operandenfehler unterdrückt.

X'14'

Dump wegen unzureichender Testprivilegierung unterdrückt.

X'18'

Dump wegen Fehler in DMS-Routinen unterdrückt.

X'1C'

Dump wegen Systemfehler unterdrückt.

X'20'

Dump unterdrückt, weil CDUMP2 zuvor unterbrochen wurde.

X'28'

Dump wegen SHUTDOWN-Bearbeitung unterdrückt.

X'2C'

Dump vom Aufrufer unterdrückt.

X'30'

Alle Bereichsangaben sind ungültig. Keine Dumpausgabe.

X'34'

Falsche Angabe bei NUM=... . Keine Dumpausgabe.

X'38'

Einige Dumpbereiche liegen nicht im Adressraum des Aufrufers oder die Angaben sind
inkonsistent. Mindestens ein Speicherbereich wurde aber ausgegeben.

X'3C'

Dump unterdrückt, da DMS-Ready noch nicht erreicht ist.

Beispiel

Das folgende Programm legt im Klasse-6-Speicher einen Memory Pool an und erzeugt einen User- sowie einen Areadump.

CDUMP2   START
         PRINT NOGEN
         BALR  3,0
         USING *,3
         ENAMP MPNAME=MEMP,SCOPE=GLOBAL,MPIDRET=PID,BSIZE=48 ------------(1)
REQMP    REQMP MPID=PID,BSIZE=5 -----------------------------------------(2)
         LA    4,4095(1)
         LA    4,1(4)
         ST    4,AR1ANF
         MVC   0(TEXT1LEN,4),TEXT1 --------------------------------------(3)
         LA    4,4095(4)
         ST    4,AR1END
         LA    4,1(4)
         ST    4,AR2ANF
         MVC   0(TEXT2LEN,4),TEXT2 --------------------------------------(4)
         LA    4,4095(4)
         ST    4,AR2END
CDUMPUS  CDUMP2 MF=E,PARAM=PARAM ----------------------------------------(5)
CDUMPAR  CDUMP2 MF=E,PARAM=AREA -----------------------------------------(6)
TERM     TERM
****  Definitions  ****
         DS    0F
PID      DS    F
TEXT1    DC    C'AREADUMP: '
         DC    C'PAGE 2 OF MEMORY POOL '
         DC    100C'A'
         DC    100C'B'
TEXT1LEN EQU   *-TEXT1
TEXT2    DC    C'AREADUMP: '
         DC    C'PAGE 3 OF MEMORY POOL '
         DC    100C'C'
         DC    100C'D'
TEXT2LEN EQU   *-TEXT2
PARAM    CDUMP2 MF=L,SCOPE=*USER ----------------------------------------(7)
AREA     CDUMP2 MF=L,SCOPE=*AREA,NUM=2,MODE=*EXP ------------------------(8)
AR1ANF   DS    A --------------------------------------------------------(9)
AR1END   DS    A
AR2ANF   DS    A
AR2END   DS    A
         END

(1)

Oberhalb der 16MB-Grenze wird ein 48 Hauptspeicherseiten großer Memory Pool eingerichtet. Die Anfangsadresse des Memory Pools wird in Register R1 abgelegt.

(2)

Ab der Anfangsadresse des Memory Pools werden fünf Hauptspeicherseiten angefordert.

(3)

Der Text AREADUMP: PAGE 2 OF MEMORY POOL und 100 mal A und B wird in den Memory Pool eingetragen.

(4)

Der Text AREADUMP: PAGE 3 OF MEMORY POOL und 100 mal C und D wird in den Memory Pool eingetragen.

(5)

An der symbolischen Adresse CDUMPUS des Programms wird der Makro CDUMP2 in seiner E-Form aufgerufen. Der zugehörige Datenbereich wird an der symbolischen Adresse PARAM durch einen CDUMP2-Aufruf mit MF=L erzeugt (siehe (7)).

Die dort angegebenen Operanden veranlassen den Makro bei seiner Ausführung einen Userdump auszugeben (SCOPE=*USER).

(6)

An der symbolischen Adresse CDUMPAR des Programms wird der Makro CDUMP2 erneut in seiner E-Form aufgerufen. Der zugehörige Datenbereich wird in diesem Fall an der symbolischen Adresse AREA durch einen CDUMP2-Aufruf mit MF=L erzeugt (siehe (8)).

Die dort angegebenen Operanden veranlassen den Makro, bei seiner Ausführung einen Areadump für zwei Bereiche (NUM=2) in seiner erweiterten Form auszugeben.

(7)

Datenbereich für den CDUMP2-Aufruf von Punkt (5).

(8)

Datenbereich für den CDUMP2-Aufruf von Punkt (6).

(9)

Die Adressen für die Bereiche müssen direkt nach der Parameterliste angegeben werden. In Abhängigkeit von der Anzahl der Bereiche müssen die Adressen in der Abfolge Anfangsadresse, Endadresse, Anfangsadresse, Endadresse, ..., Anfangsadresse, Endadresse angegeben werden.

Ablaufprotokoll:

/start-assembh
%  BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED
%  ASS6010 <ver> OF BS2000 ASSEMBH  READY 
//compile source=*library-element(macexmp.lib,cdump2), -
//        compiler-action=module-generation(module-format=llm), -
//        module-library=macexmp.lib, -
//        listing=parameters(output=*library-element(macexmp.lib,cdump2))
%  ASS6011 ASSEMBLY TIME: 492 MSEC
%  ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES
%  ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS
%  ASS6006 LISTING GENERATOR TIME: 82 MSEC
//end
%  ASS6012 END OF ASSEMBH
/start-executable-program library=macexmp.lib,element-or-symbol=cdump2
%  BLS0523 ELEMENT 'CDUMP2', VERSION '@' FROM LIBRARY
   ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS
%  BLS0524 LLM 'CDUMP2', VERSION ' ' OF '<date> <time>' LOADED
%  IDA0N51 PROGRAM INTERRUPT AT LOCATION '0000006A (CDUMP2), (CDUMP)'
%  IDA0N45 DUMP DESIRED? REPLY (Y=USER-/AREADUMP TO DISK;
   Y,<VOLUMETYPE>= USER-/AREADUMP TO TAPE; Y,SYSTEM=SYSTEMDUMP TO DISK;
   Y,SYSTEM,<VOLUMETYPE>=SYSTEMDUMP TO TAPE; N=NO)? y ------------------(10)
%  IDA0N53 DUMP BEING PROCESSED. PLEASE HOLD ON
%  IDA0N54 'USERDUMP' WRITTEN TO FILE '$QM212.DUMP.V.2RCU.00001' -------(11)
%  IDA0N55 TITLE: 'TSN-2RCU  UID-QM212  AC#-89002  USERDUMP  PC-0000006A
   EC-50  VERS-150  DUMP-TIME  13:47:16  12-01-20'
%  IDA0N51 PROGRAM INTERRUPT AT LOCATION '00000070 (CDUMP2), (ADUMP)'
%  IDA0N45 DUMP DESIRED? REPLY (Y=USER-/AREADUMP TO DISK;
   Y,<VOLUMETYPE>=USER-/AREADUMP TO TAPE; Y,SYSTEM=SYSTEMDUMP TO DISK;
   Y,SYSTEM,<VOLUMETYPE>=SYSTEMDUMP TO TAPE; N=NO)? y ------------------(12)
%  IDA0N53 DUMP BEING PROCESSED. PLEASE HOLD ON
%  IDA0N54 'AREADUMP' WRITTEN TO FILE '$QM212.SYS.ADUMP.V.2RCU.00002' --(13)
%  IDA0N55 TITLE: 'TSN-2RCU  UID-QM212  AC#-89002  AREADUMP  PC-00000070
   EC-50  VERS-150  DUMP-TIME  13:47:22  12-01-20'

(10)

Ein User- oder Areadump wird auf Platte ausgegeben, wenn die Abfrage in der Meldung IDA0N45 mit Y[ES] beantwortet wird. Wurde zuvor /MODIFY-TEST-OPTIONS USERDUMP-OPTIONS=*PARAMETERS(DUMP=*YES) ausgeführt, wird die Meldung IDA0N45 nicht ausgegeben.

(11)

Die Datei mit dem Userdump wird unter der Benutzerkennung des Aufrufers katalogisiert.

(12)

siehe (10)

(13)

Die Datei mit dem Areadump wird unter der Benutzerkennung des Aufrufers katalogisiert.

Die Dumps können mit dem Dienstprogramm DAMP (siehe „Diagnosehandbuch“ [9]) für die Dialogauswertung oder Druckausgabe aufbereitet werden.