XML が普及しつつある今日でも CSV は、多くのWindowsアプリケーションに共通して使える
ので、BtoB の配布データとして根強いものがある。
ここでは データ・ベースの CSV 変換の手法について解説する。DB2/400 から IFS への
コピーには CPYTOIMPF コマンドを使うことが良く知られているが正しく動作しないと悩んで
いる人も少なくないのではないだろうか ?
正しく動作する CPYTOIMPF の使用方法も含めて紹介しよう。
1. ユーザーをシステム配布ディレクトリーに登録
現在、サイン・オンしているユーザー・プロフィールは、実行前に
システム配布ディレクトリーに登録されているかをWRKDIRE
コマンドによって確認しておく必要がある。
もし、登録が無ければ「1=追加」によってディレクトリーに追加しておくこと。
2. QDLS 配下に独自の配布用のディレクトリーを作成する
CRTDIR
コマンドによって下記のように配布用のディレクトリーを作成する。
3. CPYTOIMPF コマンドを使って配布用ディレクトリーへコピーする
CPYTOIMPF FROMFILE(ライブラリー/ファイル) TOSTMF(ストリーム・ファイル) RCDDLM(*CRLF) STRDLM(*NONE) DTAFMT(*DLM) FLDDLM(',')
の形式によって ストリーム・ファイル : QDLS/フォルダー/ファイル.txt 形式への
ファイルへコピーする。
CPYTOIMPF FROMFILE(QTRFIL/SHOHIN) TOSTMF('/QDLS/QTR/SHOHIN.TXT') MBROPT(*REPLACE) RCDDLM(*CRLF) DTAFMT(*DLM) STRDLM(*NONE) FLDDLM(',')
4. COPY コマンドを使って EBCDIC から ASCII へ変換する
掲示板等で CPYTOIMPF がうまく動作しないとの質問が、時々あるがCPYTOIMPF
で
ASCII 変換の指定パラメータが用意されているか、実はこれが正しく動作していない。
( 累積PTF で解決との情報もあるが OS400 V5R4M0 でも動作しない場合がある。)
そこで日本語環境で正しく CSV を生成するために、さらにこの段階でCOPY
コマンドを
使って ASCII に変換するのである。
COPY OBJ('/QDLS/QTR/SHOHIN.TXT') TOOBJ('/QDLS/QTR/SHOHIN.CSV') TOCCSID(*PCASCII) DTAFMT(*TEXT)
5. 生成された CSV
生成されたCSV は下記のように見事に綺麗な CSV に変換されている。
半角カナも正しく変換されていることに注目して欲しい。
NV-BS30S ,目次ビデオTEST ,165000 ,0002 NV-BS50S ,ビデオ画王 ,99999 ,0002 NV-CF1 ,Cカセット編集ビデオ ,85000 ,0002 NV-CF2 ,商品ドライバー ,168000 ,0003 NV-CF81 ,更新テスト ,48000 ,0001 NV-CF9 ,漢字テスト ,19000 ,0002 NV-F850 ,音声録画ビデオ ,140000 ,0002 NV-HK1 ,歌えるビデオ ,90000 ,0002 NV-H1T-S ,みんなのビデオ ,69800 ,0002 NV-SX10 ,ビデオ画王 ,115000 ,0002 NV-W1 ,世界放送方式ビデオ ,350000 ,0002 RX-DT75 ,CDラジオカセット ,53800 ,0003 SC-CH150 ,超ミニ・コンポ ,70000 ,0003 SC-CH505 ,パーソナル・ミニコンポ,100000 ,0003 SC-CH655 ,ロングプレイ・コンポ ,129000 ,0003 SC-CH950 ,ドルビー・ミニコンポ ,162000 ,0003 SF-SDCD ,全角漢字 ,19000 ,0009 TH-19VS30 ,コンパクトTVBS19,120000 ,0001 TH-21VS30 ,コンパクトTVBS21,128000 ,0001 TH-25GF10 ,衛星放送内蔵TV25 ,168000 ,0001 TH-25GV10 ,ビデオ内蔵型TV25 ,255000 ,0001 TH-25VS30 ,コンパクトTVBS25,11300 ,0001 TH-29GF10 ,カラーTV画王BS29,220000 ,0001 TH-29GV10 ,ビデオ内蔵型TV29 ,280000 ,0001 TH-33VS35 ,カラーTV画王BS33,350000 ,0001