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

Ibm midrange 在什么情况下,OVRDBF会导致提示错误消息CPF5149?,ibm-midrange,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带来麻烦呢?如何解决?删除它可能不是

我目前正在从事四个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带来麻烦呢?如何解决?删除它可能不是一个选项

SHARE(*YES)选项保持数据路径打开。如果调用堆栈中打开该文件的第一个程序以只读方式打开该文件,那么所有其他程序都将保持这种方式

通常,
SHARE(*YES)
仅在您希望在将记录传递到另一个程序之前使用该命令筛选记录时使用


更新:

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

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


使用
共享(*是)
选项保持数据路径打开。如果调用堆栈中打开该文件的第一个程序以只读方式打开该文件,那么所有其他程序都将保持这种方式

通常,
SHARE(*YES)
仅在您希望在将记录传递到另一个程序之前使用该命令筛选记录时使用


更新:

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

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



只读?你是说INHWRT(*是)选项吗?目前它使用默认文件,因此我不确定文件是否以只读方式打开。@God_of_Thunder否我指的是调用堆栈中第一个程序上的
F
spec或OPNF/OPNQRYF来打开文件。CL中没有OPENQRYF/OPNF。任何相关的F spec声明都设置为更新。@God_of_Thunder删除状态如何?调用堆栈中的每个程序不能请求比第一个打开文件的程序更多的属性。还要检查作业日志,查看与打开的数据路径相关的任何诊断消息。什么是删除状态?我只是在F规范中使用标准UF A E组合。作业日志显示一条消息“Open options ignored”。这和我的问题有关吗?只读?你是说INHWRT(*是)选项吗?目前它使用默认文件,因此我不确定文件是否以只读方式打开。@God_of_Thunder否我指的是调用堆栈中第一个程序上的
F
spec或OPNF/OPNQRYF来打开文件。CL中没有OPENQRYF/OPNF。任何相关的F spec声明都设置为更新。@God_of_Thunder删除状态如何?调用堆栈中的每个程序不能请求比第一个打开文件的程序更多的属性。还要检查作业日志,查看与打开的数据路径相关的任何诊断消息。什么是删除状态?我只是在F规范中使用标准UF A E组合。作业日志显示一条消息“Open options ignored”。这和我的问题有关吗?