结束落实控制
End Commitment Control (ENDCMTCTL) 命令结束作业级或激活组级落实定义的落实控制。
发出 ENDCMTCTL 命令向系统指示将结束发出请求的程序正在使用的落实定义。 ENDCMTCTL 命令仅结束作业的一个落实定义,该作业的所有其他落实定义保持不变。
如果结束激活组级别的落实定义,那么在该激活组中运行的程序不能再在落实控制下进行更改,除非已经为作业启动了作业级别的落实定义。 如果作业级别落实定义处于活动状态,那么将立即使其可供在刚刚结束落实控制的激活组中运行的程序使用。
如果结束作业级落实定义,那么在使用作业级落实定义的作业中运行的任何程序都不能再在未使用 STRCMTCTL 命令再次启动落实控制的情况下在落实控制下进行更改。
在发出 ENDCMTCTL 命令之前,必须满足以下条件才能结束落实定义:
- 必须首先关闭在落实控制下为要结束的落实定义打开的所有文件。 当结束作业级落实定义时,这包括在落实控制下由在使用作业级落实定义的任何激活组中运行的任何程序打开的所有文件。
- 必须首先使用 QTNRMVCR API 除去要结束的落实定义的所有 API 落实资源。 当结束作业级落实定义时,这包括由正在使用作业级落实定义的任何激活组中运行的任何程序添加的所有 API 落实资源。
- 必须断开与要结束的落实定义相关联的远程数据库的连接。
- 必须使用正确的同步级别正常结束与落实定义相关联的所有受保护对话。
如果正在交互式作业中结束落实控制,并且与落实定义关联的一个或多个可落实资源具有暂挂更改,那么将向用户发送查询消息 CPA8350 ,询问是落实暂挂更改,回滚暂挂更改还是取消 ENDCMTCTL 请求。
如果正在批处理作业中结束落实控制,并且与要结束的落实定义关联的一个或多个已关闭文件仍具有暂挂更改,那么将回滚这些更改并发送一条消息:
- CPF8356 (如果仅注册本地资源)
- CPF835C (如果仅注册远程资源)
- CPF83E4 (如果同时注册了本地和远程资源)
如果为正在结束的落实定义定义了通知对象,那么可能会对其进行更新。
当注册为最后一个代理程序的 API 的激活组结束时,将调用 API 的出口程序以接收落实或回滚决策。 在这种情况下,即使激活组正常结束,仍可以从 API 出口程序返回回滚请求。 因此,可能无法执行隐式落实操作。
在落实定义成功结束后,已执行所有必需的恢复 (如果有)。 不会对与刚刚结束的落实定义相关联的落实资源执行其他恢复。
在落实定义结束后,可以针对在激活组中运行的程序再次启动作业级别或激活组级别的落实定义。 仅当尚未针对作业启动作业级别落实定义时,才能启动该作业级别落实定义。
虽然在激活组中运行的程序可以多次启动和结束落实定义,但重复启动和结束操作所需的系统资源量可能会导致作业性能和整体系统性能下降。 因此,如果稍后要调用的程序将使用落实定义,那么建议将该落实定义保持活动状态。