"COBOL400-L" <cobol400-l-bounces@xxxxxxxxxxxx> wrote on 06/04/2016
01:00:03 PM:
----- Message from Richard Schoen <Richard.Schoen@xxxxxxxxxxxxxxx>
on Fri, 3 Jun 2016 17:33:02 +0000 -----
To:
"cobol400-l@xxxxxxxxxxxx" <cobol400-l@xxxxxxxxxxxx>
Subject:
Re: [COBOL400-L] Trapping QSNDDTAQ errors in Cobol program
Do it with a CL or RPG program call if you need to trap specific CPF
errors.
Regards,
Richard Schoen
That's part of the equation. There's no IBM provided command to send dtaq
entries. So you can't just do a MONMSG.
This can be done in COBOL using the message APIs, but it is easier in CL.
The basic flow is 1) Send a message and save the key of the message sent.
2) Call the API. 3) Then walk through the messages using RCVMSG starting
with the key from step 1.
Here's an example of the coding: (I've hardcoded the dataq and library
names.)
PGM PARM(&DATA &DATALEN)
DCL VAR(&FOREVER) TYPE(*LGL)
DCL VAR(&STRKEYVAR) TYPE(*CHAR) LEN(4)
DCL VAR(&KEYVAR) TYPE(*CHAR) LEN(4)
DCL VAR(&LSTKEYVAR) TYPE(*CHAR) LEN(4)
DCL VAR(&DATA) TYPE(*CHAR) LEN(200)
DCL VAR(&DATALEN) TYPE(*DEC) LEN(5 0)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
SNDPGMMSG MSG('Temporary message anchor') TOPGMQ(*SAME) +
KEYVAR(&KEYVAR)
CHGVAR VAR(&STRKEYVAR) VALUE(&KEYVAR)
CALL PGM(QSNDDTA) PARM(DATAQ DATAQLIB &DATALEN &DATA)
DOUNTIL COND(&FOREVER)
/* Use the previous messages key to locate the next
message */
CHGVAR VAR(&LSTKEYVAR) VALUE(&KEYVAR)
RCVMSG MSGTYPE(*NEXT) MSGKEY(&LSTKEYVAR) +
KEYVAR(&KEYVAR) MSGID(&MSGID)
/* I'm leaving the message on the queue RMV(*NO) */
/* -- The default is to remove it RMV(*YES) */
IF COND(&MSGID *EQ 'CPF950A') THEN(DO)
PROCESSING {Do whatever you need done here}
/* Since I've handled the message, I'm removing it now. */
RMVMSG MSGKEY(&KEYVAR)
LEAVE
ENDDO
ENDDO
/* Clean up the temporary anchor message */
RMVMSG MSGKEY(STRKEYVAR)
ENDPGM
Of course you can tailor the basic logic as needed. Another option would
be to set up a command that did the QSNDDTAQ and see if you can do a
MONMSG for them or write the command processing program to send escape
messages so they can be monitored.
HTH,
Michael Quigley
Computer Services
The Way International
www.TheWay.org
As an Amazon Associate we earn from qualifying purchases.