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に同値化する。
