|
I've run in to a problem where my SUBR code gets run instead of skipped at the end of the program. My CL program's structure is as follows:
PGM
<declarations>
<do preprocessing for terminal 1>
CALLSUBR SUBR(sndReport)
DLTSPLF FILE(&rptPrtF) JOB(&JOB#/*N/&JOBNM) SPLNBR(&attSplNum)
/*If spool file not active error message occurs, ignore and continue. */
MONMSG MSGID(CPF3309)
<do preprocessing for terminal 2>
CALLSUBR SUBR(sndReport)
DLTSPLF FILE(&rptPrtF) JOB(&JOB#/*N/&JOBNM) SPLNBR(&attSplNum)
/*If spool file not active error message occurs, ignore and continue. */
MONMSG MSGID(CPF3309)
SUBR SUBR(sndReport)
<get user's email address>
<send mail with attachment>
ENDSUBR
ENDPGM
In this example, the code in the SUBR gets run _three_ times instead of the expected two. Instead of going to ENDPGM directly after the second MONMSG, the code inside the SUBR is executed. Oddly, if I add in a meaningless CHGVAR between MONMSG and SUBR, then the SUBR is skipped as expected.
The CL reference tells me that MONMSG can't be used directly after SUBR or CALLSUBR, but I don't see any mention of problems when MONMSG directly precedes SUBR. I've also Googled 'MONMSG SUBR PTF' and 'MONMSG SUBR APAR' but didn't find anything.
FWIW, I also tried adding an empty EXEC(DO)-ENDDO block to the MONMSG to no avail.
Can anyone recreate this problem?
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.