Ist ein Speicherbereich in Form einer Standard-DSECT strukturiert, dann kann DAMP die Ausgabe dieses Bereichs im Layout dieser DSECT durchführen. (Der Begriff DSECT steht im Folgenden für die Strukturen der verschiedenen Programmiersprachen, so z.B. für ASS-DSECTs, MODELs (SPL), STRUCTUREs (C).) Die entsprechenden Felder der DSECT werden gemäß ihrem Daten-Typ interpretiert. Numerische Werte werden sowohl sedezimal als auch als Adresse oder Dezimalwert ausgegeben, Zeichenketten nur als solche.
Da die Definitionen der Feldnamen in den benutzten DSECTs nicht immer ihrer Bedeutung entsprechen (z.B. CL4 statt AL4), können vereinzelt nicht ganz sinnvolle Interpretationen erscheinen. Eine Änderung dieser Darstellung erreicht man, indem man die DSECTs ändert und anschließend eine neue bzw. geänderte Symboldatei generiert (siehe „Abschnitt „Private Symbolelemente verwenden").
Neben den automatisch lokalisierbaren globalen und taskspezifischen Tabellen kann jeder beliebige Speicherbereich im Layout einer DSECT ausgegeben werden. Hierfür stehen zwei Varianten zur Verfügung:
Überlagern mit einer vollständigen DSECT
Um einen Speicherbereich mit einer DSECT zu überlagern, muss der Anfang des ausgegebenen Speicherbereiches dem DSECT-Anfang entsprechen. Eintragen des DSECT-Namens in das Eingabefeld „symbolische Adresse“ und Eingabe des Schlüsselworts „CBM“ ins Eingabefeld „Ausgabeformat“ führt zur Ausgabe im symbolischen Format. Die Eingabe des Schlüsselworts „CBM“ kann entfallen, wenn die DSECT von DAMP nicht automatisch lokalisiert werden kann.
Wird der Speicherbereich durch Eingeben einer absoluten Adresse in der Kopfzeile lokalisiert, kann auch gleich ein DSECT-Name mitgegeben werden. Der Speicherbereich wird dann sofort im symbolischen Layout ausgegeben.
Bild 30: Ausgabe eines Stack im symbolischen Format. Der DSECT-Name wird in der Keyzeile angezeigt
Der Inhalt des Feldes „Ausgabeformat“ gibt an, ob eine DSECT von DAMP automatisch lokalisiert worden ist (Inhalt CBA = Control Block Automatic) oder ob der Benutzer die DSECT positioniert hat (Inhalt CBM = Control Block Manual). Im Falle von CBM bedeutet dies, dass bei Eingabe eines Feldnamens der überlagerten DSECT im Eingabefeld „symbolische Adresse“ innerhalb des DSECT-Formats geblättert wird. Ein eventuell mögliches automatisches Lokalisieren auf den Feldnamen der entsprechenden Systemtabelle ist ausgeschaltet.
Die Zuweisung einer DSECT zu einem Fenster wird gespeichert. Wenn man also die gleiche Struktur in einem andern Speicherbereich noch einmal lokalisiert hat (etwa bei verketteten Listen) und dem Diagnosefenster diesen Speicherbereich z.B. durch Markieren und Drücken der entsprechenden P-Taste zuweist, wird nicht auf Dump-Layout umgeschaltet, sondern der Speicher gleich im Layout der eingestellten DSECT symbolisch aufbereitet.
Dieser Effekt tritt allerdings auch dann ein, wenn man dem Fenster irgendeinen anderen Speicherbereich zuweist. Dieser Bereich wird dann im Layout der alten, vermutlich unpassenden DSECT aufbereitet. Man muss dann entweder die richtige DSECT eintragen oder durch Eingabe von D im Feld „Ausgabeformat“ der Kopfzeile auf Dump-Layout umschalten.
Überlagerung mit einer versetzten DSECT
Ist ein Speicherbereich nur im Layout eines Teilabschnittes einer DSECT strukturiert (z.B. die lokalen XVTs bei Multiprozessoren, siehe Bild 28 (Prozessor-lokale Bereiche ausgeben)), so ist eine versetzte Überlagerung notwendig. Hierzu ist die Eingabe des entsprechenden DSECT-Feldnamens im Eingabefeld „symbolische Adresse“ zusammen mit der Eingabe „CBM“ im Feld „Ausgabeformat“ erforderlich. Die Eingabe des Schlüsselwortes „CBM“ kann entfallen, wenn die DSECT nicht automatisch lokalisiert werden kann.
Damit können Sie sich auch das Rückwärtsblättern auf die Anfangsadresse einer Tabelle sparen. Ist der entsprechende Feldname des angezeigten Speicherbereichanfangs bekannt, so überlagert man den ausgegebenen Bereich wieder durch Angabe des Feldnamens.
Innerhalb der DSECT können Sie mit
/ und +/-/++/-- hin und her blättern, jedoch nur bis zum Beginn oder zum Ende der DSECT. Dabei bleibt das symbolische Layout erhalten.Listen der angebbaren DSECTs für alle unterstützten BS2000-Versionen finden Sie ab "Liste der DSECTs aus den Standard-Symboldateien". Ferner können auch DSECTs aus privaten Symboldateien benutzt werden (Näheres siehe „Abschnitt „Private Symbolelemente verwenden").
Bei der symbolischen Ausgabe wird als Spalten-Trennzeichen X'4F' verwendet. Bei einigen Terminal-Einstellungen bzw. Zeichensätzen von Druckern wird dieses Zeichen nicht als senkrechter Strich „|“ abgebildet. Zur Umstellung wird der Benutzerparameter „Column separator (list)“ angeboten (siehe "Modifikationen durch den Benutzer (Spezialfenster OPTIONS)").
Überlagern mit der Pseudo-DSECT WORDLIST
Wenn ein Speicherbereich nicht im Layout einer überlagerungsfähigen DSECT beschrieben ist, aber Adressreferenzen zu Systembereichen enthält oder vermuten lässt, so können diese Adressen symbolisch mit Modulname + Distanz aufbereitet werden, und zwar mit der Pseudo-DSECT WORDLIST.
Für jedes Wort des Speicherbereiches wird dabei die Assembler-Deklaration DS AL4
angenommen. Wenn der Wortinhalt dies formal zulässt, dann wird er als Modulname + Distanz ausgegeben.
So können Sie zum Beispiel den Konstantenbereich eines Moduls mit WORDLIST überlagern, um die verwendeten Extern-Adressen modulrelativ aufzubereiten.
Bild 31: Aufbereitung mit der DSECT WORDLIST; Anzeige in der Key-Zeile: WORDLIST
Bei Klasse-6-Speicher werden nur Adressen aus dem Benutzerprogramm und angeschlossenen nicht-privilegierten Subsystemen relativiert. Will man in Ausnahmefällen auch Adressen aus dem Control Program (CP) und privilegierten Subsystemen relativiert erhalten, muss der Speicherbereich durch Eingabe von „ALT“ im Feld ASEL als Datenraum gekennzeichnet werden.
Behandlung von Substrukturen
In Kontrollblöcken, die in einer Hochsprache definiert worden sind, sind Substrukturen zulässig. Mit DAMP können derartige Substrukturen „aufgeklappt“ und „zugeklappt“ werden.
Bei der Ausgabe eines Kontrollblocks werden die Substrukturen zunächst ignoriert, d.h. die betroffenen Felder werden wie ein „ARRAY OF BYTE“ ausgegeben. Die Namen der Felder, die Substrukturen enthalten, werden durch ein vorangestelltes Zeichen „*
“ markiert.
Wird dieses Zeichen mit einem „+“ überschrieben, wird die entsprechende Substruktur „aufgeklappt“, bei einem „-“ wird die Substruktur „zugeklappt“.
Über die Wahl der DUE-Taste (
oder ) wird bestimmt, ob das Aufklappen „schön“ oder „komprimiert“ erfolgen soll.- „schönes“ Aufklappen. Pro Zeile wird nur ein Datenfeld der Substruktur unter dem übergeordneten Namen aufbereitet. Die Feldnamen werden eingerückt.
- „komprimiertes“ Aufklappen. Aufbereitung der Substruktur wie ein normaler Kontrollblock. Die Substruktur wird lediglich an der entsprechenden Fensterposition eingefügt.
Bild 32: Zugeklappte fiktive Substruktur
Bild 33: „Schön“ aufgeklappte Substruktur
Bild 34: „Komprimiert“ aufgeklappte Substruktur