Create a dynamic queue
This example demonstrates how to use the MQOPEN call to create a dynamic 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. * -------------------------------------------------------* * * W02 - Queues processed in this program * 01 W02-MODEL-QNAME PIC X(48) VALUE 'CSQ4SAMP.B1.MODEL '. 01 W02-NAME-PREFIX PIC X(48) VALUE 'CSQ4SAMP.B1.* '. 01 W02-TEMPORARY-Q PIC X(48). * * W03 - MQM API fields * 01 W03-HCONN PIC S9(9) BINARY VALUE ZERO. 01 W03-OPTIONS PIC S9(9) BINARY. 01 W03-HOBJ PIC S9(9) BINARY. 01 W03-COMPCODE PIC S9(9) BINARY. 01 W03-REASON PIC S9(9) BINARY. * * API control blocks * 01 MQM-OBJECT-DESCRIPTOR. COPY CMQODV. * * CMQV contains constants (for setting or testing * field values) and return codes (for testing the * result of a call) * 01 MQM-CONSTANTS. COPY CMQV SUPPRESS. * -------------------------------------------------------* PROCEDURE DIVISION. * -------------------------------------------------------* ⋮ * -------------------------------------------------------* OPEN-TEMP-RESPONSE-QUEUE SECTION. * -------------------------------------------------------*
* * This section creates a temporary dynamic queue * using a model queue * * -------------------------------------------------------* * * Change three fields in the Object Descriptor (MQOD) * control block. (MQODV initializes the other fields) * MOVE MQOT-Q TO MQOD-OBJECTTYPE. MOVE W02-MODEL-QNAME TO MQOD-OBJECTNAME. MOVE W02-NAME-PREFIX TO MQOD-DYNAMICQNAME. * COMPUTE W03-OPTIONS = MQOO-INPUT-EXCLUSIVE. * CALL 'MQOPEN' USING W03-HCONN MQOD W03-OPTIONS W03-HOBJ-MODEL W03-COMPCODE W03-REASON. * IF W03-COMPCODE NOT = MQCC-OK MOVE 'MQOPEN' 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 ELSE MOVE MQOD-OBJECTNAME TO W02-TEMPORARY-Q END-IF. * OPEN-TEMP-RESPONSE-QUEUE-EXIT. * * Return to performing section. * EXIT. EJECT *Parent topic: COBOL examples