漢字専用フィールド(J) でシフト文字が脱落していたり、漢字専用であるのに半角文字が
入っていたりすると、SQL での FETCH (行の取り出し)はエラーになってしまう。
WHENVER SQLERROR CONTINUE
や
WHENEVER SQLWARNING CONTINUE
を事前に挿入しても、そのエラーのあった
フィールド以降のフィールドまでもが取得されなくなってしまう。
ところが QUERY/400や対話式のSQLでは、このような場合でもエラーで停止することなく、
エラーの漢字フィールドも表示されている。
仮に漢字専用フィールド(J) が KJNAME
であったとして
SELECT KJNAME FROM MYLIB/MYFILE
で漢字フィールドの不正エラーが発生するものとする。
これを
SELECT KJNAME || '' FROM MYLIB/MYFILE
として NULL フィールドを結合して 別のフィールドとして再定義 してしまえば
漢字専用フィールドではなくなるのでSQLはエラーは返さない。
( KJNAME || ''
は 可変長文字ストリングの属性 となる。)
しかも正しい属性のフィールドの場合も結果は同じである。
わかってしまえば簡単な解決であるが、最初は解決に悩んでしまうかも知れない。
この方法は弊社で発見したもので Chicago Ver 5.0 にも使用されている。