CPYTOIMPFを使用してPFのデータをIFSにコピーする時の不具合
Question
CPYTOIMPFを使用してPFのデータをIFSにコピーしたいのですが、エラーとなって実行できない場合があります。
便利なコマンドだと思いますが、使用する時の注意点など教えてください。
Answer
うまくいかないケースで良く話を聞くのは、フィールドタイプがAなのにDBCSが入ってしまっているケースです。本来はタイプがOでなければなりません。
このようなことになる原因としては、DB設計ミス或いはプログラマーとの連携ミスで発生してしまったのかも知れません。
しかし、古いOSではチェックが甘かったのか、本来エラーにすべきところがCPYTOIMPFが実行出来てしまう場合がありました。
使用者から見れば、「前の古いOSの時は出来ていたのに、何で?OSに不具合?」と感じるかもしれませんが、潜在的な不具合が修正され、正しく実行されるようになったことによるエラーですので、ここは諦めていただき、元データを確認していただく必要がございます。
この内容は過去に記事してありますので、別途ご参照ください。
CPYFRMIMPF、CPYTOIMPFで置換え文字となってしまう
また、同じようなケースで、タイプOのフィールドでDBCSが入っているデータに、シフトインシフトアウト(0E0F)が正しく入っていないケースです。
途中までCPYTOIMPFが実行されますが、実行中にSQL0191のエラーメッセージを出して終了してしまいます。
メッセージ ID . . . . : SQL0191
メッセージ . . : 混合データまたは UTF-8 データの形式が正しくありません。
そういった場合はデータを確認し、補正する必要があります。
また、シフトインシフトアウトが正しく入っていないと、CPYTOIMPFだけでなく、ODBCでデータ連携をする場合等も支障がでますので、データは正しくあるべきだと思います。
昨今、システム監査の兼ね合いから、データのダイレクトメンテナンスは行うことが難しくなってきていますので、そういったデータが発生しないように、プログラムにバグがあれば早めに修正をすることをお勧めします。
修正するデータや関連するプログラムが多いと憂鬱になりますが、頑張った後には・・・もうじき桜の季節。仲間たちと花見で酒を酌み交わし、日ごろの疲れを存分に発散するんだ! と思って励んでください。
私も遠くで宴会をしながら、陰ながら応援しています。
参考情報:
by けやきのじぃじ