サポートチーム便り2019.11.28
不正データが入ったレコードを消したい
Question
弊社で使用しているファイルの一部のレコードに、何らかのタイミングで不正文字が入ってしまったようで、プログラムでエラーが発生してしまいました。
UPDDTAコマンドで削除できないか試したのですが、対象レコードを表示させることができません。
問題のレコードは削除しても問題ないレコードです。どうにか削除する方法はないでしょうか。
Answer
削除してもよいのであれば、一時的にDFUプログラムを作成することが一番簡単かもしれません。
UPDDTAですと、全フィールドが表示されてしまうため、不正文字が入っているとエラーになりますが、不正文字が入っていないフィールドのみを表示させるようなDFUプログラムを作成すれば、それを使用して該当レコードを削除することができます。
例えば以下のようなデータがあります。
品目番号「80202」の「品名-漢字」が空欄になっています。実はここには不正文字が入っており、画面表示が出来ません。
もちろん、UPDDTAで該当レコードを見ることもできません。
このフィールドを削除するために、一時的にDFUプログラムを作成します。
-
STRDFU を実行し、「2. DFU プログラムの作成」を選択する
- 「一般情報/非索引付きファイルの定義」、「監査制御の定義」は特に何も指定せず実行
- 「レコード様式の処理」は様式を指定し次へ。
- 「フィールドの選択および順序付け」の部分で、不正文字が入っていないフィールドを指定
- DFUプログラムを作成します。
作成したDFUを使用すれば、不正データの入ったデータを表示することが出来るため、そのまま削除することもできるようになります。
まずは、どうして不正データが入力されてしまったのかの原因を追うほうが先かと思いますが、もし何かしらで不正データが入り込み、レコードの削除をされたい場合は、お試しいただければと思います。
但し生データを直接操作することになりますので、レコードを削除される際には十分気を付けてください。
by かんぴょう木綿さん