IBM i 上でZIPファイルを生成できますか?
Question
IBM i (AS/400)の統合ファイルシステム(IFS)上に生成したCSVファイルを、ZIPファイルにしてメール送信したいと考えています。そのようなことは可能でしょうか。
なお、IBM i (AS/400)から外部へのメール送信自体は可能になっています。
Answer
IFS上に作成したファイルをZIPにする方法は2通りございます。
以下にそれぞれ説明いたします。
-
コマンド「CPYTOARCF」を使用する
コマンドを使用してZIPファイルを生成することが可能です。
参考:アーカイブ・ファイルへのコピー (CPYTOARCF)
https://www.ibm.com/docs/ja/i/7.4?topic=ssw_ibm_i_74/cl/cpytoarcf.html
※現時点での最新はV7.5ですが、最終更新: 2022-05-03となっており、日本語に翻訳されておりませんのでV7.4のリンクをご案内しております。コマンド例:
CPYTOARCF FROMFILE('/IFSFLR') TOARCF('/IFSZIP/TEST.ZIP') SUBTREE(*ALL)
※「SUBTREE(*ALL) 」は、圧縮元のディレクトリーにサブディレクトリーがある場合その中身も含むかどうかを指定します。上記では含む指定です。
圧縮元ディレクトリーあるいはファイルにワイルドカードの使用はできません。
なお、解凍する場合はコマンド「CPYFRMARCF」を使用します。
https://www.ibm.com/docs/ja/i/7.4?topic=ssw_ibm_i_74/cl/cpyfrmarcf.html -
シェルコマンド「jar」を使用する
オープンコマンドですが「jar」コマンドを使用することで圧縮することが可能です。
圧縮時に「META-INF」という構成ファイルが一緒に圧縮されますが、これは「jar」の仕様となります。
また、オープンコマンドですので、CCSID「5035」あるいは「1399」で実行する必要があります。
・Using the Jar Command to Unzip Files
https://www.ibm.com/support/pages/using-jar-command-unzip-files
※上記リンクではZIPファイルを解凍する方法になりますが、ZIPファイル作成も「jar」にて行うことができます。以下にコマンドサンプルをご案内します。
ZIPファイルに圧縮する方法
STRQSH CMD('jar -cvf /IFSZIP/ZIPTST.zip /IFSFLR/*')
ZIPファイルから解凍する方法
STRQSH CMD('jar -xvf /IFSZIP/ZIPTST.zip')
「jar」の場合、圧縮元ディレクトリーあるいはファイルにワイルドカードの指定が可能です。
それぞれのメリットやデメリット等あるかと思いますので、まずは検証していただき、お客様の用途に合ったものをご利用いただければと思います。
by . かんぴょう木綿さん