物理ファイルをスプレッドシートにする新たな方法
Question
弊社ではCPYTOIMPFコマンドを用いて物理ファイルをIBM i (AS/400)内でIFS領域にスプレッドシート化する手法を取っていました。
この物理ファイルをスプレッドシート化する処理は、PC端末からODBCでSQLを発行してファイルを生成後に、IBM i (AS/400)の黒画面を開いてCPYTOIMPFを実行しているため、2度手間になっています。
2度手間をなくして1回の処理にできないかと模索していたところ、V7R5 OSではテクノロジーリフレッシュ(TR)PTFの3を適用することで、SQLでIBM i (AS/400)上の物理ファイルをスプレッドシート化出来るように見受けられました。
参考1:IBM adds new capabilities and enhancements with IBM i 7.5 Technology Refresh 3
https://www.ibm.com/docs/en/announcements/i-75-tr3
丁度弊社の環境もV7R5でTR3を適用されています。
ですが具体的な使い方が分かりません。どのようにして利用するのでしょうか。
Answer
ご提示いただいたドキュメントを拝見しました。
SYSTOOLS.GENERATE_SPREADSHEET をご利用されたいという事ですね。
参考2:GENERATE_SPREADSHEET scalar function
https://www.ibm.com/docs/en/i/7.5?topic=services-generate-spreadsheet-scalar-function
まず1点目、ご提示いただいたIBMドキュメントではTR3にてGENERATE_SPREADSHEET関数が用意されるとありましたが、検証環境にTR3を適用しましたが、スキーマの関数にはその存在を確認できませんでした。
お調べしましたところ、別のIBMドキュメントではSF99950(DB2 for IBM i ) Level 5 で提供される記述がありましたので、こちらのPTFを適用したところSYSTOOLSの関数を確認することができました。
参考3:IBM i Services(SQL)
https://www.ibm.com/support/pages/node/1119123
また、どうやらこのSYSTOOLSはIBMのサポートする機能ではないようです。
ご要望の操作が叶えられるか検証機にてテストしました。
まず、この関数に対し右クリックし、SQLの生成(Generate SQL)からQueryを実行します。
すると参考2の例で表示されたのと近しい内容が確認できました。
PATH_NAMEや、LIBLARY_NAME、FILE_NAME等を実環境に併せて変更します。
画面上部の実行(R)から、このSQLを実行すると、
PATH_NAME . SPREADSHEET_TYPEとしてファイルが生成されました。
さて、ではこの出力されたファイルを5=表示で確認してみましょう。
どうやら無事出力されたようですね。
今回用意したSQLを既存のSQLの最後に組み込んでみれば、物理ファイルの生成からCSVのIFS領域の生成まで一括で可能になります。
Webアプリケーション画面などでODBCからSQLを実行しているなら、CSV生成ボタンを作って、クリックしたら今回用意したSQLが実行されるようにしてみると、グラフィカルでユーザーライクな拡張になって面白いかもしれません。
by . 大熊猫橋