IBM Support

MQ Adapter fails with Reason Code 2148 when putting a message with an MQIIH header to a local queue

Technote (troubleshooting)


Problem(Abstract)


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.

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.

Document information

More support for: Transformation Extender
IBM WebSphereMQ Adapter

Software version: 8.3, 8.4, 8.4.1

Operating system(s): AIX, HP-UX, Linux, Platform Independent, Solaris, Windows, z/OS

Reference #: 1569475

Modified date: 15 November 2011