如何使用挂起的更改调用ENDCMTCTL



我的iSeries ILE程序因未提交的更改而崩溃。现在我想用ENDCMTCTL结束承诺控制(再次启动程序,程序本身启动承诺控制),但它失败了,消息是:

CPF8355 - ENDCMTCTL not allowed. Pending changes active

是否有一种方法可以回滚/提交更改并以正确的方式结束承诺控制?我更有经验的同事建议,只需退出并开始新的会话。

编辑

我尝试过WRKCMTDFN和其中的所有操作,但都没有成功。强制回滚和强制提交失败,返回消息:

CPD83ED -Commitment definition not eligible for forced rollback ... 
... 2 -- The logical unit of work, for this commitment definition, is not in
an undecided state.

消息ID可能是CPF8355,第二级文本有助于了解情况:

 Cause . . . . . :   An attempt was made to end commitment control for         
   commitment definition &1. However, there are one or more active resources   
   under commitment control for the commitment definition. The resources could 
   be one of the following:                                                    
     -- Local files                                                            
     -- Remote files                                                           
     -- API commitment resources                                               
     -- Remote SQL database                                                    

使用WRKJOB OPTION(*CMTCTL)查看哪些资源仍处于开放状态并处于承诺控制之下。如果有打开的文件,程序应该在尝试ENDCMTCTL之前关闭它们。如果这是一个RPG程序的重复调用,由于性能原因,文件处于打开状态,请使用一个特殊参数最后一次调用它,该参数将告诉它关闭文件。或者,如果是ILE程序,请考虑RCLACTGRP。

阅读文档后,您似乎没有太多其他事情可做。我本希望您可以选择提交更改或在此基础上回滚更改:

如果交互式作业存在未提交的更改,则会显示一条消息发送,询问用户是否应该提交或滚动更改在承诺定义结束之前返回。对于批处理作业更改将回滚。

因为你没有得到这个选项,我认为你的工作已经开始了提交(或回滚)过程,你现在不能更改它。因此,你只能选择注销——这将结束你的工作和相关的承诺控制。

相关内容

  • 没有找到相关文章

最新更新