Ibm midrange 在提交周期中调用SQLRPG时更正提交选项

Ibm midrange 在提交周期中调用SQLRPG时更正提交选项,ibm-midrange,db2-400,rpgle,rpg,Ibm Midrange,Db2 400,Rpgle,Rpg,我们的系统上运行了一些作业,这些作业使用STRCMTCTL和ENDCMTCTL在提交控制周期中更新文件FILE1。在使用UPDATESQL语句更新FILE1的作业期间,我正在调用一个新的SQLRPGLE程序PGM1。程序是用COMMIT(*NONE)编译的,因为我希望不管COMMIT控件是什么,都能进行更新。现在,当使用此更改调用作业时,我可以看到一个错误“ENDCMTCTL not allowed”。挂起的更改处于活动状态。在作业日志中,我没有看到我在文件1的PGM1上所做的更新。 将comp

我们的系统上运行了一些作业,这些作业使用STRCMTCTL和ENDCMTCTL在提交控制周期中更新文件FILE1。在使用UPDATESQL语句更新FILE1的作业期间,我正在调用一个新的SQLRPGLE程序PGM1。程序是用COMMIT(*NONE)编译的,因为我希望不管COMMIT控件是什么,都能进行更新。现在,当使用此更改调用作业时,我可以看到一个错误“ENDCMTCTL not allowed”。挂起的更改处于活动状态。在作业日志中,我没有看到我在文件1的PGM1上所做的更新。 将compile选项更改为COMMIT(*CHG)会解决此问题吗?此选项是否会在作业的原始承诺周期中进行更新?

将compile选项更改为
COMMIT(*CHG)
只会使程序使用commitment控件运行。看起来您已经在使用承诺控制,并对该控制下的文件进行了一些更改。因此,您需要在调用ENDCMTCTL之前提交更改。您可以在紧靠ENDCMTCTL之前的CL中使用COMMIT命令来实现这一点。如果不这样做,作业结束时将自动发生回滚,您将丢失所有更改。

将compile选项更改为
COMMIT(*CHG)
只会使程序使用commitment控件运行。看起来您已经在使用承诺控制,并对该控制下的文件进行了一些更改。因此,您需要在调用ENDCMTCTL之前提交更改。您可以在紧靠ENDCMTCTL之前的CL中使用COMMIT命令来实现这一点。如果不这样做,作业结束时将自动发生回滚,您将丢失所有更改