Bonjour,
J'ai créé un programme CL AS400 qui fonctionne correctement.
J'ai aussi créé une classe Java afin d'appeler ce CL.
Le problème est pour lire les variables en sorties. J'obtiens une erreur à la ligne :
Voici le code de l'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.out.println(text.toObject(parameterList[0].getOutputData()));
Le programme CL (le début)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 AS400 as400 = new AS400(prop.getProperty("AS400_MACHINE")); System.out.println("Connexion a " + prop.getProperty("AS400_MACHINE") + " => OK"); ProgramCall program = new ProgramCall(as400); try { // Initialize the name of the program to run. String programName = "/QSYS.LIB/MABIB.LIB/MONPGM.PGM"; // Set up the 3 parameters. ProgramParameter[] parameterList = new ProgramParameter[4]; // First parameter is to input a name. AS400Text AS400_QuestionNumber = new AS400Text(36, as400); parameterList[0] = new ProgramParameter(AS400_QuestionNumber.toBytes(randomString(16))); AS400Text AS400_Inutile = new AS400Text(36, as400); parameterList[1] = new ProgramParameter(AS400_Inutile.toBytes("321654498797546786")); AS400Text AS400_NoTiers = new AS400Text(11, as400); parameterList[2] = new ProgramParameter(AS400_NoTiers.toBytes("10280599501")); AS400Text AS400_CodeRetour = new AS400Text(2, as400); parameterList[3] = new ProgramParameter(AS400_CodeRetour.toBytes("00")); //parameterList[4] = new ProgramParameter(AS400_CodeRetour.toBytes("")); // Set the program name and parameter list. program.setProgram(programName, parameterList); // Run the program. if (program.run() != true) { // Report failure. System.out.println("Program failed!"); // Show the messages. AS400Message[] messagelist = program.getMessageList(); for (int i = 0; i < messagelist.length; ++i) { // Show each message. System.out.println(messagelist[i]); } } // Else no error, get output data. else { AS400Text text = new AS400Text(32, as400); System.out.println(text.toObject(parameterList[0].getOutputData())); // System.out.println(text.toObject(parameterList[1].getOutputData())); // System.out.println(text.toObject(parameterList[2].getOutputData())); // System.out.println(text.toObject(parameterList[3].getOutputData())); } } catch (Exception e) { System.out.println("Program " + program.getProgram() + " issued an exception!"); e.printStackTrace(); Listener_Stop = true; }
L'erreur Java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 PGM PARM(&QSTNUM &FICNUM &NOTIER &CODRET) /*----------------------------------------------------------------*/ /*Génération du fichier XML de réponse */ /*----------------------------------------------------------------*/ DCL VAR(&QSTNUM) TYPE(*CHAR) LEN(36) DCL VAR(&FICNUM) TYPE(*CHAR) LEN(36) DCL VAR(&NOTIER) TYPE(*CHAR) LEN(11) DCL VAR(&CODRET) TYPE(*CHAR) LEN(02) DCL VAR(&NMFICENV) TYPE(*CHAR) LEN(61)
Et je ne trouve pas d'où cela vient...Program /QSYS.LIB/MABIB.LIB/MONPGM.PGM issued an exception!
java.lang.NullPointerException: serverValue
at java.lang.Throwable.<init>(Throwable.java:196)
at java.lang.Exception.<init>(Exception.java:41)
at java.lang.RuntimeException.<init>(RuntimeException.java:43)
at java.lang.NullPointerException.<init>(NullPointerException.java:46)
at com.ibm.as400.access.AS400Text.toObject(AS400Text.java:513)
at Listener.main(Listener.java:166)
Merci
Portekoi
Partager