私は現在、4つの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で問題を引き起こすのでしょうか。それを解決する方法は?それを削除することはオプションではないかもしれません。
2723 次
1 に答える
3
データパスを開いたままにするオプションSHARE(*YES)
。OVRDBF
ファイルを開くコールスタックの最初のプログラムが読み取り専用としてファイルを開く場合、他のすべてのプログラムではその状態が維持されます。
通常、コマンドを使用してレコードを別のプログラムに渡す前にフィルター処理SHARE(*YES)
する場合にのみ使用されます。OPNQRYF
アップデート:
この例のプログラムB、C、およびD(ファイルを最初に開いた方)のオープン属性は、オープンステータスを制御します。
を使用している場合はOPNQRYF
、パラメーターを指定してOPTION(*ALL)
、完全な読み取り/書き込み/更新/削除属性を使用してデータパスを強制的に開きます。
于 2012-06-25T15:21:57.323 に答える