On 04 May 2012 13:42, CRPence wrote:
On 04 May 2012 13:12, John Rusling wrote:
I gotta move on to something else, I don't really know what happened
but - (afawk its only happened this one time) -
Thanks for all the help, I gained more knowledge thru your efforts.
Might be worthwhile to add some more values to the DMPLST and\or add a
DFTPGM to the messages in the MCH0800 range; i.e. presume that if once,
then likely again.  <<SNIP>>
  Or either instead of or in addition to a DFTPGM, for whatever is the 
/unexpected/ error condition and as-yet unknown error message that had 
effected the CL run-time default [function check] exception handler 
QCL_Function_Check_Exception_Handler to get invoked, change the code in 
the failing EDPROC to add a MONMSG CPF9999 EXEC(DO).  After that, add 
code to effect whatever logging [e.g. DSPJOBLOG OUTPUT(*PRINT) perhaps 
after an OVRPRTF QPJOBLOG SPOOL(*YES) HOLD(*YES) OUTQ(secure) to ensure 
the user can not delete the spooled joblog] and any desirable 
notification actions before a closing ENDDO.  That will cause the MONMSG 
EXEC handling for the failing statement\command to intercept the error; 
instead of the run-time CL default handler.  And given that the specific 
error is still unmonitored, the DMPLST and DFTPGM processing are both 
still allowed to occur as well.  This change of course would enable 
catching the unknown error even if that error is not one of the 
presumed-to-be MCH0800 range of messages.
  After stmt 64600 in the following:
 EDPROC     in WZZZJBL0 module EDPROC     Procedure: EDPROC
  After stmt   700 in the following; optional, because prior change 
should render any change here moot; or just here, not the prior:
 J55D0801   in WZZZJBL0 module J55D0801   Procedure: J55D0801
  For additional reference, my comments here:
Subject: Re: system reply list entries
Date: Fri, 16 May 2008 12:51:18 -0500
http://archive.midrange.com/midrange-l/200805/msg00887.html
  More generally however, with regard to the comment in the 
original\opening post that "If our in-house log file hadn't revealed 
this, we would have had no clue that anything was out of the ordinary", 
the code may benefit from declaring its own Function Check Exception 
Handler to effect desirable notification\logging; e.g. an entry in the 
"in-house log file".
  So possibly, rather than making the function check handler local to 
the one request, the MONMSG CPF9999 EXEC(GOTO BadThing) could be a 
global monitor.  However that may not be compatible with the intentions 
of that processing which "is setup so the program and job will keep 
executing" according to a later message, because I do not recall that 
the CL has been updated to allow a 'return from exception' capability. 
Presumably GOTO is still the only allowed action in a global MONMSG, 
thus attempts to react similar to how the 'I'=Ignore or 'R'=Retry of the 
CPA0701 and CPA0702 function, is much more complicated than one might 
desire trying to effect.
  Some good reference reading:
IBM i 7.1 Information Center -> Programming -> Control language -> Messages
_i Monitoring for messages in a CL program or procedure i_
http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/rbam6/monmg.htm
-> Monitoring for messages in a CL program or procedure
_i CL handling for unmonitored messages i_
http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/rbam6/dfthd.htm
"The system provides default monitoring and handling of any messages you 
do not monitor. ..."
Regards, Chuck
As an Amazon Associate we earn from qualifying purchases.