|
Hello Larry,
You wrote:
>I'm trying to use RCVMSG after making changes with WRKUSRPRF to catch
>the CPC2204 and CPC2205 completion messages. No matter what I do the
>RCVMSG returns a blank message number (which means no message recieved).
>This fails if I use *ANY or *COMP for the message type to be recieved.
>If I artificially send those messages (with SNDPGMMSG) earlier I can
>retrieve these with no problem. If I use DSPJOBLOG I see the CPC2204/5
>messages in the joblog but they never get recieved. Here is the snippet
>of code that is failing to retrieve any messages whatever.
> MSGLOOP: RCVMSG MSGTYPE(*ANY) MSGDTA(&MSGDTA) MSGID(&MSGID)
> IF COND(&MSGID *EQ ' ') THEN(GOTO DAEND)
> < do stuff >
> GOTO MSGLOOP
Firstly, the default behaviour of RCVMSG is to receive message from PGMQ(*SAME)
meaning
the program in which the command is run. The other choices are PGMQ(*PREV)
which means
your caller, and a named program queue which must be active and in the stack
above your
program. Since the messages are not sent to your program queue the form of
RCVMSG you
use will never work.
Secondly, I don't think you can do what you want with your current approach.
It is
impossible to retrieve messages from a program queue that is no longer active
unless you
know the message key. You can only get the message key by receiving the
message
(Catch-22) or when you send the message.
Your program structure seems to be as follows:
YOUR_PGM
WRKUSRPRF
QMNWRKXX
QSYUP
RCVMSG
QMNWRKXX is the CPP for most of the various WRKxxxxx commands. It calls QSYUP
to create
or change a user profile. QSYUP sends the CPC2204 and CPC2205 messages back to
the
QMNWRKXX program queue where they stay. Your code then invokes RCVMSG but the
QMNWRKXX
is no longer an active call stack entry and you cannot address the program
queue of an
inactive program. Even the QMHRCVPM API will not help.
Ed's suggestion of PGMQ(*PREV) won't work because the program queue containing
the
messages is not previous to your program but after your program.
One possible approach is to use the QMHLJOBL (List Joblog) API and build the
list from
the bottom (List direction *PREV, message key X'FFFFFFFF'). Process the list
looking for
your completion messages. When you reach a request message containing
WRKUSRPRF you know
you're done.
Regards,
Simon Coulter.
«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
«» FlyByNight Software AS/400 Technical Specialists «»
«» Eclipse the competition - run your business on an IBM AS/400. «»
«» «»
«» Phone: +61 3 9419 0175 Mobile: +61 0411 091 400 «»
«» Fax: +61 3 9419 0175 mailto: shc@flybynight.com.au «»
«» «»
«» Windoze should not be open at Warp speed. «»
«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»
+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.