Structure of the message-flags field
The MsgFlags field is a 32-bit integer that is divided
into three separate subfields. These subfields identify:
- Message flags that are rejected if the local queue manager does not recognize
them
- Message flags that are always accepted, even if the local queue manager
does not recognize them
- Message flags that are accepted only if certain other conditions are satisfied
Note:
All subfields in MsgFlags are reserved
for use by the queue manager.
Each subfield is identified by a bit mask that has 1-bits in the positions
corresponding to the subfield, and 0-bits elsewhere. The bits are numbered
such that bit 0 is the most significant bit, and bit 31 the least significant
bit. The following masks are defined to identify the subfields:
- MQMF_REJECT_UNSUP_MASK
- This mask identifies the bit positions within the MsgFlags field where message flags that are not supported by the local
queue manager cause the MQPUT or MQPUT1 call to fail with completion code MQCC_FAILED and reason code MQRC_MSG_FLAGS_ERROR.
This subfield occupies bit positions 20 through 31.
The following message
flags are included in this subfield:
- MQMF_LAST_MSG_IN_GROUP
- MQMF_LAST_SEGMENT
- MQMF_MSG_IN_GROUP
- MQMF_SEGMENT
- MQMF_SEGMENTATION_ALLOWED
- MQMF_SEGMENTATION_INHIBITED
- MQMF_ACCEPT_UNSUP_MASK
- This mask identifies the bit positions within the MsgFlags field where message flags that are not supported by the local
queue manager are nevertheless accepted on the MQPUT or MQPUT1 calls. The completion code is MQCC_OK.
This subfield
occupies bit positions 0 through 11.
- MQMF_ACCEPT_UNSUP_IF_XMIT_MASK
- This mask identifies the bit positions within the MsgFlags field where message flags that are not supported by the local
queue manager are nevertheless accepted on the MQPUT or MQPUT1 calls provided that both
of the following conditions are satisfied:
- The message is destined for a remote queue manager.
- The application is not putting the message directly on a local transmission
queue (that is, the queue identified by the ObjectQMgrName and ObjectName fields in the object descriptor specified on the MQOPEN or MQPUT1 call is not a local
transmission queue).
Completion code MQCC_OK is returned if these conditions are satisfied,
and MQCC_FAILED with reason code MQRC_MSG_FLAGS_ERROR if not.
This subfield
occupies bit positions 12 through 19.
If there are flags specified in the MsgFlags field
that the queue manager does not recognize, the queue manager checks each subfield
in turn by using the bitwise AND operation to combine the MsgFlags field with the mask for that subfield. If the result of that operation
is not zero, the completion code and reason codes described above are returned.