メニューボタン
サポートチーム便り2024.05.14

物理ファイルをスプレッドシートにする新たな方法

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 . 大熊猫橋

あわせて読みたい記事

PAGE TOP