2017-03-28 10 views
0

Javaプログラムを使用して物理ファイルのジャーナルを作成したいと考えています。AS/400 create Journal JT400(Java)

a)スキーマ名を渡して既存のジャーナル名と説明を取得する方法。 例:DSPFD FILE(SCHEMA_NAME/TABLE_NAME)コマンドは正常に実行されていますが、Javaコンソールでは出力されません。

b)Javaコンソールで表と表示の実際の名前を読み取る方法。

ありがとうございます。

/** 
* Test program to test the AS/400 Command from Java. 
*/ 

public static void main(String[] args) { 

    String server = "SERVER1"; 
    String user = "USER_ID"; 
    String pass = "PWD_ABC"; 

    String getjournalcmd = "DSPFD FILE(SCHEMA_NAME/TABLE_NAME) OUTPUT(*PRINT)"; 
    String createjournalcmd = "STRJRNPF FILE(SCHEMA_NAME/TABLE_NAME) JRN(SCH_JRN_LIB_NAME/JRN_NAME)"; 

    AS400 as400 = null; 
    try { 
     // Create an AS400 object 
     as400 = new AS400(server, user, pass); 

     // Create a Command object 
     CommandCall command = new CommandCall(as400); 

     // Run the command. 
     System.out.println("Executing: " + getjournalcmd); 
     boolean success = command.run(getjournalcmd); 

     if (success) { 
      System.out.println("Command Executed Successfully."); 
     } else { 
      System.out.println("Command Failed!"); 
     } 

     // Get the command results 
     AS400Message[] messageList1 = command.getMessageList(); 
     System.out.println(messageList1.length); 
     for (AS400Message message : messageList1) { 
      System.out.println(message.getText()); 
     } 

     // Create journal 
     System.out.println("Executing: " + createjournalcmd); 
     boolean success1 = command.run(createjournalcmd); 

     if (success1) { 
      System.out.println("Command Executed Successfully."); 
     } else { 
      System.out.println("Command Failed!"); 
     } 

     // Get the command results 
     AS400Message[] messageList = command.getMessageList(); 
     System.out.println(messageList.length); 
     for (AS400Message message : messageList) { 
      System.out.println(message.getText()); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      // Make sure to disconnect 
      as400.disconnectAllServices(); 
     } catch (Exception e) { 
     } 
    } 
    System.exit(0); 
} 

答えて

0

DSPFD出力(* print)はレポートを生成しますが、呼び出し側に何も返されません。代わりにQDBRTVFD APIを使用して、値を呼び出し元のJavaメソッドに戻すことができます。代わりに、IBM i(AS400)バックエンドに必要な情報を取得し、簡略化されたパラメーター構造を持つプログラムを作成することもできます。

+0

ありがとう:あなたは、私がこれをやってみたかった場合は、この/QSYS.LIB/libraryname.LIB/filename.FILE

のように見える問題のオブジェクトのIFS名を使用する必要があるとしている、私はこのような何かをしようとするだろう。サンプルコードを私に教えてください。 –

1

IBM Toolbox for Javaには、その情報を取得するためのクラスがあります。 Here is the Javadocs。返信用

String journal = ""; 
FileAttributes fa = new FileAttributes(myConnection, ifsPath); 
if (fa.isJournalingStatus()) { 
    journal = fa.getJournal(); 
} 
+0

お返事ありがとうございます。サンプルコードを共有してください。 –

+0

ありがとう、非常に有用な情報。また、実際のファイル名(10文字)を特定する方法も教えてください。例:T_EMP_INQUIRY_LISTには10文字以上の文字があり、AS400に格納されている実際のファイル名の取得方法。 –

+0

SQLを使用してシステムカタログファイル 'QSYS2.SYSTABLES'からテーブル名を取得することができます.SQL名は' TABLE_NAME'カラムにあり、オブジェクト名は 'SYSTEM_TABLE_NAME'カラムにあります。 – jmarkmurphy