A fix is available
APAR status
Closed as program error.
Error description
QMGRs were configured with different QMCCSIDs. In this case, QMGR1 has been explicitly configured with QMCCSID=37 in the ZPARM, however QMGR2 shows QMCCSID=0 (which will default to 500). The error is occurring during the MQGET from the transmission queue - as the message contains properties, CSQMHDRS is called to convert this into an RFH2 header, and should insert this between the XQH and the message body. However although the MQGET is occurring on QMGR1, the MQPUT of the message occurred on the other queue manager QMGR2. Normally this wouldn't cause a problem, but in this particular case the queue manager CCSID's differ. This causes the code for detecting a valid XQH to fail, due to XQH being in a different CCSID, leading to the RFH2 being added ahead of the XQH.
Local fix
Configure both QMGRs with the same QMCCSID.
Problem summary
**************************************************************** * USERS AFFECTED: All users of IBM MQ for z/OS Version 9 * * Release 3 Modification 0 and Release 4 * * Modification 0. * **************************************************************** * PROBLEM DESCRIPTION: When MQGET attempts to get a message * * with user properties from a shared * * transmission queue for sending it * * across a channel, it may fail if the * * message was put to the queue by a queue * * manager configured with a different * * CCSID than the one processing the * * message. The message will then be sent * * to a dead letter queue with reason 271, * * which is MQFB_XMIT_Q_MSG_ERROR, * * indicating a lack of a valid * * transmission queue header. * **************************************************************** As part of the MQGET process, CSQMHDRS is called to convert the user properties into an RFH2 header inserted between the header chain and the message body. To do so, checks are performed to establish the headers present in the header chain. Because the CCSID of the transmission header and the queue manager performing the MQGET do not match, the header is not detected, and the RFH2 header is erroneously inserted ahead of the XQH which causes the message to be sent to a dead letter queue.
Problem conclusion
The code checking for transmission queue headers in CSQMHDRS has been changed to account for header with a CCSID value different to the native CCSID value of the processing queue manager if the queue where the message was put is a shared queue. As a result such a header will be correctly identified and the RFH2 will be inserted into the correct position.
Temporary fix
Comments
APAR Information
APAR number
PH56148
Reported component name
IBM MQ Z/OS V9
Reported component ID
5655MQ900
Reported release
400
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2023-08-01
Closed date
2024-10-17
Last modified date
2024-10-18
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
UI97269 UI98330
Modules/Macros
CSQMHDRS
Fix information
Fixed component name
IBM MQ Z/OS V9
Fixed component ID
5655MQ900
Applicable component levels
Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.
[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"400","Line of Business":{"code":"LOB67","label":"IT Automation \u0026 App Modernization"}}]
Document Information
Modified date:
18 October 2024