|
Hi All,
Still another JTOpen error. When I run PgmCall, I get an
java.lang.ArrayIndexOutOfBoundsException error. I narrowed it down to these
lines:
// Set up the 2 parameters.
ProgramParameter[] parameterList = new
ProgramParameter[2];
// First parameter is to input a number.
AS400Text nameText = new AS400Text(5);
parameterList[0] = new
ProgramParameter(nameText.toBytes("00001"));
When I try to get the length of parameterList(0), it comes out as 0. I checked
the ProgramCall documentation (API) and the lines above are pretty much the
same as the example in the doc. What am I missing?
I've got another question about ProgramParameter. If the RPG program I'm
calling accepts two input parameters and returns a string which actually is the
second input parameter (according to the programmer), should I have two or
three parameters in the parameter list?
Following is the copy of PgmCall.java:
-----------------------
import com.ibm.as400.access.*;
public class PgmCall {
public static void main(String[] args) {
AS400 system = new AS400("smarta02", "devusr54", "redge02");
ProgramCall program = new ProgramCall(system);
try
{
// Initialize the name of the program to run.
String programName = "/QSYS.LIB/DEVUSR52.LIB/JCALL.PGM";
// Set up the 2 parameters.
ProgramParameter[] parameterList = new
ProgramParameter[2];
// First parameter is to input a number.
AS400Text nameText = new AS400Text(5);
parameterList[0] = new
ProgramParameter(nameText.toBytes("00001"));
// Second parameter is to input spaces.
AS400Text textText = new AS400Text(10);
String inoutText = " ";
parameterList[1] = new
ProgramParameter(textText.toBytes(inoutText),10);
// 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(50);
System.out.println(parameterList[0].getOutputDataLength());
System.out.println(text.toObject(parameterList[0].getOutputData()));
System.out.println(text.toObject(parameterList[1].getOutputData()));
}
}
catch (Exception e)
{
System.out.println("Program " + program.getProgram() +
" issued an exception!");
e.printStackTrace();
}
// Done with the server.
system.disconnectAllServices();
}
}
-------------------
________________________
Redge C. Rafols
Smart Communications, Inc.
IT - Customer Care Systems
Office Tel. No. 511-6252
~+~+~+~+~+~+~+~+~+~+~
If you give someone a program,
you will frustrate them for a day;
if you teach them how to program,
you will frustrate them for a lifetime.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.