最近、ASのマシンを入替を行いOSのバージョンもV5R3M0からV7にバージョンアップされました。SQLRPGで作成しているPGMがいくつかあるのですがこちらのPGMの動作に違いが出ています。まったく同じコンパイルオプションでコンパイルしているのですが、Where文の中で、数値フィールドの比較対象が文字列で定義されていた場合、V5R3M0ではエラーにならず結果が返ってきていたのにV7ではSQL『SQL0302』の数値が無効ですエラーで結果がまったく返ってきません。どちらのOSの場合もSTRSQLで同じSQLを実行すると『SQL0302』のエラーが出るのでコンパイル時のオプションか何かで回避できるのではないかと思うのですが現在のところソースを直すしか解決方法が見つかりません。何か解決方法をご存知なら教えていただけるようよろしくお願いします。
CRTSQLxxx の重大度レベルを変更してコンパイルすれば警告エラー等を無視してオブジェクトを作成することができますが SQL0302 の重大度レベルは 30 なので恐らくこの方法でも実行時のエラーを回避することはできないと思います。また*PRV コンパイルでは V5R3M0 まで戻してコンパイルすることもできませんのでソースを修正されるのがいいかと思います。元々 OS V5R3M0 はかなり癖のあるバージョンでバグが多かったOSレベルですので正しい動作にプログラムを書きなおすことをお勧めします。
ありがとうございました。現在、修正できるものはしている最中なのですが、エラーにはなってもPGMがエラーでこけるわけでなくログを見て初めて発覚するというものなので修正もれがあってもそのままになりそうだったのでなんとか回避できないかと思っていました。仕方ないのでチェックをがんばることにします