The Resend Last Message command resends the last message received
from your program message queue to your calling program. If an
escape message is received, you may optionally resend a prior
diagnostic message if it exists.
A typical sequence of commands would be:
SBMJOB JOB(xxx) ...
RSNLSTMSG
The RSNLSTMSG command would receive the completion message sent to
your programs message queue and resend it to the program that called
your program. If you had called the program from a command entry
display, the message would appear as a message. The message is
removed from your program message queue.
RSNLSTMSG may only be used in a CL program. By default, the same
type of message received is resent. An option exists to resend the
same message as a different type. For example, you may receive an
*ESCAPE type and resend it as a *DIAG type. Or you may receive a
*COMP type and resend it as an *INFO type.
Note that if you received an escape message and resend it using the
default, your program will end. Your program will also end if you
receive any type of message and resend it with MSGTYPE(*ESCAPE).
RSNLSTMSG accesses only the last message received and it must be one
of the following message types:
01 Completion
02 Diagnostic
04 Information
15 Escape message
If an escape message is to be resent, you must first monitor for the
message such as:
CRTDTAARA DTAARA(xxx) ...
MONMSG MSGID(CPF0000) EXEC(DO) /* Some error */
RSNLSTMSG
ENDDO /* Some error */
If you want to resend either the escape or completion message from a
command such as CRTDTAARA, you would do the following:
CRTDTAARA DTAARA(xxx) ...
MONMSG MSGID(CPF0000) /* Ignore any error */
RSNLSTMSG
If the message is sent with a message ID, it is resent using the same
message ID and message file.
If the message was sent without using a Message ID, CPF9898 is used
in QCPFMSG and the text of the message is resent as the message data.
Some commands may send diagnostic messages and then a general escape
message. If RSNLSTMSG is used, only the escape message would be
resent.
The CPP uses RCVMSG with PGMQ(*PRV) and MSGTYPE(*LAST) to access the
message. The QMHSNDPM API is used to send the message to the program
above your program on the program stack.
Differences with RSNALLMSG
--------------------------
RSNLSTMSG resends only the last message received. RSNALLMSG resends
all messages that exist in the current programs message queue.
Command parameters *CMD
------------------
MSGTYPE The message type to send. The default is *SAME
meaning the same type of message that is received is
resent.
You may specify that the message type received be
resent as *INFO, *COMP, *DIAG, or *ESCAPE.
DIAG If an *EXCP is received, whether to resend the
previous diagnostic message if it exists. *NO is
the default meaning the previous diagnostic remains
in the program message queue.
*YES may be specified to resend the diagnostic
message if it exists. The message is first removed
from the job log and then resent.
Restrictions
------------
See the previous list of message types supported.
Prerequisites
-------------
The following TAA Tools must be on your system:
SNDESCMSG Send escape message
Implementation
--------------
None, the tool is ready to use.
Objects used by the tool
------------------------
Object Type Attribute Src member Src file
------ ---- --------- ---------- ----------
TAAMSHG *CMD TAAMSHG QATTCMD
TAAMSHGC *PGM CLP TAAMSHGC QATTCL
|