IFS

39. CPYTOIMPF でデータが欠落する原因とは

CPYTOIMPF でデータ・ベースのデータをIFSにコピーしたはずなのに
あるデータだけが欠落する不明な障害に会ったことはないだろうか?
例えば

0334.00  CPYIMPF:    CPYTOIMPF  FROMFILE(QTEMP/SRC80 &PTN10) +                  
0335.00                           TOSTMF(&PTNPATH) MBROPT(*REPLACE) +           
0336.00                           FROMCCSID(&CCSID) STMFCCSID(1208) +           
0337.00                           RCDDLM(*CRLF) DTAFMT(*FIXED) +                
0338.00                           RMVBLANK(*TRAILING) DATFMT(*JIS) TIMFMT(*JIS) 

のような CPYTOIMPF コマンドの利用である。
CPYTOIMPF でデータが欠落する原因の多くはデータの不正、
日本語環境の場合はシフト文字の欠落である。
_

0x0E があって対応する 0x0F が欠落しているようなレコードがあると
その部分だけがコピーできないのではなくレコード全体がブランクとして
コピーされてしまう。
意識していないとなかなか原因を発見できない場合があるので
注意が必要である。

[参考]

CPYIOIMPF で障害が発生したときはIFSにゴミのようなログが出力されてしまう。
逆に言えばIFSにログが出力されているのはCPYTOIMPFが完全には成功していないことを
意味するので調査が必要である。