批处理应用程序的落实控制

批处理应用程序可能需要也可能不需要落实控制。 在某些情况下,批处理应用程序可以执行读取输入文件和更新主文件的单一功能。 但是,如果在异常结束后再次启动此应用程序很重要,那么可以对此类型的应用程序使用落实控制。

输入文件是一个更新文件,其中记录中包含用于指示已处理记录的代码。 此文件和任何更新的文件都将置于落实控制之下。 当输入文件中存在代码时,它表示已完成的事务。 程序通过输入文件进行读取,并绕过带有已完成代码的任何记录。 这允许将相同的程序逻辑用于正常和再次启动条件。

如果批处理应用程序包含相互依赖的输入记录,并且包含交换机或总计,那么可以使用通知对象来提供有关再次启动的信息。 通知对象中保留的值用于从输入文件中的最后一个已落实事务再次开始处理。

如果输入记录相互依赖,那么可以将它们作为事务处理。 批处理作业最多可以锁定 50 万条记录。 您可以使用查询选项文件 (QAQQINI) 来减少此限制。 使用 "更改查询属性" (CHGQRYA) 命令的 QRYOPTLIB 参数来指定要使用的作业的查询选项文件。 使用 "查询选项文件" 中的 COMMITMENT_CONTROL_LOCK_LEVEL 值作为作业的锁定限制。 当首次将已记录的资源置于落实控制之下时,将在内部针对每个落实定义对锁定限制值进行高速缓存。 如果在该点之后更改了锁定限制,那么必须刷新高速缓存的值以使其对该落实定义生效。 对 Retrieve Commit Information (QTNRCMTI) API 的任何调用都会刷新调用作业中的高速缓存值。 新值将不适用于在刷新高速缓存之前启动的事务。

任何超过 2000 个锁定的落实周期都可能明显降低系统性能。 否则,存在与交互式应用程序相同的锁定注意事项,但在批处理应用程序中锁定记录的时间长度可能比在交互式应用程序中更不重要。