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 WebSphere MQ for z/OS. For the names and locations of the sample applications on other platforms, see Sample programs (all 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.