在什么情况下OVRDBF会导致提示错误消息CPF5149?

时间:2012-06-25 12:58:24

标签: ibm-midrange

我目前正在研究四种CL和RLG程序。调用栈如下:A-> B-> C-> D其中A是最高调用者CL程序,D是底部被调用者RPG程序。程序A在文件上有一个带有SHARE(* YES)选项的OVRDBF语句,用作程序D中的输出。现在我遇到一个问题,即每当D尝试将记录写入此文件时,错误消息CPF5149是抛出告诉我I / O操作无效。如果我在程序A中注释这个OVRDBF语句,那么D可以将记录写入文件而没有任何问题。那么为什么这个OVRDBF在RPG程序中导致I / O出现问题呢?怎么解决?删除它可能不是一种选择。

1 个答案:

答案 0 :(得分:3)

OVRDBFSHARE(*YES)选项可使数据路径保持打开状态。如果调用堆栈中打开文件的第一个程序以只读方式打开,那么它将保留所有其他程序。

通常SHARE(*YES)仅在您希望使用OPNQRYF命令在将记录传递到另一个程序之前对其进行过滤时使用。


<强>更新

示例中程序B,C和D的开放属性(以先打开文件为准)将控制打开状态。

如果您使用OPNQRYF,请指定OPTION(*ALL)参数以强制它打开具有完整读/写/更新/删除属性的数据路径。


IBM i Information Center: Sharing an Open Data Path