2017-03-28 1 views
0

Je voudrais créer revue pour mon fichier physique en utilisant le programme java.AS/400 Journal créer jt400 (Java)

a) Comment obtenir le nom et la description du journal existant en transmettant le nom du schéma? Ex: La commande DSPFD FILE (SCHEMA_NAME/TABLE_NAME) s'exécute avec succès mais pas de sortie dans la console Java.

b) Comment on peut lire le nom réel de la table et l'affichage dans la console java.

Merci d'avance. La sortie DSPFD (* print) produit un rapport mais ne renvoie rien à l'appelant.

/** 
* 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); 
} 

Répondre

0

Vous pouvez utiliser l'API QDBRTVFD à la place pour renvoyer les valeurs à la méthode Java de l'appelant. Alternative est de créer un programme sur le backend IBM i (AS400) qui obtient les informations dont vous avez besoin et dispose d'une structure de paramètres simplifiée.

+0

Merci pour la réponse. pourriez-vous s'il vous plaît me partager l'exemple de code. –

1

La boîte à outils IBM pour Java a une classe pour récupérer ces informations. Here is the Javadocs. Vous allez devoir utiliser le nom IFS de l'objet en question qui ressemble à ce /QSYS.LIB/libraryname.LIB/filename.FILE

Si je voulais faire, je voudrais essayer quelque chose comme ceci:

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

Merci de votre réponse. Pourriez-vous s'il vous plaît partager un exemple de code. –

+0

Merci, des informations très utiles. Aussi s'il vous plaît laissez-moi savoir comment identifier le nom de fichier réel (10 caractères). Ex: T_EMP_INQUIRY_LIST ont plus de 10 caractères, comment obtenir le nom de fichier réel stocké dans AS400. –

+0

Vous pouvez utiliser SQL pour récupérer le nom de la table à partir du fichier de catalogue système 'QSYS2.SYSTABLES' le nom SQL est dans la colonne' TABLE_NAME' le nom de l'objet se trouve dans la colonne 'SYSTEM_TABLE_NAME'. – jmarkmurphy