Leitfaden zur Lösung von Programmfehlern:

Mein Gott, schon wieder 'n Dump

02.12.1977

MÜNCHEN (uk) - Wer hat als Anwendungs- oder Systemprogrammierer, als "mündiger" Anwender aus der Fachabteilung oder als Informatikstudent nicht schon den frustrierenden Moment erlebt, daß beim Abholen des Testprogramms statt der erhofften dünnen Liste mit "Normal End" ein dicker Hauptspeicherauszug mit "Abnormal End" im RZ-Fach lag? Wer hat sich nicht schon - begleitet vom hämischen Grinsen des Operators - dann fluchend oder stöhnend (je nach Temperament) auf den Weg ins Büro gemacht, um dort wieder einmal mehr oder weniger intuitiv die mögliche Fehlerquelle "langsam einzukreisen"? Wer hat nicht schon ratlos in (englischsprachigen) "IBM Programmers Guide to Debugging" geblättert oder verzweifelt versucht, sich an die entsprechenden "Dump Debugging"-Passagen im letzten Programmierkurs zu erinnern? - All diesen "Geplagten" steht die "Erlösung" ins Haus, denn es gibt jetzt einen (deutschsprachigen!) Leitfaden zur Lösung von Datei- oder Programmproblemen in COBOL-, FORTRAN-, PL/I- und Assembler-Programmen: "Dump Interpretationen" von Daniel H. Rindfleisch, das kürzlich im Carl Hanser Verlag, München, erschienen ist.

Dieser als Lehrbuch konzipierte Band gliedert sich in sieben Kapitel und enthält unter anderem Verhaltensregeln beim Auftreten von Dumps und rezeptartige "Step-by-Step"-Verfahren für die Dump-Analyse. Sieben Punkte weist beispielsweise das "Schritt-für-Schritt"-Verfahren zur Fehlersuche bei "Abnormal Ends" auf (siehe Kasten). Es soll bei den Completion Codes der OC-Gruppe (OC1-OC8, OVA-OCF), bei 322 sowie beim User Code 240 anwendbar sein, unabhängig von der Programmiersprache und vom Betriebssystem (OS, OS/VS, DOS). Ferner sind in dem Buch 98 Abbildungen über Dumps, Programm- und Job Control-Listings sowie über die "IBM Reference Data Card" enthalten und Übungsaufgaben zu den einzelnen Lehrabschnitten mit deren Lösungen gestellt. Im letzten Kapitel sind schließlich sämtliche Completion Codes und deren wahrscheinlichste Ursachen aufgelistet. Anhang ist ein Glossarium der "Speicherauszug-Terminologie", das die Zusammenhänge der einzelnen Dump-Fachausdrücke klarmachen soll.

- Ermittle Jobname, Stepname und Completion Code anhand des oberen Teils der ersten Seite des Speicherauszugs.

- Erhalte genaue Beschreibung des Completion Code mit Hilfe des IBM-Handbuches MESSAGES AND CODES und/oder des Kapitels 7 dieses Lehrbuches.

- Errechne die relative Position innerhalb des ausführbaren Lademoduls.

a. Ermittle die EPA anhand der ersten Zeile der Contents Directory Entry.

b. Ermittle die IA anhand von System 360/370 OS - APSW im oberen Teil der ersten Seite des Speicherauszugs.

System 370 OS/VS - PSW AT ENTRY TO ABEND im obersten Teil der ersten Seite des Speicherauszugs.

e. Subtrahiere EPA von IA. Das Ergebnis ist die relative Position innerhalb des Moduls.

- Verwende die Control Section, um die relative Position zu überprüfen und/oder neu zu berechnen.

a. Wenn die relative Position innerhalb der Grenzen des Hauptprogramms liegt und keine vom Programmierer geschriebenen Routinen verwendet werden, bleibt die Control Section unbeachtet.

b. Wenn die relative Position innerhalb der Grenzen einer Subroutine liegt, und es werden vom Programmierer geschriebene Subroutinen verwendet, ergibt eine Subtraktion der Anfangsadresse der Subroutine von der relativen Position die relative Position innerhalb der aufgerufenen Subroutine.

e. Verwende den SAVE AREA TRACE Teil des Speicherauszugs, wenn die relative Position außerhalb der Grenzen des Hauptprogramms und der vom Programmierer geschriebenen Subroutinen liegt. Ein Abzug der RA der Systemroutine von der EPA des Programmoduls, das die Routine aufgerufen hatte, ergibt die relative Position innerhalb des aufrufenden Moduls.

- Nimm Bezug auf das Assemblerprotokoll des Programmoduls oder der Subroutine.

a. Finde die bereits errechnete relative Position.

b. Ermittle die richtige Nummer der Quellenprogrammanweisung.

- Nimm Bezug aus das Quellenprogrammprotokoll des Programmoduls oder der Subroutine.

a. Finde die Nummer der Quellenprogrammanweisung.

b. Ermittle die zum Zeitpunkt des Abbruchs ausgeführte Quellenprogrammanweisung.

- Beende die Problemanalyse. Falls nötig, ermittle den Wert der zutreffenden Variablen mit Hilfe der im nächsten Kapitel erläuterten Methoden.