|
|
| 97. RPG で EXCELの値を直接、読むには? |
|
かなり高度というかマニアックな項目であるが、果たして RPG によって
Excelのセル値を直接、 読むことはできるのであろうか?
できるとすればその具体的な方法とは?
答えは YES である。Out of Topics にも紹介したが Jakarta POI を利用すれば
IFS に 保管されているExcel の値を直接、読むことができる。
その方法をここで紹介しよう。
まず Jakarta POI を IFSに導入しておく。
POI 自体も Java であるから Java が導入 されている iSeries/i5 であれば
動作するはずである。
次にPOI のメソッドを使って Excelのセル値を標準出力するJava を開発する。
QSHELLコマンドによって、そのJavaを起動するが、起動の前後で標準出力を
作業ファイル などにリダイレクトするようにしておく。
OVRPRTF STDOUT で可能となる。
次にリダイレクトされた作業ファイルをRPG で読んで処理するといった具合である。
何だかわかったような簡単なようで狐につままれた気がするかも知れない。
実は POI の利用方法は難しくはない。 Webサイトを探して頂ければサンプルは
見つかるはずである。
(後日、完全なJavaソースを紹介することをお約束する。ここで紹介しないのは
Chicago Ver6.0 がまだリリースされていないからである。)
Excelを直接、処理したいと希望される開発者であれば
標準出力のリダイレクトくらいは ワケ無く解決されるものと思う。
しかし問題は Java の動作スピードである。
筆者が検証したところ確かに POI を利用して RPG で Excelブックのセル値を表示すること には見事に成功した。
次はその結果の画面である。
単なるサブ・ファイルの表示のように見えるだけであるが実はこのRPGは
IFS に保管されて いる Excel のセル値を表示しているのである。
検証には OS400 V5R1M0 Model 170 を使用したが
表示されるまでには数分を要した。
これでは製品としてリリースできないのである。
それなりの大きなCPW値を持つ iSeries/i5 では問題にはならないかも知れないが
製品としてリリースするには Java の最初の起動があまりにも遅すぎるのである。
起動してしまえば問題はないのであるが 最初のJava の起動が遅すぎる。
2005年11月末現在、弊社では Jakarta POI のオープンJavaソースを解析して
C/400 への 移植を試みている。
POI は約280本という莫大な Javaソースから成り立っているので
POI のすべてを移植する ことは不可能であるが、
成功すればこの機能は Chicago Ver6.0 PRO版に
搭載される 予定である。
あなたの会社の iSeries/i5 が十分な速度を持っているのであれば
Excelブックを POI を 使って直接、読むRPGを開発することができる。
そうでなければ Chicago Ver6.0 PRO版を利用することが手っ取り早い解決である。
|
|
|
|
|