MQCHARV-变量长度字符串
使用 MQCHARV 结构来描述可变长度字符串。
可用性
MQCHARV 结构在以下平台上可用:
AIX®
IBM® i
Linux®
Windows
字符集和编码
MQCHARV 中的数据必须采用 MQENC_NATIVE 提供的本地队列管理器的编码以及结构中 VSCCSID 字段的字符集。 如果应用程序作为 MQ 客户机运行,那么结构必须采用客户机的编码。 某些字符集具有依赖于编码的表示。 如果 VSCCSID 是这些字符集之一,那么所使用的编码与 MQCHARV 中其他字段的编码相同。 由 VSCCSID 标识的字符集可以是双字节字符集 (DBCS)。
用法
MQCHARV 结构处理可能与包含它的结构不相邻的数据。 要处理此数据,可以使用使用指针数据类型声明的字段。 请注意, COBOL 并非在所有环境中都支持指针数据类型。 因此,也可以使用包含从包含 MQCHARV 的结构开始的数据偏移量的字段来对数据进行寻址。
字段
请注意: 在下表中,字段按用途分组,而不是按字母顺序排列。
| 字段名称和描述 | 常量的名称 | 常量的初始值 (如果有) |
|---|---|---|
| VSPtr(指向变长字符串的指针) | None | 空指针或空字节。 |
| VSOffset(可变长度字符串从包含此 MQCHARV 结构的结构开始的偏移量,以字节为单位) | None | 0 |
| VSBufSize(VSPtr 或 VSOffset 字段寻址的缓冲区大小,以字节为单位) | mqvs_use_vslength | 0 |
| VSLength(由 VSPtr 或 VSOffset 字段寻址的可变长度字符串的长度,以字节为单位) | None | 0 |
| VSCCSID(由 VSPtr 或 VSOffset 字段寻址的可变长度字符串的字符集标识符) | MQCCSI_APPL | -3 |
注: 在 C 编程语言中,宏变量 MQCHARV_DEFAULT 包含表中列出的值。 它可以通过以下方式用于为结构中的字段提供初始值:
|
||
语言声明
MQCHARV 的 C 声明
typedef struct tagMQCHARV MQCHARV;
struct tagMQCHARV {
MQPTR VSPtr; /* Address of variable length string */
MQLONG VSOffset; /* Offset of variable length string */
MQLONG VSBufSize; /* Size of buffer */
MQLONG VSLength; /* Length of variable length string */
MQLONG VSCCSID; /* CCSID of variable length string */
};
COBOL MQCHARV 的声明
** MQCHARV structure
10 MQCHARV.
** Address of variable length string
15 MQCHARV-VSPTR POINTER.
** Offset of variable length string
15 MQCHARV-VSOFFSET PIC S9(9) BINARY.
** Size of buffer
15 MQCHARV-VSBUFSIZE PIC S9(9) BINARY.
** Length of variable length string
15 MQCHARV-VSLENGTH PIC S9(9) BINARY.
** CCSID of variable length string
15 MQCHARV-VSCCSID PIC S9(9) BINARY.
注意: 若要在不同环境间移植 COBOL 应用程序,必须确认目标环境是否均支持该指针数据类型。 否则,应用程序必须使用偏移量字段而不是指针字段来寻址数据。 在不支持指针的环境中,可以将指针字段声明为适当长度的字节字符串,初始值为全空字节字符串。 如果您正在使用偏移量字段,请不要更改此初始值。 在不更改提供的副本的情况下执行此操作的一种方法是使用以下内容:
COPY CMQCHRVV REPLACING POINTER BY ==BINARY PIC S9(9)==.
其中,可以将 CMQCHRVV 交换为要使用的副本。PL/I MQCHARV 的声明
dcl
1 MQCHARV based,
3 VSPtr pointer, /* Address of variable length string */
3 VSOffset fixed bin(31), /* Offset of variable length string */
3 VSBufSize fixed bin(31), /* Size of buffer */
3 VSLength fixed bin(31), /* Length of variable length string */
3 VSCCSID fixed bin(31); /* CCSID of variable length string */
MQCHARV 的 High Level Assembler 声明
MQCHARV DSECT
MQCHARV_VSPTR DS F Address of variable length string
MQCHARV_VSOFFSET DS F Offset of variable length string
MQCHARV_VSBUFSIZE DS F Size of buffer
MQCHARV_VSLENGTH DS F Length of variable length string
MQCHARV_VSCCSID DS F CCSID of variable length string
*
MQCHARV_LENGTH EQU *-MQCHARV
ORG MQCHARV
MQCHARV_AREA DS CL(MQCHARV_LENGTH)