Getting a message
This example demonstrates how to use the MQGET call to remove a message from a queue.
This extract is taken from the Credit Check sample application (program CSQ4CVB1) supplied with IBM MQ for z/OS . For the names and locations of the sample applications on other platforms, see Sample procedural programs (platforms except z/OS ).⋮ * -------------------------------------------------------* WORKING-STORAGE SECTION. * -------------------------------------------------------* * * W03 - MQM API fields * 01 W03-HCONN PIC S9(9) BINARY VALUE ZERO. 01 W03-HOBJ-RESPONSE PIC S9(9) BINARY. 01 W03-OPTIONS PIC S9(9) BINARY. 01 W03-BUFFLEN PIC S9(9) BINARY. 01 W03-DATALEN PIC S9(9) BINARY. 01 W03-COMPCODE PIC S9(9) BINARY. 01 W03-REASON PIC S9(9) BINARY. * 01 W03-GET-BUFFER. 05 W03-CSQ4BAM. COPY CSQ4VB2. * * 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-CONSTANTS. COPY CMQV SUPPRESS. * -------------------------------------------------------* A-MAIN SECTION. * -------------------------------------------------------* ⋮ * Open response queue. ⋮ * -------------------------------------------------------* PROCESS-RESPONSE-SCREEN SECTION. * -------------------------------------------------------* * * * This section gets a message from the response queue. * * * * When a correct response is received, it is * * transferred to the map for display; otherwise * * an error message is built. * * * * -------------------------------------------------------*
* * Set get-message options * COMPUTE MQGMO-OPTIONS = MQGMO-SYNCPOINT + MQGMO-ACCEPT-TRUNCATED-MSG + MQGMO-NO-WAIT. * * Set msgid and correlid in MQMD to nulls so that any * message will qualify. * Set length to available buffer length. * MOVE MQMI-NONE TO MQMD-MSGID. MOVE MQCI-NONE TO MQMD-CORRELID. MOVE LENGTH OF W03-GET-BUFFER TO W03-BUFFLEN. * CALL 'MQGET' USING W03-HCONN W03-HOBJ-RESPONSE MQMD MQGMO W03-BUFFLEN W03-GET-BUFFER W03-DATALEN W03-COMPCODE W03-REASON. EVALUATE TRUE WHEN W03-COMPCODE NOT = MQCC-FAILED ⋮ * Process the message ⋮ WHEN (W03-COMPCODE = MQCC-FAILED AND W03-REASON = MQRC-NO-MSG-AVAILABLE) MOVE M01-MESSAGE-9 TO M00-MESSAGE PERFORM CLEAR-RESPONSE-SCREEN * WHEN OTHER MOVE 'MQGET ' TO M01-MSG4-OPERATION MOVE W03-COMPCODE TO M01-MSG4-COMPCODE MOVE W03-REASON TO M01-MSG4-REASON MOVE M01-MESSAGE-4 TO M00-MESSAGE PERFORM CLEAR-RESPONSE-SCREEN END-EVALUATE.Parent topic: COBOL examples