SQL文の実行時情報を格納するSQLCODE、SQLMSG、およびSQLERRDの定義場所の扱いが変更になりました。
NetCOBOL for .NET V4.0.0以前:
SQL宣言節外で定義されたSQLCODE、SQLERRD、またはSQLMSGには、SQL文の実行時情報を格納しません。
NetCOBOL for .NET V4.1.0以降:
SQL宣言節外で定義されたSQLCODE、SQLERRD、またはSQLMSGに、SQL文の実行時情報を格納します。
[影響]
以下の条件の場合、V4.0.0以前ではSQLCODE、SQLERRDまたはSQLMSGにSQL文の実行時情報は格納されませんでしたが、V4.1.0以降ではSQL文の実行時情報が格納されるようになりました。そのため、上記3つのデータをSQL文の実行時情報を得る目的以外で使用していた場合は、実行結果が異なる場合があります。ただし、本影響があるのはV4.1.0以降で再翻訳した場合に限ります。
SQL宣言節内にSQLSTATEが構文規則どおりに定義されている。かつ、
SQL宣言節外にSQLCODE、SQLERRDまたはSQLMSGが構文規則どおりに定義されている。かつ、
SQL文が実行される。かつ、
手続き部でSQLCODE、SQLERRDまたはSQLMSGが参照される。かつ、
1.~4.が同一翻訳単位内に記述されている場合。
[対処方法]
SQL宣言節外に定義されたSQLCODE、SQLMSG、またはSQLERRDの名前を変更してください。