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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
System.out.println(text.toObject(parameterList[0].getOutputData()));
Voici le code de l'appel :

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;	
	    }
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
 
            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)
L'erreur Java :

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)
Et je ne trouve pas d'où cela vient...

Merci


Portekoi