2012.09.19
 

CPYFRMIMPF、CPYTOIMPFで置換え文字となってしまう

現象

ASのV6.1で、CPYFRMIMPFを使用して、1フィールド1レコード゙のデータを、複数フィールドで1レコードとなるファイルにコピーしていますが、QUERYでデータを見ると置換え文字「+」となっており、変換できていません。 ASがV5.2の時は問題なくできていました。 必ずエラーになる訳ではありませんが、データに「崇」や「崎」のダブルバイト(漢字データ)が含まれている時に起こるようです。 対応方法はありますでしょうか。

解決方法

16進コードで確認すると「崇」は「4C7F」で「崎」は「457F」のになります。
「“」のダブルクオーテーションの16進コードは「7F」になります。
通常はDBCSをシフトイン(0E )シフトアウト(0F)で見分けます。
IGCDTA(*NO)で1フィールド1レコードのファイルが作成時に作成されていたためにDBCSデータとして認識できず、3~4桁目が「7F」をダブルクオーテーションとみなし、変換が出来なくエラーとなっていたようです。
※CRTPFのコマンドの省略値はIGCDTA(*NO)です。

1フィールド1レコードのファイルをIGCDTA(*YES)で再作成することで、問題を解消できます。

※V6.1では本来の動きIGCDTA(*NO)で変換できず、エラーになりますので、DBCSをデータとして含む場合は、正しい設定が必要です。

ページトップ

ボタン