IBM i (AS/400)がTwitterへ呟く
以前、g*wsでJavaやGroovyで使える、Twitterライブラリ”Twitter4j”のお話を聞いたので、”IBM i(※以下AS/400)”から、Twitterへ呟いてみました。(´-`).。oO(・・・・・・)
Twitter4jの使い方などは、他に詳しく説明されている方が、おられますので割愛します。
- Twitter4jを使ったJavaクラス”AS400TwitterJ”を以下の様に作成。
import twitter4j.Twitter; public class AS400TwitterJ{ public static void main(String[] args){ if(args.length != 3) { System.out.println("Usage [User] [Password] [Message]"); System.out.println(args.length); return ; } String user = args[0].trim(); String pass = args[1].trim(); String message = args[2].trim(); Twitter twitter = new Twitter(user,pass); try{ twitter.update(message); }catch(Exception e){ e.printStackTrace(); } } }
- Twitter4jをAS/400のIFSへ配置
- AS400TwitterjクラスをAS/400のIFSへ配置
- AS400Twitterjクラスを呼び出すCLを以下の様に作成
/*********************************************************************/ /* TWITTERJ : Twitter4j 実行 /usr/source/java */ /* 2009/07/31 WRITE BY ushiday */ /* */ /*********************************************************************/ /* 変数定義 */ /*********************************************************************/ PGM PARM(&USER &PASS &MSG) DCL VAR(&USER ) TYPE(*CHAR) LEN(20) /* ユーザー */ DCL VAR(&PASS ) TYPE(*CHAR) LEN(20) /* パスワード */ DCL VAR(&MSG ) TYPE(*CHAR) LEN(140) /* メッセージ */ DCL VAR(&NULL ) TYPE(*CHAR) LEN(1) /* NULL */ DCL VAR(&CCSID ) TYPE(*DEC) LEN(5 0) /* 元 CCSID */ DCL VAR(&CLASSPATH) TYPE(*CHAR) LEN(1024) /*JAVA CLASSPATH*/ RTVJOBA CCSID(&CCSID) CHGJOB CCSID(5035) /* クラスパスの設定 */ CHGVAR VAR(&CLASSPATH) + VALUE('.:/QIBM/UserData/Java400/lib/+ twitter4j-2.0.9.jar') /* カレントディレクトリの設定 */ CD DIR('/usr/source/java/AS400TwitterJ') /* JAVAコマンド実行 */ RUNJVA CLASS(AS400TwitterJ) PARM(&USER &PASS + &MSG) + CLASSPATH(&CLASSPATH) OUTPUT(*PRINT) CHGJOB CCSID(&CCSID) END: RETURN ENDPGM
このCLにAS/400のプログラムから、例えばRPGから3つの引数「ユーザー、パスワード、メッセージ」を渡せば、Twitterへ呟く事が出来ます。まぁ使う人はいないだろうけど5250の画面も作ってみました。
- 5250Twitter client
とりあえず、会社の夜間バッチが正常稼動しているか、無人でステータスでも呟いてみる事にしました。
AS/400もJavaが使える環境だから、当たり前に呟く事が出来ました。
groovyでもやってみました。こちらはgroovyスクリプトを「QP2SHELL」で呼び出してやってみたのですが、SBCSは問題ないけど、DBCSで文字化けを起こして駄目でした。「QP2SHELL」の引数が、DBCSには対応してないのかもしれません。