cobol dumpanalyse im z/os€¦ · cobol dumpanalyse im z/os musterlösungen zu den Übungen 23....
TRANSCRIPT
COBOL
Dumpanalyse im z/OS
Musterlösungen zu den Übungen
23. Januar 2009
Eine Ausarbeitung von:
cps4it Ralf Seidler • Stromberger Straße 36A • 55411 Bingen Fon: +49-6721-992611 • Fax: +49-6721-992613 • Mail: [email protected] Internet : http://www.cps4it.de Steuernummer: 08/220/2497/3, Finanzamt Bingen, Ust-ID : DE214792185
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 2 von 14
Diese Seite bleibt frei
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 3 von 14
Inhaltsverzeichnis
1 Vorbereitungen _________________________________________________________ 5
1.1 Anmelden und Test der User-Iden ________________________________________________________________________ 5
1.2 Zugang zu Bookmanager im Intranet ______________________________________________________________________ 5
1.3 Zugang zum Bookmanager im Internet ____________________________________________________________________ 5
1.4 Wichtige Books in COBOL _______________________________________________________________________________ 6
1.5 Wichtige Books in LE ___________________________________________________________________________________ 6
1.6 Das Bookshelf „Messages and Codes“ _____________________________________________________________________ 6
2 LE – Programm Management _____________________________________________ 7
2.1 Sprachen unter LE _____________________________________________________________________________________ 7
2.2 CEL __________________________________________________________________________________________________ 7
2.3 Enklave ______________________________________________________________________________________________ 7
2.4 Thread _______________________________________________________________________________________________ 7
2.5 Prozess ______________________________________________________________________________________________ 7
3 LE – Condition Handling __________________________________________________ 8
3.1 Beispiele der CEL ______________________________________________________________________________________ 8
3.2 Initialisierung _________________________________________________________________________________________ 8
3.3 Storage Manager ______________________________________________________________________________________ 8
3.4 Condition Handler _____________________________________________________________________________________ 8
3.5 Terminator ___________________________________________________________________________________________ 8
4 LE – Condition Handling __________________________________________________ 9
4.1 Wichtige Module im Dump ______________________________________________________________________________ 9
4.2 Aufbau der COBOL-Meldungen ___________________________________________________________________________ 9
4.3 Dumpinformationen finden in Beispiel ____________________________________________________________________ 9
4.4 Dumpinformationen finden in einem Produktionsabbruch ___________________________________________________ 11
5 Linkage Convention und Optionen _________________________________________ 12
5.1 Programm erstellen ___________________________________________________________________________________ 12
5.2 Umwandlungsoptionen einstellen _______________________________________________________________________ 12
5.3 JCL zu Programm erstellen _____________________________________________________________________________ 12
6 Linkage Convention und Optionen _________________________________________ 13
6.1 Steuerblöcke in Umwandlungsliste ______________________________________________________________________ 13
6.2 Tests des Programms mit verschiedenen Abbrüchen ________________________________________________________ 13 6.2.1 Abbruch S0C7 auf verschiedenen Feldern ___________________________________________ 13 6.2.2 Abbruch S0CB _________________________________________________________________ 13 6.2.3 Abbruch S0C4 mit Subscript ______________________________________________________ 13 6.2.4 Abbruch U1066 mit Subscript _____________________________________________________ 13
6.3 Besonderes im IMS ___________________________________________________________________________________ 13
7 Programmiertechniken __________________________________________________ 14
7.1 Index-Nutzung _______________________________________________________________________________________ 14
7.2 Variablendefinitionen _________________________________________________________________________________ 14
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 4 von 14
Diese Seite bleibt frei
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 5 von 14
1 Vorbereitungen
Zum Schmunzeln
"Glück ist: zu begreifen, wie alles zusammenhängt." Sten Nadolny (*1942), dt. Schriftsteller
1.1 Anmelden und Test der User-Iden
Keine Musterlösung
1.2 Zugang zu Bookmanager im Intranet
Eine Möglichkeit ist über das Prodnet zu gehen; dort gibt es verschiedene Möglichkeiten, um zum Bookmanager zu kommen.
1.3 Zugang zum Bookmanager im Internet
http://www.ibm.com Nach Eingabe des Suchbegriffes „COBOL“ rechts oben erhält man eine Liste vieler Seiten. Die erste Angabe verweist auf: http://www-306.ibm.com/software/awdtools/cobol/ Links ist eine Navigationsleiste mit dem Begriff Library. Nach dem Klick, „En-terprise-COBOL“ auswählen. Die neueste Version ist Enterprise COBOL for
z/OS, Version 3 Release 4 Geben Sie als Suchbegriff „Language Environment“ ein. Auf der Liste gibt es einen Link, der direkt zur Library führt. Die aktuellste Version steht oben und ist z/OS V1R7 Language Environment. Die Einstiegsseite zu LE ist übrigens: http://www-03.ibm.com/servers/eserver/zseries/zos/le/
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 6 von 14
1.4 Wichtige Books in COBOL
Die wesentlichen Books sind: Enterprise COBOL for z/OS V3.4 Language Reference Enterprise COBOL for z/OS V3.4 Programming Guide
1.5 Wichtige Books in LE
Die wesentlichen Books sind: z/OS V1R7.0 Language Environment Concepts Guide z/OS V1R7.0 Language Environment Programming Guide z/OS V1R7.0 Language Environment Run-Time Messages Alle anderen Books sind themenspezifisch.
1.6 Das Bookshelf „Messages and Codes“
Auf der IBM-Seite sind diese nicht einfach zu finden. Die neueste Version liegt bereit unter http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/Shelves/ez2mz700 Der Weg dauert recht lange und ist wie folgt möglich: Einstieg über: http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/library Als Suchbegriff Messages eingeben. Am Ende der Liste ist das Gesuchte.
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 7 von 14
2 LE – Programm Management
2.1 Sprachen unter LE
Language Environment ist die gemeinsame Laufzeitumgebung für COBOL, PL1, C/C++ und Fortran. Assembler-Module können ebenfalls aufgerufen werden, denn ASM benötigt keine Laufzeitumgebung.
2.2 CEL
Die CEL ist die Sammlung aller Laufzeitmodule unter LE (Common Execution Library). Sie beinhaltet Funktionen zur Initialisierung, die Terminierung, das Storage Management, Condition Handling, Message Services, Datums- und Zeitfunktionen sowie mathematische Funktionen.
2.3 Enklave
Enklave ist innerhalb eines Prozesses die Laufzeitumgebung mit allen dazu-gehörenden Anwendungsprogrammen. Ein Thread mit einem COBOL-Hauptprogramm ist mit seiner Umgebung eine Enklave.
2.4 Thread
Ein Thread ist ein Hauptprogramm mit allen seinen Unterprogrammen und seinen (jeweils) eigenen Daten.
2.5 Prozess
Ein Prozess ist die Summe aller Enklaven, die einen fachlichen Vorgang be-arbeiten. Ein Prozess kann einen weiteren Prozess anstoßen, hat aber kei-nerlei Verbindungen und Daten miteinander.
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 8 von 14
3 LE – Condition Handling
3.1 Beispiele der CEL
Siehe Lösung der Aufgabe 2.2. Oder auch: CEELOCT, CEEDATE, CEEMOUT und viele andere mehr.
3.2 Initialisierung
Umgebung aufbauen, Speicher besorgen (lassen), Condition Handler initiali-sieren, Optionen prüfen und sprachspezifische Laufzeitumgebung aufbauen; Übergabe der Kontrolle an das Anwendungshauptprogramm. Unter IMS gilt überigens der IMS-Regioncontroller für LE als das Anwendungshauptpro-gramm.
3.3 Storage Manager
Heap-Storage besorgen, Stack-Storage besorgen; jeweils zu Beginn und dann während der Ausführungszeit explizit und implizit.
3.4 Condition Handler
Abfangen der Fehlersituationen; prüfen, was zu tun ist (resume, percolate, promote, fix-up and resume); Informationen sammeln und ausgeben.
3.5 Terminator
Vollständiges „garbage collection“ nach Ende der Anwendung. oder: Gouverneur von Kalifornien? ;-)
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 9 von 14
4 LE – Condition Handling
4.1 Wichtige Module im Dump
CEEHDSP (Top-Modul), CEEPLPKA (LE-Hauptprogramm), CEEBINIT (Initia-lisierungsmodul des LE; taucht nur auf, wenn in der Initialisierungsphase et-was schief geht), CEEHSGLT (signal handler), CEEV#GH (getheap), CEEV#FH (freeheap), CEEEV005 (COBOL event handler)
4.2 Aufbau der COBOL-Meldungen
IGZnnnnx mit x=I,W,E,S,C
4.3 Dumpinformationen finden in Beispiel
Kurzinformation über den Dump CEE3211S The system detected a decimal-divide exception (System Completion Code=0CB).
From compile unit TES47 at entry point TES47 at compile unit offset +000004A8 at entry offset +000004A8 at
address 2F717090.
<> LEAID ENTERED (LEVEL 05/09/2005 AT 11.27)
<> LEAID PROCESSING COMPLETE. RC=0
Call Hierarchie Traceback:
DSA Addr Program Unit PU Addr PU Offset Entry E Addr E Offset Statement Load Mod Service Status
0001D458 CEEHDSP 0A997968 +00004904 CEEHDSP 0A997968 +00004904 CEEPLPKA UK06547 Call
0001D318 TES47 2F716BE8 +000004A8 TES47 2F716BE8 +000004A8 TES47 Exception
0001D130 IGZCFCC 0A8429A8 +000002CA IGZCFCC 0A8429A8 +000002CA IGZCPAC Call
0001D018 TES39 2F700CF8 +00000468 TES39 2F700CF8 +00000468 TES39 Call
Fehlerart und Meldung
Condition Information for Active Routines
Condition Information for TES47 (DSA address 0001D318)
CIB Address: 0001DD98
Current Condition:
CEE3211S The system detected a decimal-divide exception (System Completion Code=0CB).
Inhalt des Programm-Status-Word
Machine State:
ILC..... 0006 Interruption Code..... 000B
PSW..... 078D1000 AF717096
Abbruchadresse
Location:
Program Unit: TES47 Entry: TES47 Statement: Offset: +000004A8
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 10 von 14
Namen, DSA-Adresse und Registerinhalte der Anwendungsprogramme
TES47 (DSA address 0001D318):
UPSTACK DSA
Saved Registers:
GPR0..... 0001D458 GPR1..... 2F716E97 GPR2..... 000077FC GPR3..... 2F70E058
GPR4..... 2F70E0F8 GPR5..... 000071BC GPR6..... 0003D380 GPR7..... 00FD4E18
GPR8..... 00007A80 GPR9..... 0003FDF8 GPR10.... 2F716CF4 GPR11.... 2F716F94
GPR12.... 2F716CE4 GPR13.... 0001D318 GPR14.... AF71707C GPR15.... 8A841B28
und
TES39 (DSA address 0001D018):
UPSTACK DSA
Saved Registers:
GPR0..... 0001D130 GPR1..... 0001D120 GPR2..... 000077FC GPR3..... 2F70E040
GPR4..... 0001D118 GPR5..... 0001D110 GPR6..... 00000000 GPR7..... 00000000
GPR8..... 00007A80 GPR9..... 0003F100 GPR10.... 2F700E04 GPR11.... 2F701090
GPR12.... 2F700DF4 GPR13.... 0001D018 GPR14.... AF701162 GPR15.... 8A8429A8
Options Report
Run-Time Options Report:
LAST WHERE SET OPTION
-------------------------------------------------------------------------------
Installation default ABPERC(NONE)
Installation default ABTERMENC(ABEND)
Installation default NOAIXBLD
Installation default ALL31(OFF)
Installation default ANYHEAP(16384,8192,BELOW,FREE)
Installation default NOAUTOTASK
Installation default BELOWHEAP(8192,4096,FREE)
Installation default CBLOPTS(ON)
Installation default CBLPSHPOP(ON)
Installation default CBLQDA(OFF)
Installation default CHECK(ON)
Installation default COUNTRY(US)
Installation default NODEBUG
Installation default DEPTHCONDLMT(10)
Installation default ENVAR("")
Installation default ERRCOUNT(0)
Installation default ERRUNIT(6)
Installation default FILEHIST
Installation default FILETAG(NOAUTOCVT,NOAUTOTAG)
Default setting NOFLOW
Installation default HEAP(32768,32768,ANYWHERE,KEEP,8192,4096)
Installation default HEAPCHK(OFF,1,0,0,0)
Installation default HEAPPOOLS(OFF,8,10,32,10,128,10,256,10,1024,10,2048,10,0,10,0,10,0,10,0,10,0,10,0,10)
Installation default INFOMSGFILTER(OFF,,,,)
Installation default INQPCOPN
Installation default INTERRUPT(OFF)
Installation default LIBSTACK(4096,4096,FREE)
Installation default MSGFILE(SYSOUT,FBA,121,0,NOENQ)
Installation default MSGQ(15)
Installation default NATLANG(ENU)
Ignored NONONIPTSTACK(See THREADSTACK)
Installation default OCSTATUS
Installation default NOPC
Installation default PLITASKCOUNT(20)
Installation default POSIX(OFF)
Installation default PROFILE(OFF,"")
Installation default PRTUNIT(6)
Installation default PUNUNIT(7)
Installation default RDRUNIT(5)
Installation default RECPAD(OFF)
Installation default RPTOPTS(OFF)
Installation default RPTSTG(OFF)
Installation default NORTEREUS
Installation default NOSIMVRD
Installation default STACK(131072,131072,BELOW,KEEP,524288,131072)
Installation default STORAGE(NONE,NONE,NONE,32768)
Installation default TERMTHDACT(TRACE,,96)
Installation default NOTEST(ALL,"*","PROMPT","INSPPREF")
Installation default THREADHEAP(4096,4096,ANYWHERE,KEEP)
Installation default THREADSTACK(OFF,4096,4096,BELOW,KEEP,131072,131072)
Installation default TRACE(OFF,4096,DUMP,LE=0)
Installation default TRAP(ON,SPIE)
Installation default UPSI(00000000)
Installation default NOUSRHDLR(,)
Installation default VCTRSAVE(OFF)
Installation default XPLINK(OFF)
Installation default XUFLOW(AUTO)
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 11 von 14
Informationen über Variableninhalte der Anwendungsprogramme
Local Variables:
TES47 was not compiled with the SYM suboption of the TEST option. A formatted variable dump cannot be produced.
Local Variables:
TES39 was not compiled with the SYM suboption of the TEST option. A formatted variable dump cannot be produced.
4.4 Dumpinformationen finden in einem Produktionsabbruch
Keine Musterlösung
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 12 von 14
5 Linkage Convention und Optionen
5.1 Programm erstellen
Falls eine Kodierung zu lange dauert, kopieren Sie die Programme von der Datei des Referenten.
5.2 Umwandlungsoptionen einstellen
Die Optionen sollten i.A. wie der Default eingestellt sein. Hiilfreiche Optionen für den Test sind: LIST, TEST(SYM), SSRANGE. Die Optionen in der Produktion sollten stets NOTEST und NOSSRANGE sein, da sonst deutliche Performanceeinbußen zu erwarten sind. LIST: COBOL-Befehle mit Adresse und Assembler-Auflösung NOLIST: COBOL-Befehle nur mit Adresse und Zeile TEST(SYM): Bei Abbruch Anzeige der Variableninhalte NOTEST: „normaler“ Dump SSRANGE: Prüfung auf Index / Subscript-Überlauf / Bereiche NOSSRANGE: keine Prüfung auf Indizes / Subscripte / Bereiche
5.3 JCL zu Programm erstellen
Falls eine Kodierung zu lange dauert, kopieren Sie die JCL von der Datei des Referenten.
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 13 von 14
6 Linkage Convention und Optionen
6.1 Steuerblöcke in Umwandlungsliste
Zu finden sein sollten zumindest BLW, BLL, BLX, TGT.
6.2 Tests des Programms mit verschiedenen Abbrüchen
Führen Sie das Programm aus mit unterschiedlichen Abbruchkonstellationen. Versuchen Sie, die Abbruchursache in den Dump-Informationen zu finden. Suchen Sie auch die im Kurs erwähnten Steuerblöcke. Was helfen Ihnen die-se bei der Suche nach der Abbruchursache? Wann helfen Sie Ihnen?
6.2.1 Abbruch S0C7 auf verschiedenen Feldern
Keine Musterlösung
6.2.2 Abbruch S0CB
Keine Musterlösung
6.2.3 Abbruch S0C4 mit Subscript
Es fällt auf, dass der Abbruch nicht mit einem Subscript auftritt, der „knapp über der Grenze“ liegt, sondern erst bei einem sehr hohen Wert. Dies ist ein Hinweis, dass der eigene Speicher „beliebig“ zerschossen werden darf, ehe das System sich meldet. Und genau in solchen Fällen kann das Wissen um die Steuerblöcke die entschiedenen Hinweise auf die Abbruchursache geben.
6.2.4 Abbruch U1066 mit Subscript
Keine Musterlösung
6.3 Besonderes im IMS
Folgende Punkte:
Hauptprogramm ist IMS-Region-Controller DFSRCCnn
Es gibt im DUMP Informationen zu jedem PCB.
IMS-Fehler sind U-Codes.
COBOL – Dump-Analyse im z/OS
13. August 2011 Seite 14 von 14
7 Programmiertechniken
7.1 Index-Nutzung
Sie sollten den Block finden, in dem der Index zu finden ist.
7.2 Variablendefinitionen
Überlegen Sie sich die Auswirkungen im Speicherinhalt bei der Nutzung der folgenden Definitionen:
REDEFINES gleiche Adresse; ersichtlich an BLW-Informationen
88-er Stufen gleiche Adresse; ersichtlich an BLW-Informationen
nicht benutzte Variablen Hinweis: BLWxxxx in der Umwandlung
SYNCHRONIZED Es gibt „leere“ Bereiche im Dump. Wichtig dabei ist, die Adressen aus der Umwandlungsliste zur Hand zu haben.