Abbruch Stored Procedure durch DISPLAY
- Dieses Thema hat 6 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre, 3 Monaten vonGast.
- AuthorPosts
- 15. Februar 2005 um 16:26 Uhr #2513
Hallo zusammen,
wie haben in diversen Storred Procedures (SP) am Anfang der Ausführung einen DISPLAY eingebaut,
der den Namen und das Compile-Datum-Uhrzeit der SP anzeigt.Dadurch können wir nach erneutem Compile sicherstellen das das neue Lademodul aktiv ist oder ein refresh des Workload-Managers erforderlich ist.
Auch für diverse Debbuging-Zwecke verwenden wir ab und an mal DISPLAYs.
Leider bricht uns alle 2-3 Tage mal eine SP bei dem Versuch einen DISPLAY durchzuführen ab.
DB2 stopped dann die SP und alle Folgeaufrufe bekommen einen -471 SQLCODE.
DSNT408I SQLCODE = -471, ERROR: INVOCATION OF FUNCTION OR PROCEDURE
DB.PGM5012 FAILED DUE TO REASON 00E79001
DSNT418I SQLSTATE = 55023 SQLSTATE RETURN CODE
DSNT415I SQLERRP = DSNX9GPL SQL PROCEDURE DETECTING ERROR
DSNT416I SQLERRD = -30 0 0 -1 0 0 SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRD = X’FFFFFFE2′ X’00000000′ X’00000000′
X’FFFFFFFF‘ X’00000000′ X’00000000′ SQL DIAGNOSTIC
INFORMATIONDer Abbruch durch den DISPLAY sieht dann im Workload-Manager so aus:
CEE3499E The message file was unable to be opened. ,,
From compile unit PGM5012 at entry point PGM5012 at compile unit offset +0000364E at entry offset +0000364E at address 1B57135E.Das OFFSET läßt sich auf einen DISPLAY zurückführen.
Was können wir tun (außer auf die DISPLAYs zu verzichten)?
Diese Frage haben wir auch bereits der IBM gestellt.
Antwort:
Beim CREATE PROCEDURE sollen wirRUN OPTIONS ‚MSGFILE(SYSOUT,,,,ENQ)‘
verwenden.
Leider hat die Verwendung diese Parameter keine Wirkung gezeigt.Jetzt meine Fragen:
Macht ihr DISPLAYs in euren SPs?
Wie können wir unser Problem abstellen?
Welche anderen Debugging Möglichkeiten gibt es für SP’s, wie macht ihr das?
für jede Anregung sind wir dankbar.
Gruß Klaus
16. Februar 2005 um 9:08 Uhr #2972Ich gebe Meldungen ( PL/1 ) immer über PUT SKIP EDIT auf die SYSPRINT aus. Hatte noch nie Probleme damit.
16. Februar 2005 um 9:39 Uhr #3294Danke für den Hinweis.
Wie soll aber der COBOL-Befehl heißen
der dem "PUT SKIP EDIT" entspricht?Unser DBA hat eben gesagt, das er bei der Suche nach einer Fehlerlösung auf eine REXX-SP gestoßen ist, bei der es auch zu dem von mir beschriebenen Fehler kam.
Als Lösung wurden die RUN OPTIONS:
‚MSGFILE(SYSOUT,,,,NOENQ)‘ im Gegensatz zu den von uns verwendeten ENQ gennant.
Ich habe diesen Parameter eben mal auf der kritischen Anlage mit ALTER PROCEDURE umgestellt.
Mal sehen was jetzt passiert?
Gruß Klaus
16. Februar 2005 um 11:29 Uhr #3502Sorry, ich kann kein COBOL.
Vielleicht einfach mal einen normalen "Schreibe Satz auf Datei" – Befehl ausprobieren und die Datei mit
//datei DD SYSOUT=*
im Adressraum definieren ?16. Februar 2005 um 14:53 Uhr #3641Hallo Ulrich,
in meiner ersten Darstellung ist wahrscheinlich nicht klar geworden, dass die DISPLAYs in 99,9 % normal funktionieren (das meinte ich mit alle 2-3 Tage).
Ich glaube also das der DISPLAY im COBOL exakt das gleiche bewirkt, wie der "PUT SKIP EDIT" im PL/1.
Das Problem scheint vielmehr der Engpass zu sein, wenn DB2 zu einem Zeitpunkt von mehreren SPs die an SYSOUT gerichteten Schreibbefehle koordinieren soll.
Irgendwann tritt dann der von mir aufgeführte Fehler auf.
Gruß Klaus
17. Februar 2005 um 7:08 Uhr #3746hmmm, der DISPLAY schreibt doch eine Konsol-Nachricht ? Dagegen schreibt der PUT SKIP EDIT in eine Datei.
Möglicherweise werden hier unterschiedliche Serialisierungs-Methoden verwendet, so dass sich ein "Engpass" anders auswirkt.
Vielleicht irre ich mich aber auch und wir hatten bisher nur Glück. ???
1. März 2005 um 13:28 Uhr #3811Hallo,
bin kein z/OS-Experte, aber soweit ich weiss führt der PUT SKIP LIST in PL/I zu einem ungeblockten IO, der auf SYSPRINT ausgegeben wird (wenn über FILE nichts anderes angegeben wird).
Der DISPLAY in COBOL dürfte zu einer Meldung auf der MC führen, übrigends genauso wie der DISPLAY in PL/I.
Ich kann mich dunkel an sowas wie DISPLAY UPON TERMINAL erinnern, führt dies vielleicht zu einer Ausgabe auf SYSPRINT?Glaube es wäre gut wenn die Ausgabe auf einen DD-Namen erfolgen würde, der in der STP-Region allokiert ist und nicht auf so einer zentralen Resource wie der Console.
Viel Glück, Rolf
- AuthorPosts
You must be logged in to reply to this topic.