MQMDE-消息描述符扩展
概述
用途:MQMDE 结构描述有时发生在应用程序消息数据之前的数据。 该结构包含 version-2 MQMD 中存在但 version-1 MQMD 中不存在的那些 MQMD 字段。
格式名:FMMDE。
字符集和编码:MQMDE 中的数据必须包含由 CodedCharSetId 队列管理器属性提供的字符集以及由 ENNAT 为 C 编程语言提供的本地队列管理器的编码。
MDCSI 和 MDENC 字段中:- MQMD (如果 MQMDE 结构位于消息数据的开头) ,或者
- MQMDE 结构之前的头结构 (所有其他情况)。
如果 MQMDE 不在队列管理器的字符集和编码中,那么将接受但不接受 MQMDE ,即将 MQMDE 视为消息数据。
- 在 MQPUT 和 MQPUT1 调用上指定
- MQGET 调用返回
- 在传输队列上的消息中
MQPUT 和 MQPUT1 调用上指定的 MQMDE
MDFMT 字段设置为 FMMDE 以指示存在 MQMDE。 如果应用程序未提供 MQMDE ,那么队列管理器将为 MQMDE 中的字段采用缺省值。 队列管理器使用的缺省值与结构的初始值相同-请参阅 表 2。如果应用程序提供了 version-2 MQMD ,并且 以 MQMDE 作为应用程序消息数据的前缀,那么将处理结构,如 表 1中所示。
| MQMD 版本 | version-2 字段的值 | MQMDE 中相应字段的值 | 队列管理器执行的操作 |
|---|---|---|---|
| 1 | - | 有效 | 已采用 MQMDE |
| 2 | 缺省 | 有效 | 已采用 MQMDE |
| 2 | 不是缺省值 | 有效 | MQMDE 被视为消息数据 |
| 第 1 年或第 2 年 | 任意 | 无效 | 调用失败,并带有相应的原因码 |
| 第 1 年或第 2 年 | 任意 | MQMDE 的字符集或编码错误,或者是不受支持的版本 | MQMDE 被视为消息数据 |
有一个特殊情况。 如果应用程序使用 version-2 MQMD 来放置作为段的消息 (即,设置了 MFSEG 或 MFLSEG 标志) ,并且 MQMD 中的格式名称为 FMDLH ,那么队列管理器会生成 MQMDE 结构并将其 插入到 MQDLH 结构与其后面的数据之间。 在队列管理器随消息保留的 MQMD 中, version-2 字段设置为其缺省值。
version-2 MQMD 中存在但不存在 version-1 MQMD 的多个字段是 MQPUT 和 MQPUT1上的输入/输出字段。 但是,在 MQPUT 和 MQPUT1 调用的输出中,队列管理器 不会 返回 MQMDE 中等效字段中的任何值; 如果应用程序需要这些输出值,那么它必须使用 version-2 MQMD。
MQGET 调用返回的 MQMDE
在 MQGET 调用上,如果应用程序提供了 version-1 MQMD ,那么队列管理器会将使用 MQMDE 返回的消息作为前缀,但前提是 MQMDE 中的一个或多个字段具有非缺省值。 队列管理器将 MQMD 中的 MDFMT 字段设置为值 FMMDE ,以指示存在 MQMDE。
如果应用程序在 BUFFER 参数启动时提供 MQMDE ,那么将忽略 MQMDE。 从 MQGET 调用返回时,会将其替换为消息的 MQMDE (如果需要) 或由应用程序消息数据覆盖 (如果不需要 MQMDE)。
- MQMDE 被视为 MQPUT 或 MQPUT1 调用上的数据 (请参阅 表 1 以了解可能导致此情况的情况)。
- 从通过 TCP 连接连接的远程队列管理器接收到消息,并且未正确设置接收消息通道代理程序 (MCA) (请参阅 IBM® MQ for IBM i 对象的安全性 以获取更多信息)。
传输队列上的消息中的 MQMDE
传输队列上的消息以 MQXQH 结构为前缀,其中包含 version-1 MQMD。 MQMDE 也可能存在,位于 MQXQH 结构和应用程序消息数据之间,但通常仅当 MQMDE 中的一个或多个字段具有非缺省值时才会存在。
- MQXQH (包含 version-1 MQMD)
- MQMDE
- MQDLH
- 应用程序消息数据
字段
MQMDE 结构包含以下字段; 这些字段按 字母顺序进行描述:
- MECSI (10 位有符号整数)
MQMDE 之后的数据的字符集标识。
这指定 MQMDE 结构之后的数据的字符集标识; 它不适用于 MQMDE 结构本身中的字符数据。
在 MQPUT 或 MQPUT1 调用上,应用程序必须将此字段设置为适合于数据的值。 队列管理器不会检查此字段是否有效。 可以使用以下特殊值:- CSINHT
- 继承此结构的字符集标识。
遵循 此结构的数据中的字符数据与此结构位于同一字符集中。
队列管理器将消息中发送的结构中的此值更改为结构的实际字符集标识。 如果未发生错误,那么 MQGET 调用不会返回值 CSINHT。
如果 MQMD 中
MDPAT字段的值为 ATBRKR ,那么不能使用 CSINHT。
此字段的初始值为 CSUNDF。
- MEENC (10 位有符号整数)
- MEENC (10 位有符号整数)
这指定 MQMDE 结构之后的数据的数字编码; 它不适用于 MQMDE 结构本身中的数字数据。
在 MQPUT 或 MQPUT1 调用上,应用程序必须将此字段设置为适合于数据的值。 队列管理器不会检查该字段是否有效。 请参阅 MQMD-消息描述符 中描述的
MDENC字段,以获取有关数据编码的更多信息。此字段的初始值为 ENNAT。
- MEFLG (10 位有符号整数)
常规标志。
可以指定以下标志:- 梅夫农
- 没有标志。
此字段的初始值为 MEFNON。
- MEFMT (8 字节字符串)
MQMDE 之后的数据的格式名称。
这指定遵循 MQMDE 结构的数据的格式名称。
在 MQPUT 或 MQPUT1 调用上,应用程序必须将此字段设置为适合于数据的值。 队列管理器不会检查此字段是否有效。 请参阅 MQMD-消息描述符 中描述的
MDFMT字段,以获取有关格式名称的更多信息。此字段的初始值为 FMNONE。
- MEGID (24 字节位字符串)
组标识。
请参阅 MQMD-消息描述符中描述的
MDGID字段。 此字段的初始值为 GINONE。- MELEN (10 位有符号整数)
MQMDE 结构的长度。
定义了以下值:- MELEN2
- version-2 消息描述符扩展结构的长度。
此字段的初始值为 MELEN2。
- MEMFL (10 位有符号整数)
消息标志。
请参阅 MQMD-消息描述符中描述的
MDMFL字段。 此字段的初始值为 MFNONE。- MEOFF (10 位带符号整数)
物理消息中的数据与逻辑消息开头的偏移量。
请参阅 MQMD-消息描述符中描述的
MDOFF字段。 此字段的初始值为 0。- MEOLN (10 位有符号整数)
原始消息的长度。
请参阅 MQMD-消息描述符中描述的
MDOLN字段。 此字段的初始值为 OLUNDF。- MESEQ (10 位有符号整数)
组中逻辑消息的序号。
请参阅 MQMD-消息描述符中描述的
MDSEQ字段。 此字段的初始值为 1。- MESID (4 字节字符串)
结构标识。
该值必须为:- MESIDV
- 消息描述符扩展结构的标识。
此字段的初始值为 MESIDV。
- MEVER (10 位有符号整数)
结构版本号。
该值必须为:- MEVER2
- Version-2 消息描述符扩展结构。
以下常量指定当前版本的版本号:- MEVERC
- 消息描述符扩展结构的当前版本。
此字段的初始值为 MEVER2。
初始值
| 字段名称 | 常量的名称 | 常量值 |
|---|---|---|
MESID |
MESIDV | 'MDE¬' |
MEVER |
MEVER2 | 2 |
MELEN |
MELEN2 | 72 |
MEENC |
ENNAT | 取决于环境 |
MECSI |
CSUNDF | 0 |
MEFMT |
FMNONE | 空白 |
MEFLG |
梅夫农 | 0 |
MEGID |
吉诺尼 | Null |
MESEQ |
None | 1 |
MEOFF |
None | 0 |
MEMFL |
无 | 0 |
MEOLN |
奥罗达夫 | -1 |
注:
|
||
RPG 声明
D*..1....:....2....:....3....:....4....:....5....:....6....:....7..
D*
D* MQMDE Structure
D*
D* Structure identifier
D MESID 1 4 INZ('MDE ')
D* Structure version number
D MEVER 5 8I 0 INZ(2)
D* Length of MQMDE structure
D MELEN 9 12I 0 INZ(72)
D* Numeric encoding of data that followsMQMDE
D MEENC 13 16I 0 INZ(273)
D* Character-set identifier of data thatfollows MQMDE
D MECSI 17 20I 0 INZ(0)
D* Format name of data that followsMQMDE
D MEFMT 21 28 INZ(' ')
D* General flags
D MEFLG 29 32I 0 INZ(0)
D* Group identifier
D MEGID 33 56 INZ(X'00000000000000-
D 0000000000000000000000-
D 000000000000')
D* Sequence number of logical messagewithin group
D MESEQ 57 60I 0 INZ(1)
D* Offset of data in physical messagefrom start of logical message
D MEOFF 61 64I 0 INZ(0)
D* Message flags
D MEMFL 65 68I 0 INZ(0)
D* Length of original message
D MEOLN 69 72I 0 INZ(-1)