Allgemeines
Anwendungsgebiet: | Testhilfe; siehe "Testhilfe" |
Makrotyp: | nur für User- und Systemdumps: S-Typ, MF-Format 1: Standardform/E-/L-/D-Form; siehe "S-Typ-Makroaufrufe" |
Seit BS2000/OSD-BC V3.0 steht der neue Makro CDUMP2 zur Verfügung.
Makrobeschreibung
Der Makro CDUMP erstellt (in einer eigenen Dumptask) einen Speicherabzug für die Task, die CDUMP aufgerufen hat. Durch Angabe des Operanden SCOPE kann der Anwender bestimmen, ob ein Area-, User- oder Systemdump ausgegeben werden soll.
Makroaufrufformate und Operandenbeschreibung
In der nachfolgenden Formatdarstellung werden zur Erstellung eines System-/User- bzw. Areadumps getrennte Aufrufformate angegeben.
Ausgabe eines Areadumps
CDUMP |
SCOPE=AREA,{NUM=#n / AREAS=((anf1,end1),(anf2,end2),...) } ,PC=STD / adr [,TITLE=adr ] ,MODE=STD / EXPANDED [,DS@=adr] ,MF=S / E / L / C / D [,PARAM=adr / (r)] ,ID=CD / pre |
Ausgabe eines Systemdumps
CDUMP |
SCOPE=SYSTEM ,PC=STD / adr / (r) ,EC=STD / adr / (r) ,IW=STD / PC [, {CODE= {’name’ / adr / (r)} / INSERT= {adr / (r)}}] [,TITLE=adr / (r)] ,DIAG=NO / YES [,ELSN=adr / (r)] ,PARMOD=24 / 31 ,MF=S / L / (E,..) / D ,ID=CD / pre |
Ausgabe eines Userdumps
CDUMP |
[SCOPE=USER] ,PC=STD / adr / (r) ,EC=STD / adr / (r) ,IW=STD / PC [, {CODE= {’name’ / adr / (r)} / INSERT= {adr / (r)}}] [,TITLE=adr / (r)] ,DS=STD / NO / YES / listadr ,DIV=STD / NO / YES ,PARMOD=24 / 31 ,MF=S / L / (E,..) / D ,ID=CD / pre |
In der nachfolgenden Operandenbeschreibung sind die Operanden alphabetisch geordnet.
AREAS=
beschreibt die auszugebenden Bereiche durch Angabe ihrer Anfangs- und Endadressen. Als Adresse kann jeder Ausdruck angegeben werden, der für eine Adresskonstante erlaubt ist (s. Beispiel). Maximal 4 Speicherbereiche können als Liste angegeben werden. AREAS darf nicht in Verbindung mit MF=C/D angegeben werden.
((anf1,end1),....)
anf1 = Adresse des ersten Byte (Anfangsadresse) des auszugebenden
Speicherbereichs.
end1 = Adresse des letzten Byte (Endadresse) des auszugebenden Speicherbereichs.
CODE=
bezeichnet eine Zeichenfolge zur Kennzeichnung des Dumps. Die Zeichenfolge wird bei der IDA0N51
-Meldung ausgegeben. Die Angabe ist nur in Verbindung mit SCOPE=USER bzw. SCOPE=SYSTEM möglich.
adr
symbolische Adresse des Feldes mit einer beliebigen Zeichenfolge; Länge = 7 Byte.
(r)
r = Register mit dem Adresswert adr.
'name'
name = beliebige Zeichenfolge. Länge = 7 Zeichen.
DIAG=
steuert, ob eine Meldung an den Operator gesendet wird, die die Adresse des CDUMP-SVCs enthält. Der Operand darf nur in Verbindung mit SCOPE=SYSTEM angegeben werden.
NO
ist Voreinstellung: Eine Meldung wird nicht ausgegeben.
YES
Die Meldung wird ausgegeben.
DIV=
gibt an, ob DIV-Fenster im Userdump enthalten sein sollen. Die Angabe ist nur in Verbindung mit SCOPE=USER möglich und wird nur bei PARMOD=31 ausgewertet. Bei PARMOD!=
31 wird unabhängig von der Operandenangabe der Wert DIV=YES verwendet. Siehe auch Abschnitt „Erweiterung durch Datenräume“.
STD
ist Voreinstellung: Der im Kommando MODIFY-TEST-OPTIONS eingestellte Wert bestimmt, ob DIV-Fenster im Userdump enthalten sein sollen (YES) oder nicht (NO).
NO
Es sollen keine DIV-Fenster im Userdump enthalten sein.
YES
Es sollen alle DIV-Fenster im Userdump enthalten sein.
DS=
bestimmt, welche Datenräume (DS) in den Userdump aufgenommen werden sollen. Die Angabe ist nur in Verbindung mit SCOPE=USER möglich und wird nur bei PARMOD=31 ausgewertet. Bei PARMOD!=
31 wird unabhängig von der Operandenangabe der Wert DS=YES verwendet. Siehe auch Abschnitt „Erweiterung durch Datenräume“.
STD
ist Voreinstellung: Der im Kommando MODIFY-TEST-OPTIONS eingestellte Wert bestimmt, ob Datenräume in den Userdump aufgenommen werden sollen (YES) oder nicht (NO).
listadr
Adresse einer Liste von SPIDs (8 Byte pro Eintrag). Die Liste muss mit einem Null-Eintrag (D(0)) abgeschlossen werden.
NO
Es werden keine Datenräume in den Userdump aufgenommen.
YES
Es werden alle, aber max. 100 vom Aufrufer genutzte Datenräume in den Userdump aufgenommen.
DS@=
ist ein Zeiger auf einen Data Space Control Block (DSCB), dessen DSECT bei MF=D generiert wird. Im DSCB können ein Datenraum und die zugehörigen Bereiche definiert werden. Die Angabe ist nur in Verbindung mit SCOPE=AREA möglich.
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
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“.
adr
symbolische Adresse des DSCB.
adr = NULL entspricht dem Standardwert.
EC=
bestimmt, woher der Ereigniscode (Eventcode, Unterbrechungsgewicht) geholt werden soll. Die Angabe ist nur in Verbindung mit SCOPE=USER/SYSTEM zulässig, bei SCOPE=AREA wird der der Ereigniscode stets aus dem Aufrufer-Stack geholt.
STD
ist Voreinstellung: Der Ereigniscode soll aus dem Aufrufer-Stack geholt werden.
adr
symbolische Adresse des Feldes mit dem Ereigniscode
(r)
r = Register mit dem Ereigniscode (rechtsbündig)
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.
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.
adr
symbolische Adresse (Name) des Feldes
(r)
r = Register mit dem Adresswert adr
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, der folgenden Aufbau hat:
Byte 1: | Länge (sedezimal) des auszugebenden Textes (in Byte). Enthält |
Byte 2 bis n (n<=61): | Auszugebender Text. Bei SCOPE=AREA wird der Operand IN- |
adr
symbolische Adresse des Datenbereiches, der Längenangabe und Text enthält
(r)
r= Register mit der Adresse des Datenbereichs, der Längenangabe und Text enthält
IW=
bestimmt, woher das Unterbrechungsgewicht geholt werden soll. Die Angabe ist nur in Verbindung mit SCOPE=USER und nur für 24-Bit-Schnittstelle zulässig. Der Operand wird nur noch aus Kompatibilität unterstützt und sollte in Programmen durch EC=... ersetzt werden.
STD
ist Voreinstellung: Gibt an, dass das Unterbrechungsgewicht aus dem Aufrufer-Stack geholt werden soll.
PC
gibt an, dass das Unterbrechungsgewicht im 1. Byte des bei dem Operanden PC angegebenen Feldes/Registers steht.
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.
Bei MF=C oder MF=D kann ein Präfix ID (pre = 2 Buchstaben), wie im Aufrufformat dargestellt, angegeben werden.
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.
MODE=
legt bei einem Areadump den Umfang der auszugebenden Diagnosedaten fest. Der Operand darf nur zusammen mit SCOPE=AREA angegeben werden.
STD
ist Voreinstellung: bewirkt, dass zusätzlich zu den angegebenen Bereichen im Klasse-6- und Klasse-5-Speicher nur der Modul AIDSYSD und die Bereiche mit COMAREA, P1-PCB und TCB ausgegeben werden (siehe Abschnitt
Makrobeschreibung, Areadump).
EXP[ANDED]
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 Makrobeschreibung,
Userdump).
NUM=
bezeichnet die Anzahl der auszugebenden Bereiche. NUM darf nur in Verbindung mit MF=L/C/D angegeben werden. Die Anfangs- und Endadressen der auszugebenden Bereiche müssen (dynamisch) im erzeugten Datenbereich eingetragen werden. In Verbindung mit MF=C/D ist NUM Pflichtangabe.
#n
n = Anzahl der auszugebenden Bereiche; 1 <= n <= 2048.
(Das Zeichen # muss der Zahl vorangestellt werden).
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.
24
Die Angabe ist nicht in Verbindung mit SCOPE=AREA zulässig. 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). Datenlisten beginnen mit dem Standardheader.
PC=
bezeichnet ein Register oder Feld, das den zu protokollierenden Befehlszähler enthält.
STD
ist Voreinstellung: Der Befehlszähler soll aus dem Aufrufer-Stack geholt werden.
adr
symbolische Adresse (Name) des Feldes (Wortes) mit dem Befehlszähler
(r)
r = Register, das den Befehlszähler enthält. Angabe nur in Verbindung mit SCOPE=USER/SYSTEM möglich.
SCOPE=
gibt an, ob ein User-, System- oder Areadump ausgegeben werden soll.
USER
ist Voreinstellung: Ein Userdump wird ausgegeben.
SYSTEM
Ein Systemdump wird ausgegeben. Angabe nur erlaubt für Anwender mit Leseprivilegierung >= 3.
AREA
Ein Areadump wird ausgegeben.
TITLE=
bezeichnet eine zusätzliche Titelzeile für den Speicherabzug.
Länge = 132 Zeichen.
Hinweis
Dieser Operand wird nur noch aus Kompatibilitätsgründen unterstützt, d.h. DAMP bereitet diese Titelzeile nicht auf. Die Angabe des Operanden hat daher keine Wirkung.
adr
symbolische Adresse des Feldes mit der Titelzeile
(r)
r = Register mit dem Adresswert adr. Angabe nur in Verbindung mit
SCOPE=USER/SYSTEM möglich.
Rückinformation und Fehleranzeigen
R15 /
Standardheader:
+---------------+ | | | | | | | | | | | |a|a| +---------------+
Über die Ausführung des Makros CDUMP wird im rechtsbündigen Byte des Registers R15 ein Returncode übergeben. Bei Verwendung der 31-Bit-Schnittstelle wird dieser Returncode auch im Standardheader (Maincode) übergeben.
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 CDUMP-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 CDUMP zuvor unterbrochen wurde |
X'24' | Dump wegen eines Fremdtaskdump-Fehlers |
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 |
X'3C' | Dump unterdrückt, da DMS-Ready noch nicht erreicht ist. |