ビジネス課題への解決策(アイディア)と、新たな発想(+α)が見つかるIT情報メディア

Menu
  1. TOP
  2. データ活用
  3. JavaからAS/400のコマンドを発行するには

JavaからAS/400のコマンドを発行するには

  • LINEで送る
  • このエントリーをはてなブックマークに追加
今回はIBM iとJavaについてお話しようと思います。IBM iよりAS/400と言ったほうが馴染み深いと思うので、このブログではAS/400で通します。

 

JavaのアプリケーションからAS/400にアクセスするには、IBM Toolbox for Javaに含まれているJDBCドライバー(JT400)を使用するのが一般的です。IBM Toolbox for JavaはAS/400に付いてきますし、JTOpenというオープンソース・バージョンもあるので、誰でも使用することができます。

 

AS/400ユーザーであればご存知だと思いますが、AS/400の物理ファイルとは、その実体はDB2のテーブルです。なので、JDBCドライバーで物理ファイルにアクセスすることができ、SQLでデータの参照・更新が可能です。

 

「AS/400のことは知らない」っていうJavaプログラマでも、データベースだと思ってJDBCで組めば、AS/400連携が実現できるわけです。

 

で、このJT400(JTOpen)ですが、JDBCの実装だけではなく、JavaからAS/400のさまざまなリソースにアクセスするためのクラスが含まれています。AS/400のシステム情報の取得やコマンドの発行、プログラムの実行ができたりします。また、物理ファイルやメンバーを直接コントロールすることができるので、JDBCでは実現できないこともできるようになります。

 

そこでまずは、JavaからAS/400のOS上のコマンドを発行する方法を紹介したいと思います。

 

例えば、ファイルコピーのコマンド「CPYF」で物理ファイルをコピーする場合、以下のようになります。

 

// AS/400に接続・サインオン
AS400 as400 = new AS400("SystemA", "USER01", "PASS01");

// CPYFコマンドの発行
CommandCall cmd = new CommandCall(as400);
cmd.run("CPYF FROMFILE(MYLIB/MYFILE) TOFILE(MYLIB/MYFILEBK) CRTFILE(*YES)");

// コマンド実行結果の出力
AS400Message[] msglist = cmd.getMessageList();
for (int i = 0; i < msglist.length; i++) {
    System.out.println(msglist[i].getID() + ": " + msglist[i].getText());
}

 

AS/400への接続・サインオンにはクラス「com.ibm.as400.access.AS400」を、コマンド発行にはクラス「com.ibm.as400.access.CommandCall」を使用します。簡単ですね。

 

コマンドが正常に実行されると、以下のような結果が返されます。

 

CPF2880: Physical file MYFILEBK created in library MYLIB.
CPF2889: Member MYFILE added to file MYFILEBK in MYLIB.
CPC2955: 10 records copied from member MYFILE.

 

物理ファイルのコピーは、テーブルをコピーしたのと同じことです。
JavaからAS/400のコマンドが発行できるとなると、できることがグッと広がりそうですね。

 

次回もJT400を使ったお話をしようと思います。

メールマガジンの登録はこちらから
メルマガ登録 お問い合わせ