2017-03-28 111 views
0

我想使用java程序爲我的物理文件創建日記。AS/400創建日誌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輸出(*打印)產生一個報告,但不返回任何東西返回給調用者。您可以使用QDBRTVFD API將值返回給調用方Java方法。另一種方法是在IBM i(AS400)後端創建一個程序,以獲取所需的信息並具有簡化的參數結構。

+0

謝謝回覆。能否請你與我分享示例代碼。 –

1

IBM Toolbox for Java有一個類來檢索這些信息。 Here is the Javadocs。你將不得不使用有問題的對象,看起來像這樣/QSYS.LIB/libraryname.LIB/filename.FILE

如果我想這樣做的IFS的名字,我會嘗試這樣的事:

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