MQSET-设置对象属性
使用 MQSET 调用来更改由句柄表示的对象的属性。 对象必须是队列。
语法
MQSET(Hconn、Hobj、SelectorCount、Selectors、IntAttrCount、IntAttrs、CharAttrLength、CharAttrs、Compcode、Reason)
参数
- Hconn
- 类型 :MQHCONN-输入
此句柄表示与队列管理器的连接。 先前的 MQCONN 或 MQCONNX 调用返回了
Hconn的值。在 z/OS® (对于 CICS® 应用程序) 和 IBM® i (对于以兼容性方式运行的应用程序) 上,可以省略 MQCONN 调用,并为Hconn指定以下值:- MQHC_DEF_HCONN
- 缺省连接句柄。
- Hobj
- 类型 :MQHOBJ-输入
此句柄表示具有要设置的属性的队列对象。 该句柄由先前指定了 MQOO_SET 选项的 MQOPEN 调用返回。
- SelectorCount
- 类型 :MQLONG-输入
这是
Selectors数组中提供的选择器的计数。 这是要设置的属性数。 零是有效值。 允许的最大数目为 256。 - 选择器
- 类型:MQLONGxSelectorCount- 输入
这是
SelectorCount属性选择器的数组; 每个选择器标识一个具有要设置的值的属性 (整数或字符)。对于
Hobj表示的队列类型,每个选择器都必须有效。 仅允许某些 MQIA_ * 和 MQCA_ * 值; 如后列出。可以按任何顺序指定选择器。 对应于整数属性选择器 (MQIA_ * 选择器) 的属性值必须以这些选择器在
Selectors中出现的相同顺序在IntAttrs中指定。 与字符属性选择器 (MQCA_ * 选择器) 对应的属性值必须在CharAttrs中按这些选择器出现的顺序指定。 MQIA_ * 选择器可以与 MQCA_ * 选择器交互; 只有每种类型中的相对顺序很重要。您可以多次指定同一选择器; 如果指定了同一选择器,那么为特定选择器指定的最后一个值将生效。注:- 在两个不同的范围内分配整数和字符属性选择器: MQIA_ * 选择器位于 MQIA_FIRST 到 MQIA_LAST 的范围内, MQCA_ * 选择器位于 MQCA_FIRST 到 MQCA_LAST 的范围内。
对于每个范围,常量 MQIA_LAST_USED 和 MQCA_LAST_USED 定义队列管理器接受的最高值。
- 如果首先出现所有 MQIA_ * 选择器,那么可以使用相同的元素编号来寻址
Selectors和IntAttrs数组中的相应元素。 - 如果
SelectorCount参数为零,那么不会引用Selectors; 在这种情况下,以 C 或 System/390 汇编程序编写的程序传递的参数地址可能为空。
下表中列出了可设置的属性。 无法使用此调用设置其他属性。 对于 MQCA_ * 属性选择器,在括号中提供了用于定义
CharAttrs中所需的字符串长度 (以字节为单位) 的常量。表 1. 队列的 MQSET 属性选择器 选择器 描述 注 mqca_trigger_data 触发数据 (MQ_TRIGGER_DATA_LENGTH)。 mqia_dist_lists 分发列表支持。 1 MQIA_禁止获取 是否允许执行 get 操作。 MQIA_禁止放入 是否允许执行放置操作。 mqia_trigger_control 触发器控制。 mqia_trigger_depth 触发器深度。 mqia_trigger_msg_priority 触发器的阈值消息优先级。 mqia_trigger_type 触发器类型。 注:- 仅在 AIX®, HP-UX, IBM i, Solaris, Linux®, Windows以及连接到这些系统的 IBM MQ MQI clients 上受支持。
- 在两个不同的范围内分配整数和字符属性选择器: MQIA_ * 选择器位于 MQIA_FIRST 到 MQIA_LAST 的范围内, MQCA_ * 选择器位于 MQCA_FIRST 到 MQCA_LAST 的范围内。
- IntAttrCount
- 类型 :MQLONG-输入
这是
IntAttrs数组中的元素数,并且必须至少是Selectors参数中的 MQIA_ * 选择器数。 如果没有任何值,那么零是有效值。 - IntAttrs
- 类型:MQLONGxIntAttrCount- 输入
这是
IntAttrCount整数属性值的数组。 这些属性值的顺序必须与Selectors数组中的 MQIA_ * 选择器的顺序相同。如果
IntAttrCount或SelectorCount参数为零,那么不会引用IntAttrs; 在这种情况下,以 C 或 System/390 汇编程序编写的程序传递的参数地址可能为空。 - CharAttrLength
- 类型 :MQLONG-输入
这是
CharAttrs参数的长度 (以字节计) ,并且必须至少是Selectors数组中指定的字符属性的长度总和。 如果Selectors中没有 MQCA_ * 选择器,那么零是有效值。 - CharAttrs
- 类型:MQCHARxCharAttrLength- 输入
这是包含并置在一起的字符属性值的缓冲区。 缓冲区的长度由
CharAttrLength参数提供。必须以与
Selectors数组中的 MQCA_ * 选择器相同的顺序指定字符属性。 每个字符属性的长度是固定的 (请参阅 选择器 )。 如果要为属性设置的值包含的非空白字符数少于定义的属性长度,请将CharAttrs中的值填充为空白,以使属性值与定义的属性长度相匹配。如果
CharAttrLength或SelectorCount参数为零,那么不会引用CharAttrs; 在这种情况下,以 C 或 System/390 汇编程序编写的程序传递的参数地址可能为空。 - CompCode
- 类型:MQLONG - 输出完成代码;此完成代码为以下其中一项:
- MQCC_OK
- 成功完成。
- MQCC_FAILED
- 调用失败。
- 原因
- 类型:MQLONG - 输出
限定
CompCode的原因码。如果CompCode为 MQCC_OK:- MQRC_NONE
- (0, X'000') 没有要报告的原因。
如果CompCode为 MQCC_FAILED:- MQRC_ADAPTER_NOT_AVAILABLE
- (2204, X'89C') 适配器不可用。
- MQRC_ADAPTER_SERV_LOAD_ERROR
- (2130, X'852') 无法装入适配器服务模块。
- MQRC_API_EXIT_ERROR
- (2374, X'946') API 出口失败。
- mqrc_api_exit_load_error
- (2183 , X'887 ') 无法装入 API 出口。
- MQRC_ASID_MISMATCH
- (2157, X'86D') 主 ASID (Primary ASID) 与主 ASID (home ASID) 不同。
- MQRC_CALL_IN_PROGRESS
- (2219, X'8AB') 在先前调用完成前输入了 MQI 调用。
- mqrc_cf_not_available
- (2345 , X' 929 ') 耦合设施不可用。
- mqrc_cf_struc_failed
- (2373 , X' 945 ') 耦合设施结构失败。
- mqrc_cf_struc_in_use
- (2346,X'92A')使用中的耦合设施结构。
- mqrc_cf_struc_list_hdr_in_use
- (2347,X'92B')正在使用耦合-设施结构列表头。
- mqrc_char_attr_length_error
- (2006,X'7D6')字符属性长度无效。
- mqrc_char_attrs_error
- (2007,X'7D7')字符属性字符串无效。
- mqrc_CICS_wait_failed
- (2140,X'85C') 等待请求被 "CICS拒绝 .
- MQRC_CONNECTION_BROKEN
- (2009, X'7D9') 与队列管理器的连接丢失。
- mqrc_connection_not_authorized
- (2217,X'8A9')未授权连接。
- MQRC_CONNECTION_STOPPING
- (2203, X'89B') 连接正在关闭。
- MQRC_DB2_NOT_AVAILABLE
- (2342 , X' 926 ') Db2® 子系统不可用。
- MQRC_HCONN_ERROR
- (2018, X'7E2') 连接句柄无效。
- mqrc_hobj_error
- (2019,X'7E3')对象句柄无效。
- mqrc_inhibit_value_error
- (2020,X'7E4')inhibit-get 或 inhibit-put 队列属性值无效。
- mqrc_int_attr_count_error
- (2021,X'7E5')整数属性计数无效。
- mqrc_int_attrs_array_error
- (2023,X'7E7')整数属性数组无效。
- mqrc_not_open_for_set
- (2040,X'7F8')队列未开放设置。
- mqrc_object_changed
- (2041,X'7F9')打开后对象定义已更改。
- mqrc_object_damaged
- (2101 , X'835 ') 对象已损坏。
- mqrc_pageset_error
- (2193 , X'891 ') 访问页集数据集时出错。
- MQRC_Q_DELETED
- (2052 , X'804 ') 队列已删除。
- MQRC_Q_MGR_NAME_ERROR
- (2058, X'80A') 队列管理器名称无效或者未知。
- MQRC_Q_MGR_NOT_AVAILABLE
- (2059, X'80B') 队列管理器针对连接不可用。
- MQRC_Q_MGR_STOPPING
- (2162, X'872') 队列管理器正在关闭。
- MQRC_RESOURCE_PROBLEM
- (2102, X'836') 没有足够系统资源可用。
- mqrc_selector_count_error
- (2065 , X'811 ') 选择器计数无效。
- mqrc_selector_error
- (2067 , X'813 ') 属性选择器无效。
- 已超过 MQRC_SELECTOR_LIMIT_AUTHORIZED
- (2066 , X'812 ') 选择器计数过大。
- MQRC_STORAGE_NOT_AVAILABLE
- (2071, X'817') 没有足够的存储空间可用。
- mqrc_suppressed_by_exit
- (2109,X'83D')退出程序抑制了调用。
- mqrc_trigger_control_error
- (2075,X'81B')触发控制属性值无效。
- mqrc_trigger_depth_error
- (2076,X'81C') 触发深度属性值无效。
- mqrc_trigger_msg_priority_err
- (2077,X'81D') 触发信息优先级属性值无效。
- mqrc_trigger_type_error
- (2078,X'81E')触发类型属性值无效。
- MQRC_UNEXPECTED_ERROR
- (2195, X'893') 发生了意外错误。
有关这些代码的详细信息,请参阅 消息和原因码。
使用说明
- 通过使用此调用,应用程序可以指定整数属性的数组和/或字符属性字符串的集合。 如果未发生任何错误,那么将同时设置指定的所有属性。 如果发生错误 (例如,如果选择器无效,或者尝试将属性设置为无效值) ,那么调用将失败并且不会设置任何属性。
- 可以使用 MQINQ 调用来确定属性值; 请参阅 MQINQ-Inquire object attributes 以获取详细信息。注: 并非所有具有可使用 MQINQ 调用查询的值的属性都可以使用 MQSET 调用更改其值。 例如,不能使用此调用设置 process-object 或 queue-manager 属性。
- 在队列管理器重新启动时,会保留属性更改 (临时动态队列的更改除外,这些更改在队列管理器重新启动后不会存在)。
- 不能使用 MQSET 调用来更改模型队列的属性。 但是,如果使用带有 MQOO_SET 选项的 MQOPEN 调用打开模型队列,那么可以使用 MQSET 调用来设置 MQOPEN 调用创建的动态本地队列的属性。
- 如果要设置的对象是集群队列,那么必须存在集群队列的本地实例才能成功打开。
C 调用
MQSET (Hconn, Hobj, SelectorCount, Selectors, IntAttrCount, IntAttrs,
CharAttrLength, CharAttrs, &CompCode, &Reason);
MQHCONN Hconn; /* Connection handle */
MQHOBJ Hobj; /* Object handle */
MQLONG SelectorCount; /* Count of selectors */
MQLONG Selectors[n]; /* Array of attribute selectors */
MQLONG IntAttrCount; /* Count of integer attributes */
MQLONG IntAttrs[n]; /* Array of integer attributes */
MQLONG CharAttrLength; /* Length of character attributes buffer */
MQCHAR CharAttrs[n]; /* Character attributes */
MQLONG CompCode; /* Completion code */
MQLONG Reason; /* Reason code qualifying CompCode */
COBOL 调用
CALL 'MQSET' USING HCONN, HOBJ, SELECTORCOUNT, SELECTORS-TABLE,
INTATTRCOUNT, INTATTRS-TABLE, CHARATTRLENGTH,
CHARATTRS, COMPCODE, REASON.
** Connection handle
01 HCONN PIC S9(9) BINARY.
** Object handle
01 HOBJ PIC S9(9) BINARY.
** Count of selectors
01 SELECTORCOUNT PIC S9(9) BINARY.
** Array of attribute selectors
01 SELECTORS-TABLE.
02 SELECTORS PIC S9(9) BINARY OCCURS n TIMES.
** Count of integer attributes
01 INTATTRCOUNT PIC S9(9) BINARY.
** Array of integer attributes
01 INTATTRS-TABLE.
02 INTATTRS PIC S9(9) BINARY OCCURS n TIMES.
** Length of character attributes buffer
01 CHARATTRLENGTH PIC S9(9) BINARY.
** Character attributes
01 CHARATTRS PIC X(n).
** Completion code
01 COMPCODE PIC S9(9) BINARY.
** Reason code qualifying COMPCODE
01 REASON PIC S9(9) BINARY.
PL/I 调用
call MQSET (Hconn, Hobj, SelectorCount, Selectors, IntAttrCount,
IntAttrs, CharAttrLength, CharAttrs, CompCode, Reason);
dcl Hconn fixed bin(31); /* Connection handle */
dcl Hobj fixed bin(31); /* Object handle */
dcl SelectorCount fixed bin(31); /* Count of selectors */
dcl Selectors(n) fixed bin(31); /* Array of attribute selectors */
dcl IntAttrCount fixed bin(31); /* Count of integer attributes */
dcl IntAttrs(n) fixed bin(31); /* Array of integer attributes */
dcl CharAttrLength fixed bin(31); /* Length of character attributes
buffer */
dcl CharAttrs char(n); /* Character attributes */
dcl CompCode fixed bin(31); /* Completion code */
dcl Reason fixed bin(31); /* Reason code qualifying
CompCode */
高级汇编程序调用
CALL MQSET,(HCONN,HOBJ,SELECTORCOUNT,SELECTORS,INTATTRCOUNT, X
INTATTRS,CHARATTRLENGTH,CHARATTRS,COMPCODE,REASON)
HCONN DS F Connection handle
HOBJ DS F Object handle
SELECTORCOUNT DS F Count of selectors
SELECTORS DS (n)F Array of attribute selectors
INTATTRCOUNT DS F Count of integer attributes
INTATTRS DS (n)F Array of integer attributes
CHARATTRLENGTH DS F Length of character attributes buffer
CHARATTRS DS CL(n) Character attributes
COMPCODE DS F Completion code
REASON DS F Reason code qualifying COMPCODE
Visual Basic 调用
MQSET Hconn, Hobj, SelectorCount, Selectors, IntAttrCount, IntAttrs,
CharAttrLength, CharAttrs, CompCode, Reason
Dim Hconn As Long 'Connection handle'
Dim Hobj As Long 'Object handle'
Dim SelectorCount As Long 'Count of selectors'
Dim Selectors As Long 'Array of attribute selectors'
Dim IntAttrCount As Long 'Count of integer attributes'
Dim IntAttrs As Long 'Array of integer attributes'
Dim CharAttrLength As Long 'Length of character attributes buffer'
Dim CharAttrs As String 'Character attributes'
Dim CompCode As Long 'Completion code'
Dim Reason As Long 'Reason code qualifying CompCode'
![[IBMi]](../common/../refdev/ngibmi.gif)