Signaling is available only with WebSphere MQ for z/OS.
This example demonstrates how to use the MQGET call with signaling. This extract is taken from the Credit Check sample application (program CSQ4CVB2) supplied with WebSphere MQ for z/OS.
·
·
·
* -------------------------------------------------------* WORKING-STORAGE SECTION. * -------------------------------------------------------* * * W00 - General work fields
·
·
·
01 W00-WAIT-INTERVAL PIC S9(09) BINARY VALUE 30000. * * W03 - MQM API fields * 01 W03-HCONN PIC S9(9) BINARY VALUE ZERO. 01 W03-HOBJ-REPLYQ PIC S9(9) BINARY. 01 W03-COMPCODE PIC S9(9) BINARY. 01 W03-REASON PIC S9(9) BINARY. 01 W03-DATALEN PIC S9(9) BINARY. 01 W03-BUFFLEN PIC S9(9) BINARY.
·
·
·
01 W03-GET-BUFFER. 05 W03-CSQ4BQRM. COPY CSQ4VB4. * 05 W03-CSQ4BIIM REDEFINES W03-CSQ4BQRM. COPY CSQ4VB1. * 05 W03-CSQ4BPGM REDEFINES W03-CSQ4BIIM. COPY CSQ4VB5.
·
·
·
* API control blocks * 01 MQM-MESSAGE-DESCRIPTOR. COPY CMQMDV. 01 MQM-GET-MESSAGE-OPTIONS. COPY CMQGMOV.
·
·
·
* MQV contains constants (for filling in the * control blocks) and return codes (for testing * the result of a call). * 01 MQM-MQV. COPY CMQV SUPPRESS. * -------------------------------------------------------* LINKAGE SECTION. * -------------------------------------------------------* 01 L01-ECB-ADDR-LIST. 05 L01-ECB-ADDR1 POINTER. 05 L01-ECB-ADDR2 POINTER.
* 01 L02-ECBS. 05 L02-INQUIRY-ECB1 PIC S9(09) BINARY. 05 L02-REPLY-ECB2 PIC S9(09) BINARY. 01 REDEFINES L02-ECBS. 05 PIC X(02). 05 L02-INQUIRY-ECB1-CC PIC S9(04) BINARY. 05 PIC X(02). 05 L02-REPLY-ECB2-CC PIC S9(04) BINARY. * * -------------------------------------------------------* PROCEDURE DIVISION. * -------------------------------------------------------*
·
·
·
* Initialize variables, open queues, set signal on * inquiry queue.
·
·
·
* -------------------------------------------------------* PROCESS-SIGNAL-ACCEPTED SECTION. * -------------------------------------------------------* * This section gets a message with signal. If a * * message is received, process it. If the signal * * is set or is already set, the program goes into * * an operating system wait. * * Otherwise an error is reported and call error set. * * -------------------------------------------------------* * PERFORM REPLYQ-GETSIGNAL. * EVALUATE TRUE WHEN (W03-COMPCODE = MQCC-OK AND W03-REASON = MQRC-NONE) PERFORM PROCESS-REPLYQ-MESSAGE * WHEN (W03-COMPCODE = MQCC-WARNING AND W03-REASON = MQRC-SIGNAL-REQUEST-ACCEPTED) OR (W03-COMPCODE = MQCC-FAILED AND W03-REASON = MQRC-SIGNAL-OUTSTANDING) PERFORM EXTERNAL-WAIT * WHEN OTHER MOVE 'MQGET SIGNAL' TO M02-OPERATION MOVE MQOD-OBJECTNAME TO M02-OBJECTNAME PERFORM RECORD-CALL-ERROR MOVE W06-CALL-ERROR TO W06-CALL-STATUS END-EVALUATE. * PROCESS-SIGNAL-ACCEPTED-EXIT. * Return to performing section EXIT. EJECT *
* -------------------------------------------------------* EXTERNAL-WAIT SECTION. * -------------------------------------------------------* * This section performs an external CICS wait on two * * ECBs until at least one is posted. It then calls * * the sections to handle the posted ECB. * * -------------------------------------------------------* EXEC CICS WAIT EXTERNAL ECBLIST(W04-ECB-ADDR-LIST-PTR) NUMEVENTS(2) END-EXEC. * * At least one ECB must have been posted to get to this * point. Test which ECB has been posted and perform * the appropriate section. * IF L02-INQUIRY-ECB1 NOT = 0 PERFORM TEST-INQUIRYQ-ECB ELSE PERFORM TEST-REPLYQ-ECB END-IF. * EXTERNAL-WAIT-EXIT. * * Return to performing section. * EXIT. EJECT
·
·
·
* -------------------------------------------------------* REPLYQ-GETSIGNAL SECTION. * -------------------------------------------------------* * * * This section performs an MQGET call (in syncpoint with * * signal) on the reply queue. The signal field in the * * MQGMO is set to the address of the ECB. * * Response handling is done by the performing section. * * * * -------------------------------------------------------* * COMPUTE MQGMO-OPTIONS = MQGMO-SYNCPOINT + MQGMO-SET-SIGNAL. MOVE W00-WAIT-INTERVAL TO MQGMO-WAITINTERVAL. MOVE LENGTH OF W03-GET-BUFFER TO W03-BUFFLEN. * MOVE ZEROS TO L02-REPLY-ECB2. SET MQGMO-SIGNAL1 TO ADDRESS OF L02-REPLY-ECB2.
* * Set msgid and correlid to nulls so that any message * will qualify. * MOVE MQMI-NONE TO MQMD-MSGID. MOVE MQCI-NONE TO MQMD-CORRELID. * CALL 'MQGET' USING W03-HCONN W03-HOBJ-REPLYQ MQMD MQGMO W03-BUFFLEN W03-GET-BUFFER W03-DATALEN W03-COMPCODE W03-REASON. * REPLYQ-GETSIGNAL-EXIT. * * Return to performing section. * EXIT. EJECT *
·
·
·
Notices |
Downloads |
Library |
Support |
Feedback
![]() ![]() |
csq035d |