The Get RPG sample program for IBM i
The Get sample program, AMQ3GET4, gets messages from a queue using the MQGET call.
When the program is called, it removes messages from the specified queue. You could use the supplied queue SYSTEM.SAMPLE.LOCAL; run the Put sample program first to put some messages on the queue. You could use the SYSTEM.SAMPLE.ALIAS queue, which is an alias name for the same local queue. The program continues until the queue is empty or an MQI call fails.
CALL PGM(QMQMSAMP/AMQ3GET4) PARM('Queue_Name','Queue_Manager_Name')
where Queue_Name and Queue_Manager_Name must be 48 characters
in length, which you achieve by padding the Queue_Name and
Queue_Manager_Name with the required number of blanks. Therefore, if you are using
SYSTEM.SAMPLE.LOCAL as your target queue, you will need 29 blank characters.
Design of the Get sample program
The program opens the target queue for getting messages; it uses the MQOPEN call with the OOINPQ option. If it cannot open the queue, the program writes an error message containing the reason code returned by the MQOPEN call in its spool file.
For each message on the queue, the program uses the MQGET call to remove the message from the
queue; it then displays the data contained in the message. The MQGET call uses the GMWT option,
specifying a wait interval (GMWI) of 15 seconds, so that the
program waits for this period if there is no message on the queue. If no message arrives before this
interval expires, the call fails and returns the RC2033 (no message available) reason code.
The program demonstrates how you must clear the MDMID and
MDCID fields of the MQMD structure after each MQGET call because
the call sets these fields to the values contained in the message it retrieves. Clearing these
fields means that successive MQGET calls retrieve messages in the order in which the messages are
held in the queue.
The MQGET call specifies a buffer of fixed size. If a message is longer than this buffer, the call fails and the program stops.
The program continues until either the MQGET call returns the RC2033 (no message available) reason code or the MQGET call fails. If the call fails, the program displays an error message that contains the reason code.
The program then closes the queue using the MQCLOSE call.