富士通

NetCOBOL 技術情報:ノウハウ情報

共通

NetCOBOL

Q

固定長定義の入力ファイルに固定長以外のレコードがあった場合、 NetCOBOL実行時にエラーとなりますか。

例えば、ファイル定義が固定長80Byteのときに、入力ファイルが80Byte以外のレコードだけしかない場合、NetCOBOL実行時にエラーとなりますか。

A

NetCOBOL製品として、固定長レコード形式のレコード順ファイルおよび 行順ファイルについては、入力ファイルのレコード長のチェックはして いないため、実行時エラーにはなりません。 プログラムにてチェックするなどの方法で代替してください。

代替案としては、以下があります。

  • レコード順ファイルの場合
    COBOLプログラムでファイルを入力する前に、C言語プログラムによって、ファイルサイズがレコード長の整数倍になっているかをチェックします。
    Solaris/Linuxでは、システム関数statによって、ファイルサイズを調べることができます。
  • 行順ファイルの場合
    プログラムでのファイル定義を、固定長ではなく可変長にして、読み込んだレコードが想定の長さ(今回のお問合せの場合なら80Byte)と異なるか、プログラムで判定してください。
    読み込んだレコードの長さは、ファイル記述項のRECORD句にDEPENDING ON データ名を指定して調べることができます。