読者です 読者をやめる 読者になる 読者になる

タイガー!タイガー!じれったいぞー!(SE編)

AS400,WAS,GlassFish,Java,JavaEE,JSF等の開発における日々の気づきをまとめたブログ(備忘録)。

【AS400】CPYFRMIMPF(PC上のCSVファイルを物理ファイルへ格納する方法)

概要

  • PCデータを物理ファイルへセットする方法は、Client Accessのデータ転送(アップロード)機能を利用するという手もありますが、AS400にはIFS(統合ファイルシステム)なるファイル共有があります。そこへPC上のCSVファイルを格納して、事前準備した物理ファイルへ複写する方法を紹介します。

作業手順

(1) 取込用物理ファイルを作成

  • TIGER/DDSSRC TESTPF01 (TIGERDB/TESTPF01へ作成)
A          R RECW@00                   TEXT(' CSV 格納用 ワークファイル ')
A*                                                                   
A            W@0001         4A         COLHDG('CODE')  
A                                      ALWNULL  
A            W@0002        20O         COLHDG('NAME') 
A                                      ALWNULL  
A            W@0003        20A         COLHDG('YOMI')  
A                                      ALWNULL  
A            W@0004        20O         COLHDG('ADDRESS')
A                                      ALWNULL 
A** キー 情報 --------------------------- **
A          K W@0001  

※項目キーワードへ、ALWNULLを追記することで、NULLデータの格納が許されるようになります。

(2) CSVデータをIFS上へアップ

※ 私は「/TEMP/TESTPF01.csv」 へ作成しました。テキストの中身は、こんな感じ。

0001,佐藤さん,サトウサン,福島県
0002,鈴木㈱,スズキカブシキガイシャ,新潟県
0003,田中君,タナカクン,石川県
0004,JONNY,,

(3) CPYFRMIMPFコマンドにて、CSVデータをPFへ格納

CPYFRMIMPF FROMSTMF('/TEMP/TESTPF01.CSV') TOFILE(TIGERDB/TESTPF01)
           MBROPT(*REPLACE) FROMCCSID(942)
           RCDDLM(*CRLF) ERRRCDOPT(*REPLACE)
  • RUNQRY QRYFILE(TIGERDB/TESTPF01)

f:id:no14141:20131002125114j:plain

※㈱は、正常に変換されず。
※NULLのフィールドは、RUNQRYでは、「-」と表記されています。

RPGLEによる NULLありレコードの操作

・RPGLEで、NULLが格納されているテーブルを読む場合、H仕様書に下記の内容を記入しておけばOKです。 この記述がないと、NULLを含むレコードを読んだ際に、「マッピングエラー」となってしまいます。

HALWNULL(*USRCTL)

IFS上のファイルを削除する命令

RMVLNK OBJLNK('/TEMP/TESTPF01.CSV')