Java et Programme CL AS400
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:
System.out.println(text.toObject(parameterList[0].getOutputData()));
Voici le code de l'appel :
Code:
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:
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 :
Citation:
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