![[z/OS]](ngzos.gif)
IMS 应用程序中的同步点
在 IMS 应用程序中,通过使用针对 IOPCB 和 CHKP (检查点) 的 IMS 调用 (例如 GU (获取唯一)) 来建立同步点。
要回退自上一个检查点以来的所有更改,可以使用 IMS ROLB (回滚) 调用。 有关更多信息,请参阅 IMS 文档。
如果工作单元中还涉及其他可恢复资源,那么队列管理器 (与 IMS 同步点管理器一起) 将参与两阶段落实协议。
所有打开的句柄都由 IMS 适配器在同步点关闭 (在批处理或非消息驱动的 BMP 环境中除外)。 这是因为其他用户可以启动下一个工作单元,并且在执行 MQCONN , MQCONNX 和 MQOPEN 调用时 (而不是在执行 MQPUT 或 MQGET 调用时) 将执行 IBM® MQ 安全性检查。
但是,在 "等待输入" (WFI) 或伪 "等待输入" (PWFI) 环境中, IMS 不会通知 IBM MQ 关闭句柄,直到下一条消息到达或 QC 状态码返回到应用程序为止。 如果应用程序正在 IMS 区域中等待,并且这些句柄中的任何一个都属于触发的队列,那么将不会发生触发,因为队列已打开。 因此,WFI 或 PWFI 环境中运行的应用程序应在对下一条消息的 IOPCB 执行 GU 之前,对队列句柄执行显式 MQCLOSE。
如果 IMS 应用程序 (BMP 或 MPP) 发出 MQDISC 调用,那么将关闭打开的队列,但不会采用隐式同步点。 如果应用程序正常关闭,那么将关闭任何已打开的队列,并发生隐式落实。 如果应用程序异常关闭,那么将关闭任何已打开的队列,并发生隐式回退。