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

IBM i 上でZIPファイルを生成できますか?

Question

IBM i (AS/400)の統合ファイルシステム(IFS)上に生成したCSVファイルを、ZIPファイルにしてメール送信したいと考えています。そのようなことは可能でしょうか。

なお、IBM i (AS/400)から外部へのメール送信自体は可能になっています。

Answer

IFS上に作成したファイルをZIPにする方法は2通りございます。

  1. コマンド「CPYTOARCF」を使用する
  2. シェルコマンド「jar」を使用する

以下にそれぞれ説明いたします。


  1. コマンド「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


  2. シェルコマンド「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 . かんぴょう木綿さん

あわせて読みたい記事

PAGE TOP