富士通

NetCOBOL 技術情報:トラブルシューティング

エラー

Windows (x86,x64), Solaris, Linux (x86, x64)

Pro*COBOL

Q

Pro*COBOL V1.8では正常に動作していたアプリケーションが、Pro*COBOL R8.0.5では「ORA-01403」のエラーが表示されます。

A

PIC Xのホスト変数に対するデータ型の仕様が変更されたことにより、プログラムの動作が変わったことが原因と考えられます。

PIC Xのホスト変数のデフォルトのデータ型は、次のようになります。

  • Pro*COBOL V1.8やPro*COBOL R1.8.27/R1.8.28/R1.8.50/R1.8.51/R1.8.52/R1.8.76/R1.8.77の場合は、VARCHAR2です。
  • Pro*COBOL R8.0.5/R8.0.6/R8.1.5/R8.1.6/R8.1.7/R9.0.1/R9.2.0の場合は、CHARFに変わりました。

以下はPro*COBOL V1.8とR8.0.5で動作が異なるプログラムの例です。

例

解説
データベースの文字は1Byteの文字「1」ですが、アプリケーション側の文字は、PIC Xの変数のデフォルト外部データ型がCHARFになるため、1Byteの文字および空白4文字として認識されます。そのため、SELECT文の条件式(WHERE句)が一致しなくなり、ORA-01403のエラーが発生します。

対処方法
以下の対処方法があります。

  • プリコンパイルオプションPICX=VARCHAR2を指定する。
    または、
  • ホスト変数をVARCHAR2に同値化する。