ライブラリー・システムのデータ・ベースを CSV
, XML
, Excel
等の他の形式の
データ・ベースに変換する手法をここで紹介します。
いずれの場合でも EnterpriseServer で提供されている CPYTOxxx
形式の
コマンドによって簡単に変換してIFS に保存することができます。
IFS にさえ保存することができれば、IFS のパス名をリダイレクトしてブラウザに
戻してやればブラウザで表示することができます。
またブラウザで表示するのであれば、一定時間の経過後には IFS のファイルを
自動的に消去することもできます。
CSV はカンマ区切りのデータ・ベース表記として最もポピュラーなデータ・ベースの表現のひとつです。
PGM /*---------------------------------------------------------*/ /* TESTCSV : CSV への変換サンプル */ /*---------------------------------------------------------*/ DCL VAR(&MSG) TYPE(*CHAR) LEN(132) DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVJOBA TYPE(&TYPE) /*( CPYTOCSV による CSV 変換 )*/ ASNET.COM/CPYTOCSV FROMFILE(QTRFIL/SHOHIN) + TOSTMF('/AS400-NET.USR/TEST/SHOHIN.TXT') + MBROPT(*REPLACE) ELEM(*COLHDG1) /*( 変換後の保管場所にリダイレクト )*/ ASNET.COM/SNDURL URL('/AS400-NET.USR/TEST/SHOHIN.TXT') + CONT_TYPE(CSV) RETURN ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) SNDMSG: IF COND(&TYPE *EQ '0') THEN(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP) ENDDO ELSE CMD(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) ENDDO ENDPGM
【例】ライブラリー QTRFIL
の商品マスターファイル SHOHIN
を CSV
として保存する。
CPYTOCSV FROMFILE(QTRFIL/SHOHIN) TOSTMF('/TEST/SHOHIN.CSV') MBROPT(*ADD) ELEN(*FLDNAM)
【解説】 CSV 見出し(ELEN
) キーワードでは次の指定を行うことができます。
*FLDNAM | フィールド名が CSV の見出し行に使用されます。 |
---|---|
*COLHDG1 | 欄見出し1 が CSV の見出し行に使用されます。 |
*COLHDG2 | 欄見出し2 が CSV の見出し行に使用されます。 |
*COLHDG3 | 欄見出し3 が CSV の見出し行に使用されます。 |
*ALLCOL | すべての欄見出し が CSV の見出し行に使用されます。 |
*TEXT | テキストが CSV の見出し行に使用されます。 |
今の時代にあっては XML によるデータ交換はますます普及に傾向にあります。
しかし XML への変換を自作しようとしても、XML にはいくつかの禁則文字と呼ばれるエンコードが必要な
文字 ( &, <, >, '
) があります。
CPYTOXML
コマンドは CPYTOCSV
のように データ・ベースを XML 化して IFS に保存すると同時に適切な
エンコードも行います。
PGM /*---------------------------------------------------------*/ /* TESTXML : XML への変換サンプル */ /*---------------------------------------------------------*/ DCL VAR(&MSG) TYPE(*CHAR) LEN(132) DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVJOBA TYPE(&TYPE) /*( CPYTOXML による XML 変換 )*/ ASNET.COM/CPYTOXML FROMFILE(QTRFIL/SHOHIN) + TOSTMF('/AS400-NET.USR/TEST/SHOHIN.XML') + MBROPT(*REPLACE) ELEM(*COLHDG1) /*( 変換後の保管場所にリダイレクト )*/ ASNET.COM/SNDURL URL('/AS400-NET.USR/TEST/SHOHIN.XML') + CONT_TYPE(CSV) RETURN ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) SNDMSG: IF COND(&TYPE *EQ '0') THEN(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP) ENDDO ELSE CMD(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) ENDDO ENDPGM
System i から XML をブラウザや別のサーバーに送信するには CPYTOXML
コマンドだけで十分ですが、
System i が XML を受け取って解析するのであれば「XMLパーサー」と呼ばれる XML の解析ツールが必要となります。
「XMLパーサー」も EnterpriseServer で提供されています。
CPYTOEXCL
を 使えばデータ・ベースを Excelブック として IFS に保存することができます。
データ・ベースを Excel に保存する、という他のソフトウェア製品の多くはデータ・ベースをSYLK
形式の
ファイルに置き換えて出力する、というものですがSYLK ファイルは Excel の前世代の
MULTPLAN
(マルチプラン) で使用されていた形式であり今では、Microsoft やIBM 5250エミュレータでも
廃止の方向にあります。
さらに SYLK
や BIFF
への出力であれば Excel にきめ細かなセットを行うことはできません。
Excel としてデータを公開するのであれば、注意を促したいセルの背景色を変更すれば良いでしょうが、
SYLK
や BIFF
ではこのような制御を行うことはできません。
PGM /*---------------------------------------------------------*/ /* TESTEXCL : EXCL への変換サンプル */ /*---------------------------------------------------------*/ DCL VAR(&MSG) TYPE(*CHAR) LEN(132) DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVJOBA TYPE(&TYPE) /*( CPYTOEXCL による XML 変換 )*/ ASNET.COM/CPYTOEXCL FROMFILE(QTRFIL/SHOHIN) + TOSTMF('/AS400-NET.USR/TEST/SHOHIN.XLS') + MBROPT(*REPLACE) ELEM(*COLHDG1) /*( 変換後の保管場所にリダイレクト )*/ ASNET.COM/SNDURL URL('/AS400-NET.USR/TEST/SHOHIN.XLS') + CONT_TYPE(CSV) RETURN ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) SNDMSG: IF COND(&TYPE *EQ '0') THEN(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP) ENDDO ELSE CMD(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) ENDDO ENDPGM
Apache Jakarka-Project の POI は Java によって書かれた Excel
, Word
等の MS製品のオブジェクトを直接、
扱うことができるオープン・ソースAPI です。しかし POI は Java
言語によって書かれているために実行速度は遅く
System i のプラットフォームでは実用的であるとは言えません。
そこで潟Iフィスクアトロでは POI の一部を C/400へ書き換えてサービス・プログラム POI を開発致しました。
( POI は弊社製品 Chicago に同梱され、そのため CPYTOEXCL
の実行には Chicago が必要となります。)
潟Iフィスクアトロが開発した POI を利用すると RPG
や COBOL
で Excel
のセル値の読み書きや文字や背景色の
セット等を柔軟に行うことができます。
ここでは POI の最も簡単な使用方法としての CPYTOEXCL
をサンプルとして示しています。