MQSETMP-设置消息属性
使用 MQSETMP 调用来设置或修改消息句柄的属性。
语法
MQSETMP(Hconn、Hmsg、SetPropOpts、Name、PropDesc、Type、ValueLength、Value、Compcode、Reason)
参数
- Hconn
- 类型 :MQHCONN-输入
此句柄表示与队列管理器的连接。
该值必须与用于创建 Hmsg 参数中指定的消息句柄的连接句柄相匹配。 如果使用 MQHC_UNASSOCIATED_HCONN 创建了消息句柄,那么必须在设置消息句柄属性的线程上建立有效连接,否则调用将失败,原因码为 MQRC_CONNECTION_BROKEN。
- 赫消息
- 类型 :MQHMSG-输入
这是要修改的消息句柄。 该值由先前的 MQCRTMH 调用返回。
- SetPropOpts
- 类型 :MQSMPO-输入
控制如何设置消息属性。
此结构允许应用程序指定用于控制如何设置消息属性的选项。 此结构是 MQSETMP 调用上的输入参数。 请参阅 MQSMPO 以获取更多信息。
- 名称
- 类型 :MQCHARV-输入
这是要设置的属性的名称。
- PropDesc
- 类型 :MQPD-输入/输出此结构用于定义属性的属性,包括:
- 如果该属性不受支持,那么会发生什么情况
- 属性所属的消息上下文
- 在属性流动时将其复制到其中的消息
请参阅 MQPD 以获取有关此结构的更多信息。
- 类型
- 类型 :MQLONG-输入
要设置的属性的数据类型。 可以为以下某项:
- MQTYPE_BOOLEAN
- 布尔值。 ValueLength 必须为 4。
- MQTYPE_BYTE_STRING
- 字节字符串。 ValueLength 必须为零或更大值。
- MQTYPE_INT8
- 8 位带符号整数。 ValueLength 必须为 1。
- MQTYPE_INT16
- 16 位带符号整数。 ValueLength 必须为 2。
- MQTYPE_INT32
- 32 位带符号整数。 ValueLength 必须为 4。
- MQTYPE_INT64
- 64 位带符号整数。 ValueLength 必须为 8。
- MQTYPE_FLOAT32
- 32 位浮点数。 ValueLength 必须为 4。
- MQTYPE_FLOAT64
- 64 位浮点数。 ValueLength 必须为 8。
- MQTYPE_STRING
- 字符串。 ValueLength 必须为零或更大的值,或者特殊值 MQVL_NULL_TERMINATED。
- MQTYPE_NULL
- 该属性存在,但具有空值。 ValueLength 必须为零。
- ValueLength
- 类型 :MQLONG-输入
Value 参数中属性值的长度 (以字节计)。 零仅对空值或字符串或字节字符串有效。 零表示该属性存在,但该值不包含任何字符或字节。
如果 Type 参数设置了 MQTYPE_STRING ,那么该值必须大于或等于零或以下特殊值:- MQVL_NULL_TERMINATED
- 该值由字符串中迂到的第一个空值定界。 空值不包含在字符串中。 如果未同时设置 MQTYPE_STRING ,那么此值无效。
- 值
- 类型:MQBYTExValueLength- 输入
要设置的属性的值。 缓冲区必须在适合于值中数据的性质的边界上对齐。
在 C 编程语言中,该参数被声明为指向 void 的指针; 任何类型数据的地址都可以被指定为该参数。
如果 ValueLength 为零,那么不会引用 值 。 在这种情况下,以 C 或 System/390 汇编程序编写的程序传递的参数地址可以为空。
- CompCode
- 类型:MQLONG - 输出完成代码;此完成代码为以下其中一项:
- MQCC_OK
- 成功完成。
- MQCC_FAILED
- 调用失败。
- 原因
- 类型:MQLONG - 输出
限定
CompCode的原因码。如果 CompCode 为 MQCC_OK:- MQRC_NONE
- (0, X'000') 没有要报告的原因。
如果 CompCode 为 MQCC_WARNING:
- MQRC_RFH_FORMAT_ERROR
- (2421 , X'0975 ') 无法解析包含属性的 MQRFH2 文件夹。
如果 CompCode 为 MQCC_FAILED:- MQRC_ADAPTER_NOT_AVAILABLE
- (2204,X'089C')适配器不可用。
- MQRC_ADAPTER_SERV_LOAD_ERROR
- (2130, X'852') 无法装入适配器服务模块。
- MQRC_ASID_MISMATCH
- (2157, X'86D') 主 ASID (Primary ASID) 与主 ASID (home ASID) 不同。
- MQRC_BUFFER_ERROR
- (2004,X'07D4')参数值无效。
- MQRC_BUFFER_LENGTH_ERROR
- (2005,X'07D5')值长度参数无效。
- MQRC_CALL_IN_PROGRESS
- (2219,X'08AB') MQI 呼叫在前一个呼叫完成前进入。
- MQRC_HMSG_ERROR
- (2460,X'099C') 信息句柄指针无效。
- MQRC_MSG_HANDLE_IN_USE
- (2499,X'09C3') 消息句柄已在使用中。
- MQRC_OPTIONS_ERROR
- (2046,X'07FE') 选项无效或不一致。
- MQRC_PD_ERROR
- (2482,X'09B2')属性描述符结构无效。
- MQRC_PROPERTY_NAME_ERROR
- (2442,X'098A')无效属性名。
- MQRC_PROPERTY_TYPE_ERROR
- (2473,X'09A9')属性数据类型无效。
- MQRC_PROP_NUMBER_FORMAT_ERROR
- (2472,X'09A8')数值数据中遇到数字格式错误。
- MQRC_SMPO_ERROR
- (2463,X'099F') 设置报文属性选项结构无效。
- MQRC_SOURCE_CCSID_ERROR
- (2111,X'083F') 属性名编码字符集标识符无效。
- MQRC_STORAGE_NOT_AVAILABLE
- (2071, X'817') 没有足够的存储空间可用。
- MQRC_UNEXPECTED_ERROR
- (2195, X'893') 发生了意外错误。
有关这些代码的详细信息,请参阅 消息和原因码。
C 调用
MQSETMP (Hconn, Hmsg, &SetPropOpts, &Name, &PropDesc, Type,
ValueLength, &Value, &CompCode, &Reason);
按如下所示声明参数:
MQHCONN Hconn; /* Connection handle */
MQHMSG Hmsg; /* Message handle */
MQSMPO SetPropOpts; /* Options that control the action of MQSETMP */
MQCHARV Name; /* Property name */
MQPD PropDesc; /* Property descriptor */
MQLONG Type; /* Property data type */
MQLONG ValueLength; /* Length of property value in Value */
MQBYTE Value[n]; /* Property value */
MQLONG CompCode; /* Completion code */
MQLONG Reason; /* Reason code qualifying CompCode */
COBOL 调用
CALL 'MQSETMP' USING HCONN, HMSG, SETMSGOPTS, NAME, PROPDESC, TYPE,
VALUELENGTH, VALUE, COMPCODE, REASON.
按如下所示声明参数:
** Connection handle
01 HCONN PIC S9(9) BINARY.
** Message handle
01 HMSG PIC S9(18) BINARY.
** Options that control the action of MQSETMP
01 SETMSGOPTS.
COPY CMQSMPOV.
** Property name
01 NAME
COPY CMQCHRVV.
** Property descriptor
01 PROPDESC.
COPY CMQPDV.
** Property data type
01 TYPE PIC S9(9) BINARY.
** Length of property value in VALUE
01 VALUELENGTH PIC S9(9) BINARY.
** Property value
01 VALUE PIC X(n).
** Completion code
01 COMPCODE PIC S9(9) BINARY.
** Reason code qualifying COMPCODE
01 REASON PIC S9(9) BINARY.
PL/I 调用
call MQSETMP (Hconn, Hmsg, SetPropOpts, Name, PropDesc, Type, ValueLength,
Value, CompCode, Reason);
按如下所示声明参数:
dcl Hconn fixed bin(31); /* Connection handle */
dcl Hmsg fixed bin(63); /* Message handle */
dcl SetPropOpts like MQSMPO; /* Options that control the action of MQSETMP */
dcl Name like MQCHARV; /* Property name */
dcl PropDesc like MQPD; /* Property descriptor */
dcl Type fixed bin(31); /* Property data type */
dcl ValueLength fixed bin(31); /* Length of property value in Value */
dcl Value char(n); /* Property value */
dcl CompCode fixed bin(31); /* Completion code */
dcl Reason fixed bin(31); /* Reason code qualifying CompCode */
高级汇编程序调用
CALL MQSETMP,(HCONN,HMSG,SETMSGHOPTS,NAME,PROPDESC,TYPE,VALUELENGTH,
VALUE,COMPCODE,REASON)
按如下所示声明参数:
HCONN DS F Connection handle
HMSG DS D Message handle
SETMSGOPTS CMQSMPOA , Options that control the action of MQSETMP
NAME CMQCHRVA , Property name
PROPDESC CMQPDA , Property descriptor
TYPE DS F Property data type
VALUELENGTH DS F Length of property value in VALUE
VALUE DS CL(n) Property value
COMPCODE DS F Completion code
REASON DS F Reason code qualifying COMPCODE