Feedback (MQLONG)
The Feedback field is used with a message of type MQMT_REPORT to indicate the nature of the report, and is only meaningful with that type of message.
The field can contain one of the MQFB_* values, or one of the MQRC_* values. Feedback codes are grouped as follows:
- MQFB_NONE
- No feedback provided.
- MQFB_SYSTEM_FIRST
- Lowest value for system-generated feedback.
- MQFB_SYSTEM_LAST
- Highest value for system-generated feedback.
The range of system-generated feedback codes MQFB_SYSTEM_FIRST through MQFB_SYSTEM_LAST includes the general feedback codes listed in this topic (MQFB_*), and also the reason codes (MQRC_*) that can occur when the message cannot be put on the destination queue.
- MQFB_APPL_FIRST
- Lowest value for application-generated feedback.
- MQFB_APPL_LAST
- Highest value for application-generated feedback.
Applications that generate report messages must not use feedback codes in the system range (other than MQFB_QUIT), unless they want to simulate report messages generated by the queue manager or message channel agent.
On the MQPUT or MQPUT1 calls, the value specified must either be MQFB_NONE, or be within the system range or application range. This is checked whatever the value of MsgType.
General feedback codes:
- MQFB_COA
- Confirmation of arrival on the destination queue (see MQRO_COA).
- MQFB_COD
- Confirmation of delivery to the receiving application (see MQRO_COD).
- MQFB_EXPIRATION
- Message was discarded because it had not been removed from the destination queue before its expiry time had elapsed.
- MQFB_PAN
- Positive action notification (see MQRO_PAN).
- MQFB_NAN
- Negative action notification (see MQRO_NAN).
- MQFB_QUIT
- End application.
This can be used by a workload scheduling program to control the number of instances of an application program that are running. Sending an MQMT_REPORT message with this feedback code to an instance of the application program indicates to that instance that it should stop processing. However, adherence to this convention is a matter for the application; it is not enforced by the queue manager.
Channel feedback codes:
- MQFB_CHANNEL_COMPLETED
- A channel ended normally.
- MQFB_CHANNEL_FAIL
- A channel ended abnormally and goes into STOPPED state.
- MQFB_CHANNEL_FAIL_RETRY
- A channel ended abnormally and goes into RETRY state.
IMS-bridge feedback codes
These codes are used when an unexpected IMS-OTMA sense code is received. The sense code or, when the sense code is 0x1A the reason code associated with that sense code, is indicated in the Feedback.
- For Feedback codes in range MQFB_IMS_FIRST (300) through MQFB_IMS_LAST (399), a sense code other than 0x1A was received. The sense code is given by the expression (Feedback - MQFB_IMS_FIRST+1)
- For Feedback codes in range MQFB_IMS_NACK_1A_REASON_FIRST (600) through MQFB_IMS_NACK_1A_REASON_LAST (855), a sense code of 0x1A was received. The reason code associated with the sense code is given by the expression (Feedback - MQFB_IMS_NACK_1A_REASON_FIRST)
The meaning of the IMS-OTMA sense codes and corresponding reason codes are described in Open Transaction Manager Access Guide and Reference.
The following feedback codes can be generated by the IMS bridge:
- MQFB_DATA_LENGTH_ZERO
- A segment length was zero in the application data of the message.
- MQFB_DATA_LENGTH_NEGATIVE
- A segment length was negative in the application data of the message.
- MQFB_DATA_LENGTH_TOO_BIG
- A segment length was too large in the application data of the message.
- MQFB_BUFFER_OVERFLOW
- The value of one of the length fields would cause the data to overflow the message buffer.
- MQFB_LENGTH_OFF_BY_ONE
- The value of one of the length fields was 1 byte too short.
- MQFB_IIH_ERROR
- The Format field in MQMD specifies MQFMT_IMS, but the message does not begin with a valid MQIIH structure.
- MQFB_NOT_AUTHORIZED_FOR_IMS
- The user ID contained in the message descriptor MQMD, or the password contained in the Authenticator field in the MQIIH structure, failed the validation performed by the IMS bridge. As a result the message was not passed to IMS.
- MQFB_IMS_ERROR
- An unexpected error was returned by IMS. Consult the IBM MQ error log on the system on which the IMS bridge resides for more information about the error.
- MQFB_IMS_FIRST
- When the IMS-OTMA sense code is not 0x1A, IMS-generated feedback codes are in the range MQFB_IMS_FIRST (300) through MQFB_IMS_LAST (399). The IMS-OTMA sense code itself is Feedback minus MQFB_IMS_ERROR.
- MQFB_IMS_LAST
- Highest value for IMS-generated feedback when the sense code is not 0x1A.
- MQFB_IMS_NACK_1A_REASON_FIRST
- When the sense code is 0x1A, IMS-generated feedback codes are in the range MQFB_IMS_NACK_1A_REASON_FIRST (600) through MQFB_IMS_NACK_1A_REASON_LAST (855).
- MQFB_IMS_NACK_1A_REASON_LAST
- Highest value for IMS-generated feedback when the sense code is 0x1A
CICSĀ®-bridge feedback codes: The following feedback codes can be generated by the CICS bridge:
- MQFB_CICS_APPL_ABENDED
- The application program specified in the message abnormally ended. This feedback code occurs only in the Reason field of the MQDLH structure.
- MQFB_CICS_APPL_NOT_STARTED
- The EXEC CICS LINK for the application program specified in the message failed. This feedback code occurs only in the Reason field of the MQDLH structure.
- MQFB_CICS_BRIDGE_FAILURE
- CICS bridge terminated abnormally without completing normal error processing.
- MQFB_CICS_CCSID_ERROR
- Character set identifier not valid.
- MQFB_CICS_CIH_ERROR
- CICS information header structure missing or not valid.
- MQFB_CICS_COMMAREA_ERROR
- Length of CICS COMMAREA not valid.
- MQFB_CICS_CORREL_ID_ERROR
- Correlation identifier not valid.
- MQFB_CICS_DLQ_ERROR
- The CICS bridge task was unable to copy a reply to this request to the dead-letter queue. The request was backed out.
- MQFB_CICS_ENCODING_ERROR
- Encoding not valid.
- MQFB_CICS_INTERNAL_ERROR
- CICS bridge encountered an unexpected error.
This feedback code occurs only in the Reason field of the MQDLH structure.
- MQFB_CICS_NOT_AUTHORIZED
- User identifier not authorized or password not valid.
This feedback code occurs only in the Reason field of the MQDLH structure.
- MQFB_CICS_UOW_BACKED_OUT
- The unit of work was backed out, for one of the following reasons:
- A failure was detected while processing another request within the same unit of work.
- A CICS abend occurred while the unit of work was in progress.
- MQFB_CICS_UOW_ERROR
- Unit-of-work control field UOWControl not valid.
Trace-route message feedback codes:
- MQFB_ACTIVITY
- Used with the MQFMT_EMBEDDED_PCF format to allow the option of user data following activity reports.
- MQFB_MAX_ACTIVITIES
- Returned when the trace-route message is discarded because the number of activities the message has been involved in exceeds the maximum activities limit.
- MQFB_NOT_FORWARDED
- Returned when the trace-route message is discarded because it is about to be sent to a remote queue manager that does not support trace-route messages.
- MQFB_NOT_DELIVERED
- Returned when the trace-route message is discarded because it is about to be put on a local queue.
- MQFB_UNSUPPORTED_FORWARDING
- Returned when the trace-route message is discarded because a value in the forwarding parameter is unrecognized, and is in the rejected bit mask.
- MQFB_UNSUPPORTED_DELIVERY
- Returned when the trace-route message is discarded because a value in the delivery parameter is unrecognized, and is in the rejected bit mask.
IBM MQ reason codes: For exception report messages, Feedback contains an IBM MQ reason code. Among possible reason codes are:
- MQRC_PUT_INHIBITED
- (2051, X'803') Put calls inhibited for the queue.
- MQRC_Q_FULL
- (2053, X'805') Queue already contains maximum number of messages.
- MQRC_NOT_AUTHORIZED
- (2035, X'7F3') Not authorized for access.
- MQRC_Q_SPACE_NOT_AVAILABLE
- (2056, X'808') No space available on disk for queue.
- MQRC_PERSISTENT_NOT_ALLOWED
- (2048, X'800') Queue does not support persistent messages.
- MQRC_MSG_TOO_BIG_FOR_Q_MGR
- (2031, X'7EF') Message length greater than maximum for queue manager.
- MQRC_MSG_TOO_BIG_FOR_Q
- (2030, X'7EE') Message length greater than maximum for queue.
For a full list of reason codes, see:
- For IBM MQ for z/OSĀ®, see API reason codes.
- For all other platforms, see API completion and reason codes.
This is an output field for the MQGET call, and an input field for MQPUT and MQPUT1 calls. The initial value of this field is MQFB_NONE.