• Keine Ergebnisse gefunden

COBOL Dumpanalyse im z/OS

N/A
N/A
Protected

Academic year: 2022

Aktie "COBOL Dumpanalyse im z/OS"

Copied!
14
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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: ralf.seidler@cps4it.de Internet : http://www.cps4it.de

(2)

Diese Seite bleibt frei

(3)

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

(4)

Diese Seite bleibt frei

(5)

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/

(6)

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.

(7)

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.

(8)

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? ;-)

(9)

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

(10)

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

(11)

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

(12)

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.

(13)

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.

(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.

Referenzen

ÄHNLICHE DOKUMENTE

For the read and print associated data sets where no punch data set is used, stacker selection can be specified only with the read data set through the CNTRl

The z/OS dispatchable unit running on that logical processor (MVS2 logical CP5) begins to execute on physical CP0. It executes until its time slice (generally between 12.5 and

– komplette Verkettung in Prozedur bei Aufruf – aber unveränderte Parameter leer lassen – zusätzliche Angaben hinzufügen.

Der COND-Parameter ermöglicht die Angabe einer oder mehrerer Bedingun- gen, bei deren Auftreten der aktuelle Step unterdrückt oder ausgeführt wer- den soll. Ist jedoch

o Datei userid.TEST.PS21 neu anlegen (Angaben wie oben) Kopieren Inhalt von userid.TEST.PS11 nach userid.TEST.PS21 Lassen Sie den Job laufen und prüfen Sie die Ausgabe und

Editieren userid.KURS.JCL(JCL202); kopieren Member JCL201; weitere Zeile mit Inhalt (ähnlich) wie unten angegeben (STEP02); je nach Firma wird im Jobprotokoll für jeden Step

August 2011 COBOL - Dump-Analyse im z/OS Seite

For each component of the tuple, the number of the field to use for the value is given, followed by either n if the field should be interpreted as a number or s for a string.. After