PDA

View Full Version : Wer erzeugt den Fehler



Robi
03-02-12, 13:57
Hi *all
ich habe hier ein RPT Pgm, das mehrere SQLRPGLE Programme ruft, die wiederum teilweise ander SQLRPGLE Programme rufen.
Nun bricht der Job ab mit der Meldung


SQL0811 Diagnose 30 03.02.12 14:19:41,515379 QSQRUN2 QSYS *STMT QSQRUN2 QSYS *STMT
Ausgangsmodul . . . . . . . : QSQFETCH
Ausgangsprozedur . . . . . : CK_DEBUG
Anweisung . . . . . . . . . : 22221
Zielmodul . . . . . . . . . : QSQFETCH
Zielprozedur . . . . . . . : CK_DEBUG
Anweisung . . . . . . . . . : 22221


Toll
wie krieg ich raus welches SQL Stmt in welchem PGM tatsächlich knallt?
Der Ablauf läuft schon ewig stabil.
Kann ich irgend etwas einstellen damit das Joblog mit das tatsächlich betroffene Pgm nennt?
Ich versuche grade mehr oder weniger jedes Stmt dass ich in Verdacht habe interaktiv auszuführen.

gibt's da ne Idee
danke
Robi

dschroeder
03-02-12, 14:03
Ich habe mir ein kleines Serviceprogramm geschrieben, dass einen SQLCOD, einen Programmnamen und einen Text übergeben bekommt. Ich setze das hinter jedes SQL-Command. Das Tool checkt den übergebenen SQLCOD. Normalerweise ist der Code 0 oder 100. Wenn es ein anderer Code ist, ist das in der Regel ein unerwarteter Fehler. In so einem Fall schreibt das Tool den übergebenen Text mit dem Programmnamen ins Joblog. Dann kann man recht gut feststellen, wo das Problem aufgetreten ist.

Dieter.

Robi
03-02-12, 14:22
Gute Idee, danke.
Hilft nur auf die Schnelle nicht ...

Baue grade auf interaktiv um um es zu debugen.
( ja ich weis, das macht mann von vorneherein so, das mann debugen kann, aber nicht überall :))
Robi

dschroeder
03-02-12, 14:24
Wenn es nur um das Debuggen geht: Du kannst natürlich auch Stapeljobs debuggen mit STRSRVJOB.

Robi
03-02-12, 14:41
is klar
Nur kommt auf der Produktionsmaschine ein hldjobq nicht so gut. Und erstrecht nicht am Freitag Nachmittag.
Für einen Hldjob bin ich zu langsam :)
Außerdem ist der debug keine 'echte' Lösung.
in gefühlen 30 Pgmmen beim SQLSTMT einen Break zu setzen ist halt mühselig.

andreaspr@aon.at
03-02-12, 15:19
Hi,
am besten lässt du ein Monitor (z.B. iNavigator) mit laufen. Dann siehst du Fehler + Beschreibung, Programm und auch verwendete Parameter (Hostvariablen, oder wie ich letztens gelesen habe: Doppelpunktvariablen ;))

lg Andreas

Robi
03-02-12, 15:35
Das hört sich gut an
kannst du in 2 Sätzen sagen wie das (grob) geht?
oder hast du einen link der das Vorgehen beschreibt?

Der iNavigator ist hier zwar installiert, aber eigendlich nur als Plattenplatzverbraucher.
Außer zum AFPDS Spool ansehen (oder war es IPDS?) habe ich ihn noch nie verwendet. (und das ging auch nur mäßig http://newsolutions.de/forum-systemi-as400-i5-iseries/system-i-hauptforum/15943-pagseg-nicht-aenderbar.html

Vielen Dank

andreaspr@aon.at
03-02-12, 16:01
klaro,
http://newsolutions.de/forum-systemi-as400-i5-iseries/system-i-hauptforum/15556-suchen-nach-umlauten-4.html
(der zweite Beitrag von mir auf dieser Seite)

Robi
03-02-12, 16:12
Hmm,

Aktueller Benutzer = der User mit dem du dich via ODBC anmelden möchtest


dann machst du deine Abfrage mit dem Umlaut

Hört sich beides an, als ob es auf ein interaktives sql rausläuft

Trotzdem, werde es am Montag mal versuchen
man soll ja nix beurteilen, was mann nicht seleber probiert hat.

Also ..
vielen Dank und schönes WE
Gruß
Robi

andreaspr@aon.at
03-02-12, 16:38
Du kannst/solltest beim Monitor einen Filter angeben.
Damit werden alle Statements aufgezeichnet die du Brauchst.
Z.B.: alle Statements eines bestimmten Users, Job, einer Bibliothek, Tabelle usw.

Somit wenn du irgendwelche SQLs auf der i Analysieren willst (egal ob Interaktiv oder Batch, in RPG, STRSQL oder PHP), mit dem Monitor bekommst du alles :)

lg und ein Schönes WE