消息标志字段的结构

MDMFL 字段是一个 32 位整数,分为三个单独的子字段。

这些子字段标识:
  • 本地队列管理器无法识别时拒绝的消息标志
  • 始终接受的消息标志,即使本地队列管理器无法识别它们
  • 仅当满足某些其他条件时才接受的消息标志
注: MDMFL 中的所有子字段都保留供队列管理器使用。
每个子字段都由位掩码标识,该位掩码在对应于子字段的位置中具有 1 位,在其他位置具有 0 位。 这些位的编号使得位 0 是最重要的位,而位 31 是最不重要的位。 定义了以下掩码以标识子字段:
MFRUM
被拒绝的不受支持的消息标志的掩码。

此掩码标识 MDMFL 字段中的位位置,其中本地队列管理器不支持的消息标志将导致 MQPUT 或 MQPUT1 调用失败,完成代码为 CCFAIL ,原因码为 RC2249。

此子字段占用位位置 20 到 31。

此子字段中包含以下消息标志:
  • MFL联格观察团
  • MFLSEG
  • MF联格观察团
  • MFSEG
  • MFSEGA
  • MFSEGI
MFAUM
接受的不受支持的消息标志的掩码。

此掩码标识 MDMFL 字段中的位位置,但是在 MQPUT 或 MQPUT1 调用上将接受本地队列管理器不支持的消息标志。 完成代码为 CCOK。

此子字段占用位位置 0 到 11。

MFAUXM
屏蔽仅在某些情况下接受的不受支持的消息标志。
此掩码标识 MDMFL 字段中的位位置,在此字段中,仍将在 MQPUT 或 MQPUT1 调用 上接受本地队列管理器不支持的消息标志,但前提是 满足以下两个条件:
  • 该消息的目标是远程队列管理器。
  • 应用程序不会将消息直接放在本地传输队列上 (即,由 MQOPEN 或 MQPUT1 调用上指定的对象描述符中的 ODMNODON 字段标识的队列不是本地传输队列)。
如果满足这些条件,将返回完成代码 CCOK ,否则返回 CCFAIL ,原因码为 RC2249 。

此子字段占用位位置 12 到 19。

如果在 MDMFL 字段中指定了队列管理器无法识别的标志,那么队列管理器将通过使用按位 AND 操作将 MDMFL 字段与该子字段的掩码组合来依次检查每个子字段。 如果该操作的结果不为零,那么将返回先前描述的完成代码和原因码。