PDA

View Full Version : Mehr Infos zu Fehler innerhalb MONITOR



axlp
28-06-12, 08:15
Hallo zusammen,

gibt es eine Möglichkeit im Fehlerfall im ON-ERROR Zweig eines MONITOR-Blockes an die Zeile ranzukommen, wo der eigentliche Fehler auftrat? Evtl. noch an sonstige Informationen, die die Fehlersuche vereinfachen würden.

Vielen Dank im voraus.

andreaspr@aon.at
28-06-12, 08:37
Hallo,

Scott Klement hat ein paar nette Beispiele auf seiner Seite
Error handling (http://www.scottklement.com/rpg/ifs_ebook/errors.html)

Du kannst auch alternativ APIs zum einlesen der letzten Job-Log Einträge verwenden.

lg Andreas

RobertMack
28-06-12, 08:54
SDS 11-15 5,0 zoned dec

Liste der Codes: http://publib.boulder.ibm.com/infocenter/iseries/v5r4/index.jsp?topic=%2Fbooks_web%2Fc092508690.htm

Logic IT-Services
28-06-12, 09:55
Zufälligerweise gerade diese Woche in meinem Mailkasten gelandet...

Möglicherweise ist's aber zuviel vom Guten.

PowerUp: RPG Exception Handling (http://ibmsystemsmag.blogs.com/powerup/2012/03/rpg-exception-handling.html)

und dazu das entsprechende Redbook
IBM Redbooks | RPG: Exception and Error Handling (http://www.redbooks.ibm.com/abstracts/redp4321.html)

axlp
28-06-12, 09:59
Danke erstmal für die schnelle Antwort.

Mit der Datenstruktur hatte ich schon mal rumgespielt. Leider ist die Zeilen-Nr. hier die 'oberste' sub procedure des Aufrufstacks, aber halt nicht diejenige 'sub procedure' die den Fehler eigentlich verursachte.

In meinem Fall umschließt der MONITOR-Block meine gesamte Programmlogik, damit Fehler auf keinen Fall zu einem Absturz des Programms führen können. Sieht so aus:

MONITOR
main()
ON-ERROR
-> Fehlerhandling
ENDMON

In Java kann man sich im Fehlerfall den Stracktrace ausgeben lassen. Also die Aufrufhierachie von der obersten bis zur tiefsten Stufe. Das erleichtert die Fehlersuche ungemein.

Fuerchau
28-06-12, 10:52
Den Stack kannst du dir auch auf der AS/400 auslesen, aber eine Zeilen-Nr. gibts dazu nicht, außerdem bekommst du nur den aktuellen Stack.

Java ist auch eine andere Welt, da wird der Stack in der Exception automatisch bereitgestellt.

Um die Zeilen-Nr. auszulesen musst du dann halt die Nachricht aus dem Joblog lesen.
Da die Nachricht ja an deine Monitor-Gruppe gesendet wurde kannst du auch die letzte(n) Nachricht(n) deiner aktuellen Aufrufebene abrufen:
Receive Program Message (QMHRCVPM) API (http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/apis/QMHRCVPM.htm)

In den Nachrichtendaten findest du dann alles was du brauchst.