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を使ったお話をしようと思います。
Rankingランキング
New arrival新着
Keywordキーワード