首页 > 解决方案 > 在提交周期中调用 SQLRPG 时更正提交选项

问题描述

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

标签: ibm-midrangedb2-400rpglerpg

解决方案


不。

将编译选项更改为COMMIT(*CHG)仅使程序使用提交控制运行。看起来您已经在使用承诺控制,并对其下的文件进行了一些更改。因此,您需要在调用 ENDCMTCTL 之前提交更改。您可以在 CL 中紧挨 ENDCMTCTL 之前使用 COMMIT 命令来执行此操作。如果您不这样做,则作业结束时将自动发生 ROLLBACK,并且您将丢失所有更改。


推荐阅读