Kun*_*oy 0 rpg rpgle ibm-midrange
我有一个 RPGLE 程序。读取并处理完文件中的所有数据后,需要以输入模式处理文件FILE1,并清除文件FILE1。
但是,当我使用 QCMDEXE api 使用命令 CLRPFM 清除文件时,它会抛出文件正在使用中的错误。
我怎样才能克服这个问题并在程序结束时清除文件。任何建议都会很有帮助。
我可以想到几种方法。第一个也是我的偏好是使用嵌入式 SQL:
exec sql delete from file;
Run Code Online (Sandbox Code Playgroud)
如果没有人使用该文件,该命令足够智能,可以进行完全清除,但如果文件正在使用,它只会删除所有记录,并且无法获得清除所需的排它锁。
如果 SQL 无法解决,您可以使用 RPG 删除记录。成功处理后我会删除每条记录。假设您正在使用READ
或READE
来读取记录,一个简单的DELETE
方法就可以了。此方法的优点是仅删除成功处理的记录,并且如果出现导致崩溃等问题,您可以重新运行。无需担心重新处理记录。
如果您确实想要 CLRPFM,您可以尝试的另一件事是close
在清除之前先对文件进行操作。