Troubleshooting
Problem
When using IBM WebSphere Transformation Extender (WTX), the WebSphere MQ Adapter reports an MQ Reason Code 2148 error message when putting an MQ message with an MQIIH header to a local queue.
Symptom
The WTX WebSphere MQ Adapter fails with Reason Code 2148, which indicates that the message contains an MQIIH structure that is not valid, when putting a message with an MQIIH header to a local queue.
Cause
The map output card type tree includes the MQIIH header with the Binary Integer values defined with the Byte Order set to Native, meaning the Native Byte Order of the operating system will be used.
The MQ Reason Code 2148 error is caused by a mismatch of the Byte Order of the Binary Integer values defined in output type tree for the MQIIH header and the expected Byte Order for Binary Integer values, which is determined by the MQMD header Encoding field value.
The problem occurs when the MQMD header Encoding value does not match the Native Encoding for the operating system or platform where the map is being executed.
Diagnosing The Problem
The following reference information may be used to determine the correct MQMD header Encoding value to use for the operating system where WTX is running the map..
The MQMD header Encoding value determines whether the Byte Order of the Binary Integer values are expected to be Normal (Big Endian) or Reversed (Little Endian).
http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=%2Fcom.ibm.mq.csqzaq.doc%2Ffc_MQENC_.htm
The Encoding value is the sum of the Integer Encoding, Decimal Encoding and Float Encoding values.
MQENC_INTEGER_NORMAL = 1
MQENC_INTEGER_REVERSED = 2
MQENC_DECIMAL_NORMAL = 16
MQENC_DECIMAL_REVERSED = 32
MQENC_FLOAT_IEEE_NORMAL = 256
MQENC_FLOAT_IEEE_REVERSED = 512
MQENC_FLOAT_S390 = 768
The Native Unix Encoding is 273 (1 + 16 + 256 = 273) which expects the Binary Integer to be Normal (Big Endian).
The Native Linux or Native Windows Encoding is 546 (2 + 32 + 512 = 546) which expects the Binary Integer to be Reversed (Little Endian).
The Native z/OS Encoding is 785 (1 + 16 + 768 = 785) which expects the Binary Integer to be Normal (Big Endian).
Resolving The Problem
Resolve the problem by using the appropriate MQMD header Encoding value when creating the MQMD header using a map output card type tree. The MQMD header Encoding field can be set to the value that corresponds to the Native Encoding of the operating system where the map is run.
Operating System | MQMD Encoding value |
---|---|
Unix | 273 |
Linux or Windows | 546 |
z/OS | 785 |
For example, if running the map on Linux then the MQMD header Encoding value would be 546.
Was this topic helpful?
Document Information
Modified date:
16 June 2018
UID
swg21569475