在COBOL-DB2程序中实现重启逻辑
问题:COBOL-DB2程序从具有1000条记录的输入文件中获取数据,并将数据插入DB2表中。程序在第432条记录后失败。您将如何实现重启逻辑?
解
重新启动逻辑可以通过固定提交频率在COBOL-DB2程序中实现。如果我们选择100的提交频率,则需要执行以下步骤:
为计数器声明一个变量,例如WS-COUNT。
放置一个循环,在该循环中,我们将从文件中读取记录并将其插入数据库中。每次成功插入记录时,将计数器WS-COUNT加1。
一旦WS-COUNT达到提交频率100,我们将在一个单独的输出文件中写入最后插入的记录键(键字段),初始化WS-COUNT并触发COMMIT语句。确保以I/O模式打开此单独的输出文件,以便我们每次都可以重写记录。
对每个插入的第100条记录(即第100、200、300等)重复上述过程。
成功插入最后一条记录(即第1000条记录)后,我们将清空输出文件。但是,如果由于任何原因追加了程序,则输出文件将具有最后一个成功插入并提交的记录。
在程序的开头,包含用于检查输出文件是否为空或非空的逻辑。如果文件为空,则开始将被视为全新的开始,如果文件为非空,则将其视为追加后程序重新启动。
在重新启动的情况下,输出文件已经具有最后插入/提交的记录。我们只需要简单地循环读取输入文件,并将其键与输出文件进行比较即可。键匹配后,我们需要开始处理记录并将其插入数据库中。