Ibm midrange 如何使用挂起的更改调用ENDCMTCTL?

Ibm midrange 如何使用挂起的更改调用ENDCMTCTL?,ibm-midrange,rollback,crash-recovery,Ibm Midrange,Rollback,Crash Recovery,我的iSeries ILE程序因未提交的更改而崩溃。 现在我想用ENDCMTCTL结束承诺控制(要再次启动程序,程序启动承诺控制本身),但失败了,消息如下: CPF8355 - ENDCMTCTL not allowed. Pending changes active 是否有一种方法可以回滚/提交更改并以正确的方式结束提交控制?我的经验更丰富的同事建议只需注销并开始新的会话 编辑 我尝试过WRKCMTDFN和其中的所有操作,但都没有成功。 强制回滚和强制提交失败,消息为: CPD83ED -C

我的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选项(*CMTCTL)查看哪些资源仍然处于打开状态并处于承诺控制之下。如果有打开的文件,程序应在尝试ENDCMTCTL之前将其关闭。如果在这种情况下,对RPG程序的重复调用导致文件因性能原因而保持打开状态,请使用特殊参数最后调用一次,该参数将告诉RPG程序关闭文件。或者,如果它是一个ILE程序,那么考虑RCalcGrp.

是的,它看起来像提交/回滚过程已经启动,我已经修改了一些问题。details@Piro-我认为在这一点上,你所能做的就是终止你的工作(结束会话、结束工作等等)。听起来好像提交/回滚已经发生了,但是一些资源还没有关闭——类似于Buck描述的场景,在RPG程序中,文件保持打开状态,而LR没有打开。RCLACTGRP部分工作。我必须关闭我们用来回收激活组的IDE(营业额)。RCLACTGRP之后,状态保持不一致,并且系统中的另一个程序调用失败-
MCH3402-试图引用不再存在的对象的全部或部分
。就像@Benny说的,结束工作似乎是唯一有效的选择。我原以为离职是一种变革管理系统,但我不使用它。您是否从内部调用您的程序?这可能会增加混乱。从命令行调用您的程序,看看它是否能与RCLACTGRP一起工作。我的错误,不是IDE!从命令行OK运行时的行为是相同的,因此在AG中似乎也有一个服务程序。您能否将问题程序放在一个单独的、命名为激活组的组中,然后仅回收该AG?单独的激活组运行良好-在RCLACTGRP之后不再出现问题。谢谢你的帮助。