MQDISC-断开连接队列管理器
MQDISC 调用会中断队列管理器与应用程序之间的连接,并且是 MQCONN 或 MQCONNX 调用的反向调用。
- 在 z/OS®上,所有使用异步消息使用,事件处理或回调的应用程序,主控制线程必须在结束之前发出 MQDISC 调用。 有关更多详细信息,请参阅 异步使用 IBM® MQ 消息 。
- 在 z/OS上, CICS® 应用程序不需要发出此调用以与队列管理器断开连接。如果 CICS 应用程序确实执行了此调用,那么除非执行了较早的 MQCONNX 调用,否则此调用不会生效,请指定下列其中一项:
- MQCNO_SERIALIZE_CONN_TAG_Q_MGR
- MQCNO_SERIALIZE_CONN_TAG_QSG
- MQCNO_RESTRICT_CONN_TAG_Q_MGR 或
- MQCNO_RESTRICT_CONN_TAG_QSG
语法
MQDISC (Hconn、 CompCode、 Reason )
参数
- Hconn
- 类型 :MQHCONN-输入/输出
此句柄表示与队列管理器的连接。 先前的 MQCONN 或 MQCONNX 调用返回了
Hconn的值。在 z/OS for CICS 应用程序上,您可以省略 MQCONN 调用,并为Hconn指定以下值:- MQHC_DEF_HCONN
- 缺省连接句柄。
成功完成调用时,队列管理器会将Hconn设置为不是环境的有效句柄的值。 此值为:- mqhc_unusable_hconn
- 不可用的连接句柄。
在 z/OS上,
Hconn设置为未定义的值。 - CompCode
- 类型:MQLONG - 输出完成代码; 它是下列其中一个代码:
- MQCC_OK
- 成功完成。
- MQCC_WARNING
- 警告(部分完成)。
- MQCC_FAILED
- 调用失败。
- 原因
- 类型:MQLONG - 输出如果
CompCode为 MQCC_OK:- MQRC_NONE
- (0, X'000') 没有要报告的原因。
如果CompCode为 MQCC_WARNING:- mqrc_backed_out
- (2003 年,X'7D3')工作单位退出。
- mqrc_conn_tag_not_released
- (2344 , X' 928 ') 未释放连接标记。
- mqrc_outcome_pending
- (2124, X'84C') 提交操作结果待定。
如果CompCode是 MQCC_FAILED:- mqrc_adapter_disc_load_error
- (2138,X'85A')无法加载适配器断开模块。
- 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_INIT_ERROR
- (2375, X'947') API 出口初始化失败。
- MQRC_API_EXIT_TERM_ERROR
- (2376, X'948') API 出口终止失败。
- MQRC_ASID_MISMATCH
- (2157, X'86D') 主 ASID (Primary ASID) 与主 ASID (home ASID) 不同。
- MQRC_CALL_IN_PROGRESS
- (2219, X'8AB') 在先前调用完成前输入了 MQI 调用。
- MQRC_CONNECTION_BROKEN
- (2009, X'7D9') 与队列管理器的连接丢失。
- MQRC_CONNECTION_STOPPING
- (2203, X'89B') 连接正在关闭。
- MQRC_HCONN_ERROR
- (2018, X'7E2') 连接句柄无效。
- mqrc_outcome_mixed
- (2123, X'84B') 提交或退出操作的结果是混合的。
- mqrc_pageset_error
- (2193 , X'891 ') 访问页集数据集时出错。
- 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_STORAGE_NOT_AVAILABLE
- (2071, X'817') 没有足够的存储空间可用。
- MQRC_UNEXPECTED_ERROR
- (2195, X'893') 发生了意外错误。
有关这些代码的详细信息,请参阅 消息和原因码。
使用说明
- 如果在连接仍打开该连接下的对象时发出 MQDISC 调用,那么队列管理器将关闭这些对象,并将关闭选项设置为 MQCO_NONE。
- 如果应用程序以工作单元中未落实的更改结束,那么这些更改的处置取决于应用程序的结束方式:
- 如果应用程序在结束之前发出 MQDISC 调用:
- 对于队列管理器协调的工作单元,队列管理器代表应用程序发出 MQCMIT 调用。 如果可能,将落实工作单元,否则将回退工作单元。
- 对于外部协调的工作单元,工作单元的状态没有变化; 但是,队列管理器通常指示工作单元必须在工作单元协调程序询问时落实。
在 z/OS上, CICS, IMS (批处理 DL/1 程序除外) 和 RRS 应用程序与此类似。
- 如果应用程序正常结束但未发出 MQDISC 调用,那么所执行的操作取决于环境:
- 在 z/OS上,除 MQ Java 或 MQ JMS 应用程序外,将发生注释 2a 中描述的操作。
- 在所有其他情况下,会发生注释 2c 中描述的操作。
- 如果应用程序 异常 结束而不发出 MQDISC 调用,那么将回退工作单元。
- 如果应用程序在结束之前发出 MQDISC 调用:
- 在 z/OS上,以下要点适用:
- CICS 应用程序不必发出 MQDISC 调用来与队列管理器断开连接,因为 CICS 系统本身会连接到队列管理器,并且 MQDISC 调用不会影响此连接。
- CICS, IMS (非批处理 DL/1 程序) 和 RRS 应用程序使用由外部工作单元协调程序协调的工作单元。 因此, MQDISC 调用不会影响发出调用时存在的工作单元 (如果有) 的状态。
但是, MQDISC 调用 确实 指示结束使用由应用程序发出的较早 MQCONNX 调用与连接关联的连接标记
ConnTag。 如果发出 MQDISC 调用时存在引用连接标记的活动工作单元,那么调用将完成,完成代码为 MQCC_WARNING ,原因码为 MQRC_CONN_TAG_NOT_RELEASED。 直到外部工作单元协调程序已解析工作单元之后,连接标记才可供复用。
注: 在 CICS中,不支持 MQOP_START。 请改为使用 MQOP_START_WAIT 函数调用。
C 调用
MQDISC (&Hconn, &CompCode, &Reason);
按如下所示声明参数:
MQHCONN Hconn; /* Connection handle */
MQLONG CompCode; /* Completion code */
MQLONG Reason; /* Reason code qualifying CompCode */
COBOL 调用
CALL 'MQDISC' USING HCONN, COMPCODE, REASON.
按如下所示声明参数:
** Connection handle
01 HCONN PIC S9(9) BINARY.
** Completion code
01 COMPCODE PIC S9(9) BINARY.
** Reason code qualifying COMPCODE
01 REASON PIC S9(9) BINARY.
PL/I 调用
call MQDISC (Hconn, CompCode, Reason);
按如下所示声明参数:
dcl Hconn fixed bin(31); /* Connection handle */
dcl CompCode fixed bin(31); /* Completion code */
dcl Reason fixed bin(31); /* Reason code qualifying CompCode */
System/390 汇编程序调用
CALL MQDISC,(HCONN,COMPCODE,REASON)
按如下所示声明参数:
HCONN DS F Connection handle
COMPCODE DS F Completion code
REASON DS F Reason code qualifying COMPCODE
Visual Basic 调用
MQDISC Hconn, CompCode, Reason
按如下所示声明参数:
Dim Hconn As Long 'Connection handle'
Dim CompCode As Long 'Completion code'
Dim Reason As Long 'Reason code qualifying CompCode'