ushidayの日記

主に「IBMi」のメモに・・・

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/400Javaが使える環境だから、当たり前に呟く事が出来ました。
groovyでもやってみました。こちらはgroovyスクリプトを「QP2SHELL」で呼び出してやってみたのですが、SBCSは問題ないけど、DBCSで文字化けを起こして駄目でした。「QP2SHELL」の引数が、DBCSには対応してないのかもしれません。