MQSET-设置对象属性

使用 MQSET 调用来更改由句柄表示的对象的属性。 对象必须是队列。

语法

MQSETHconnHobjSelectorCountSelectorsIntAttrCountIntAttrsCharAttrLengthCharAttrsCompcodeReason)

参数

Hconn
类型 :MQHCONN-输入

此句柄表示与队列管理器的连接。 先前的 MQCONN 或 MQCONNX 调用返回了 Hconn 的值。

z/OS® (对于 CICS® 应用程序) 和 IBM® i (对于以兼容性方式运行的应用程序) 上,可以省略 MQCONN 调用,并为 Hconn 指定以下值:
MQHC_DEF_HCONN
缺省连接句柄。
[IBMi]重要信息: 如果仍在使用兼容性方式,请考虑重新编译应用程序并改为使用静态绑定调用。 请参阅 IBM i上 RPG 应用程序的兼容性方式
Hobj
类型 :MQHOBJ-输入

此句柄表示具有要设置的属性的队列对象。 该句柄由先前指定了 MQOO_SET 选项的 MQOPEN 调用返回。

SelectorCount
类型 :MQLONG-输入

这是 Selectors 数组中提供的选择器的计数。 这是要设置的属性数。 零是有效值。 允许的最大数目为 256。

选择器
类型:MQLONGxSelectorCount- 输入

这是 SelectorCount 属性选择器的数组; 每个选择器标识一个具有要设置的值的属性 (整数或字符)。

对于 Hobj 表示的队列类型,每个选择器都必须有效。 仅允许某些 MQIA_ * 和 MQCA_ * 值; 如后列出。

可以按任何顺序指定选择器。 对应于整数属性选择器 (MQIA_ * 选择器) 的属性值必须以这些选择器在 Selectors中出现的相同顺序在 IntAttrs 中指定。 与字符属性选择器 (MQCA_ * 选择器) 对应的属性值必须在 CharAttrs 中按这些选择器出现的顺序指定。 MQIA_ * 选择器可以与 MQCA_ * 选择器交互; 只有每种类型中的相对顺序很重要。

您可以多次指定同一选择器; 如果指定了同一选择器,那么为特定选择器指定的最后一个值将生效。
注:
  1. 在两个不同的范围内分配整数和字符属性选择器: MQIA_ * 选择器位于 MQIA_FIRST 到 MQIA_LAST 的范围内, MQCA_ * 选择器位于 MQCA_FIRST 到 MQCA_LAST 的范围内。

    对于每个范围,常量 MQIA_LAST_USED 和 MQCA_LAST_USED 定义队列管理器接受的最高值。

  2. 如果首先出现所有 MQIA_ * 选择器,那么可以使用相同的元素编号来寻址 SelectorsIntAttrs 数组中的相应元素。
  3. 如果 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 触发器类型。  
注:
  1. 仅在 AIX®HP-UXIBM iSolarisLinux®Windows以及连接到这些系统的 IBM MQ MQI clients 上受支持。
IntAttrCount
类型 :MQLONG-输入

这是 IntAttrs 数组中的元素数,并且必须至少是 Selectors 参数中的 MQIA_ * 选择器数。 如果没有任何值,那么零是有效值。

IntAttrs
类型:MQLONGxIntAttrCount- 输入

这是 IntAttrCount 整数属性值的数组。 这些属性值的顺序必须与 Selectors 数组中的 MQIA_ * 选择器的顺序相同。

如果 IntAttrCountSelectorCount 参数为零,那么不会引用 IntAttrs ; 在这种情况下,以 C 或 System/390 汇编程序编写的程序传递的参数地址可能为空。

CharAttrLength
类型 :MQLONG-输入

这是 CharAttrs 参数的长度 (以字节计) ,并且必须至少是 Selectors 数组中指定的字符属性的长度总和。 如果 Selectors中没有 MQCA_ * 选择器,那么零是有效值。

CharAttrs
类型:MQCHARxCharAttrLength- 输入

这是包含并置在一起的字符属性值的缓冲区。 缓冲区的长度由 CharAttrLength 参数提供。

必须以与 Selectors 数组中的 MQCA_ * 选择器相同的顺序指定字符属性。 每个字符属性的长度是固定的 (请参阅 选择器 )。 如果要为属性设置的值包含的非空白字符数少于定义的属性长度,请将 CharAttrs 中的值填充为空白,以使属性值与定义的属性长度相匹配。

如果 CharAttrLengthSelectorCount 参数为零,那么不会引用 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') 发生了意外错误。

有关这些代码的详细信息,请参阅 消息和原因码

使用说明

  1. 通过使用此调用,应用程序可以指定整数属性的数组和/或字符属性字符串的集合。 如果未发生任何错误,那么将同时设置指定的所有属性。 如果发生错误 (例如,如果选择器无效,或者尝试将属性设置为无效值) ,那么调用将失败并且不会设置任何属性。
  2. 可以使用 MQINQ 调用来确定属性值; 请参阅 MQINQ-Inquire object attributes 以获取详细信息。
    注: 并非所有具有可使用 MQINQ 调用查询的值的属性都可以使用 MQSET 调用更改其值。 例如,不能使用此调用设置 process-object 或 queue-manager 属性。
  3. 在队列管理器重新启动时,会保留属性更改 (临时动态队列的更改除外,这些更改在队列管理器重新启动后不会存在)。
  4. 不能使用 MQSET 调用来更改模型队列的属性。 但是,如果使用带有 MQOO_SET 选项的 MQOPEN 调用打开模型队列,那么可以使用 MQSET 调用来设置 MQOPEN 调用创建的动态本地队列的属性。
  5. 如果要设置的对象是集群队列,那么必须存在集群队列的本地实例才能成功打开。

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'