NetCOBOL 技術情報:ノウハウ情報
共通
NetCOBOL
Q
固定長定義の入力ファイルに固定長以外のレコードがあった場合、
NetCOBOL実行時にエラーとなりますか。
例えば、ファイル定義が固定長80Byteのときに、入力ファイルが80Byte以外のレコードだけしかない場合、NetCOBOL実行時にエラーとなりますか。
A
NetCOBOL製品として、固定長レコード形式のレコード順ファイルおよび 行順ファイルについては、入力ファイルのレコード長のチェックはして いないため、実行時エラーにはなりません。 プログラムにてチェックするなどの方法で代替してください。
代替案としては、以下があります。
- レコード順ファイルの場合
COBOLプログラムでファイルを入力する前に、C言語プログラムによって、ファイルサイズがレコード長の整数倍になっているかをチェックします。
Solaris/Linuxでは、システム関数statによって、ファイルサイズを調べることができます。 - 行順ファイルの場合
プログラムでのファイル定義を、固定長ではなく可変長にして、読み込んだレコードが想定の長さ(今回のお問合せの場合なら80Byte)と異なるか、プログラムで判定してください。
読み込んだレコードの長さは、ファイル記述項のRECORD句にDEPENDING ON データ名を指定して調べることができます。
