3

我的 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.
4

2 回答 2

2

消息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。

于 2013-07-31T14:40:43.407 回答
1

阅读文档后,您似乎无能为力。我本来希望您会看到提交更改或基于此回滚更改的选项:

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

因为您没有获得此选项,我认为您的工作已经开始提交(或回滚)过程,此时您无法更改它。因此,您只有退出的唯一“选择”——这将结束您的工作和相关的承诺控制。

于 2013-07-31T13:47:03.840 回答