com.ibm.as400.access
Class ServiceProgramCall

java.lang.Object
  |
  +--com.ibm.as400.access.ProgramCall
        |
        +--com.ibm.as400.access.ServiceProgramCall
All Implemented Interfaces:
java.io.Serializable

public class ServiceProgramCall
extends ProgramCall

The ServiceProgramCall class allows a user to call a service program, passing data via input parameters, then accessing data returned via output parameters. ProgramParameter objects are used to pass data between the Java program and the service program.

ServiceProgramCall subclasses ProgramCall. Much of the setup to call the service program is done via methods inherited from ProgramCall. For example setSystem() and getSystem() are methods inherited from ProgramCall.

Limitations of this class:

The name of the service program to call is the fully qualified name in the integrated file system. The extension is ".SRVPGM". For example, to call MySrvPgm in MyLib, the program name is /QSYS.LIB/MYLIB.LIB/MYSRVPGM.SRVPGM.

Service program entry point notes:

The following example calls procedure int_int in service program ENTRYPTS in library MYPGM. The procedure takes one input parameter, an integer, and returns an integer.

    // Create a single parameter parameter list.
    ProgramParameter[] parameterList = new ProgramParameter[1];

    // Create the input parameter.  We are sending the number 9 to the service program.
    AS400Bin4 bin4 = new AS400Bin4();
    byte[] parameter = bin4.toBytes(9);
    parameterList[0] = new ProgramParameter(parameter);

    // Construct the server object.  The service program is on this server.
    AS400 system = new AS400("mySystem");

    // Construct the ServiceProgramCall object.
    ServiceProgramCall sPGMCall = new ServiceProgramCall(system);

    // Set the fully qualified service program and the parameter list.
    sPGMCall.setProgram("/QSYS.LIB/MYPGM.LIB/ENTRYPTS.SRVPGM", parameterList);

    // Set the procedure to call in the service program.
    sPGMCall.setProcedureName("int_int");

    // Set the format of returned value.  The program we call returns an integer.
    sPGMCall.setReturnValueFormat(ServiceProgramCall.RETURN_INTEGER);

    // Call the service program.
    if (sPGMCall.run() != true)
    {
        // Get the error messages when the call fails.
        AS400Message[] messageList = sPGMCall.getMessageList();
        for (int i = 0; i < messageList.length; ++i)
        {
            System.out.println(messageList[i].getText());
        }
    }
    else
    {
        // Get the returned value when the call is successful.
        int i = bin4.toInt(sPGMCall.getReturnValue());
        System.out.println("Result is: " + i);
    }

See Also:
Serialized Form

Field Summary
static int NO_RETURN_VALUE
          Constant indicating the service program returns void.
static int RETURN_INTEGER
          Constant indicating the service program returns an integer.
 
Constructor Summary
ServiceProgramCall()
          Constructs a ServiceProgramCall object.
ServiceProgramCall(AS400 system)
          Constructs a ServiceProgramCall object.
ServiceProgramCall(AS400 system, java.lang.String serviceProgram, ProgramParameter[] parameterList)
          Constructs a ServiceProgramCall object.
ServiceProgramCall(AS400 system, java.lang.String serviceProgram, java.lang.String procedureName, int returnValueFormat, ProgramParameter[] parameterList)
          Constructs a ServiceProgramCall object.
ServiceProgramCall(AS400 system, java.lang.String serviceProgram, java.lang.String procedureName, ProgramParameter[] parameterList)
          Constructs a ServiceProgramCall object.
 
Method Summary
 int getErrno()
          Returns the error number (errno).
 int getIntegerReturnValue()
          Returns the return data when the service program returns an integer.
 java.lang.String getProcedureName()
          Returns the service program procedure to be called.
 byte[] getReturnValue()
          Returns the data returned from the service program.
 int getReturnValueFormat()
          Returns the format of the returned data.
 boolean run()
          Calls the service program.
 boolean run(AS400 system, java.lang.String serviceProgram, java.lang.String procedureName, int returnValueFormat, ProgramParameter[] parameterList)
          Calls the service program.
 boolean run(java.lang.String serviceProgram, ProgramParameter[] parameterList)
          Calls the service program.
 void setProcedureName(java.lang.String procedureName)
          Sets the service program procedure to call.
 void setProcedureName(java.lang.String procedureName, int procedureNameCCSID)
          Sets the service program procedure to call.
 void setProgram(java.lang.String serviceProgram)
          Sets the path name of the service program.
 void setReturnValueFormat(int returnValueFormat)
          Sets the format of the returned data.
 
Methods inherited from class com.ibm.as400.access.ProgramCall
addActionCompletedListener, addParameter, addPropertyChangeListener, addVetoableChangeListener, getJob, getMessageList, getParameterList, getProgram, getServerJob, getSystem, getSystemThread, isStayOnThread, isThreadSafe, removeActionCompletedListener, removePropertyChangeListener, removeVetoableChangeListener, setParameterList, setProgram, setSystem, setThreadSafe, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NO_RETURN_VALUE

public static final int NO_RETURN_VALUE
Constant indicating the service program returns void.

RETURN_INTEGER

public static final int RETURN_INTEGER
Constant indicating the service program returns an integer.
Constructor Detail

ServiceProgramCall

public ServiceProgramCall()
Constructs a ServiceProgramCall object. A default ServiceProgramCall object is created. The system, program name, procedure name and parameters, must be set before calling the program.

ServiceProgramCall

public ServiceProgramCall(AS400 system)
Constructs a ServiceProgramCall object. A ServiceProgramCall object representing the program on system is created. The program name, procedure name and parameters, must be set before calling the program.
Parameters:
system - The server that contains the program.

ServiceProgramCall

public ServiceProgramCall(AS400 system,
                          java.lang.String serviceProgram,
                          ProgramParameter[] parameterList)
Constructs a ServiceProgramCall object. A ServiceProgramCall object representing the program on system with name serviceProgram and parameters parameterList created. The service program's procedure name must be set before calling the program.
Parameters:
system - The server which contains the program.
serviceProgram - The service program name as a fully qualified name in the integrated file system.
parameterList - A list of up to 7 parameters with which to call the program.

ServiceProgramCall

public ServiceProgramCall(AS400 system,
                          java.lang.String serviceProgram,
                          java.lang.String procedureName,
                          ProgramParameter[] parameterList)
Constructs a ServiceProgramCall object. A ServiceProgramCall object representing the program on system with name serviceProgram, procedure name procedureName, and parameters parameterList, is created.
Parameters:
system - The server which contains the program.
serviceProgram - The program name as a fully qualified name in the integrated file system.
procedureName - The procedure in the service program to call.
parameterList - A list of up to 7 parameters with which to call the program.

ServiceProgramCall

public ServiceProgramCall(AS400 system,
                          java.lang.String serviceProgram,
                          java.lang.String procedureName,
                          int returnValueFormat,
                          ProgramParameter[] parameterList)
Constructs a ServiceProgramCall object. A ServiceProgramCall object representing the program on system with name serviceProgram, procedure name procedureName, parameters parameterList, and returning a value as specified in returnValueFormat, is created.
Parameters:
system - The server which contains the program.
serviceProgram - The program name as a fully qualified name in the integrated file system.
procedureName - The procedure in the service program to call.
returnValueFormat - The format of the returned data. The value must be one of the following:
  • NO_RETURN_VALUE The procedure does not return a value.
  • RETURN_INTEGER The procedure returns an integer.
parameterList - A list of up to 7 parameters with which to call the program.
Method Detail

getErrno

public int getErrno()
Returns the error number (errno). If the service program returns an integer and an errno, use this method to retrieve the errno. Zero is returned if the service program returns an integer but no errno.

The errno is valid only when the return code is non-zero. Service programs are not required to reset the errno each time the API is called, so the errno may not be reset from a previous call. Suppose, for example, calling an entry point the first time fails so the return code and errno are both non-zero. If the next call works, the return code will be zero but the errno may have the non-zero value from the previous call of the entry point. Checking only the errno would indicate the second call failed when it actually worked. Call this method only when a call to getIntegerReturnValue returns a non-zero value.

Returns:
The return data.

getIntegerReturnValue

public int getIntegerReturnValue()
Returns the return data when the service program returns an integer.
Returns:
The return data.

getProcedureName

public java.lang.String getProcedureName()
Returns the service program procedure to be called. If the name has not been set, an empty string ("") is returned.
Returns:
The service program procedure to be called.

getReturnValue

public byte[] getReturnValue()
Returns the data returned from the service program. The data is returned as a byte array. If no data is returned or if the service program has not yet been called, null is returned.
Returns:
The data as a byte array.

getReturnValueFormat

public int getReturnValueFormat()
Returns the format of the returned data.
Returns:
The format of the returned data.

run

public boolean run()
            throws AS400SecurityException,
                   ErrorCompletingRequestException,
                   java.io.IOException,
                   java.lang.InterruptedException,
                   ObjectDoesNotExistException
Calls the service program.
Overrides:
run in class ProgramCall
Returns:
true if the call is successful; false otherwise.
Throws:
AS400SecurityException - If a security or authority error occurs.
ErrorCompletingRequestException - If an error occurs before the request is completed.
java.io.IOException - If an error occurs while communicating with the server.
java.lang.InterruptedException - If this thread is interrupted.
ObjectDoesNotExistException - If the server object does not exist.

run

public boolean run(java.lang.String serviceProgram,
                   ProgramParameter[] parameterList)
            throws AS400SecurityException,
                   ErrorCompletingRequestException,
                   java.io.IOException,
                   java.lang.InterruptedException,
                   ObjectDoesNotExistException,
                   java.beans.PropertyVetoException
Calls the service program. Calls the specified service program with the specified parameters. The server and service program procedure name must be set before calling this method.
Overrides:
run in class ProgramCall
Parameters:
serviceProgram - The program name as a fully qualified name in the integrated file system.
parameterList - A list of up to 7 parameters with which to call the program.
Returns:
true if the call is successful, false otherwise.
Throws:
AS400SecurityException - If a security or authority error occurs.
ErrorCompletingRequestException - If an error occurs before the request is completed.
java.io.IOException - If an error occurs while communicating with the server.
java.lang.InterruptedException - If this thread is interrupted.
ObjectDoesNotExistException - If the server object does not exist.
java.beans.PropertyVetoException - If a change for a property is vetoed.

run

public boolean run(AS400 system,
                   java.lang.String serviceProgram,
                   java.lang.String procedureName,
                   int returnValueFormat,
                   ProgramParameter[] parameterList)
            throws AS400SecurityException,
                   ErrorCompletingRequestException,
                   java.io.IOException,
                   java.lang.InterruptedException,
                   ObjectDoesNotExistException,
                   java.beans.PropertyVetoException
Calls the service program.
Parameters:
system - The server which contains the program.
serviceProgram - The program name as a fully qualified name in the integrated file system.
procedureName - The procedure in the service program to call.
returnValueFormat - The format of the returned data. The value must be one of the following:
  • NO_RETURN_VALUE The procedure does not return a value.
  • RETURN_INTEGER The procedure returns an integer.
parameterList - A list of up to 7 parameters with which to call the program.
Throws:
AS400SecurityException - If a security or authority error occurs.
ErrorCompletingRequestException - If an error occurs before the request is completed.
java.io.IOException - If an error occurs while communicating with the server.
java.lang.InterruptedException - If this thread is interrupted.
ObjectDoesNotExistException - If the server object does not exist.
java.beans.PropertyVetoException - If a change for a property is vetoed.

setProcedureName

public void setProcedureName(java.lang.String procedureName)
                      throws java.beans.PropertyVetoException
Sets the service program procedure to call.
Parameters:
procedureName - The procedure in the service program to call.
Throws:
java.beans.PropertyVetoException - If a change for the value of procedureName is vetoed.

setProcedureName

public void setProcedureName(java.lang.String procedureName,
                             int procedureNameCCSID)
                      throws java.beans.PropertyVetoException
Sets the service program procedure to call.
Parameters:
procedureName - The procedure in the service program to call.
procedureNameCCSID - The CCSID to use when converting the procedure name from a Java String to EBCDIC.
Throws:
java.beans.PropertyVetoException - If a change for the value of procedureName is vetoed.

setProgram

public void setProgram(java.lang.String serviceProgram)
                throws java.beans.PropertyVetoException
Sets the path name of the service program.
Overrides:
setProgram in class ProgramCall
Parameters:
serviceProgram - The fully qualified integrated file system path name to the service program. The library and service program name must each be 10 characters or less.
Throws:
java.beans.PropertyVetoException - If the change is vetoed.

setReturnValueFormat

public void setReturnValueFormat(int returnValueFormat)
                          throws java.beans.PropertyVetoException
Sets the format of the returned data.
Parameters:
returnValueFormat - The format of the returned data. The value must be one of the following:
  • NO_RETURN_VALUE The procedure does not return a value.
  • RETURN_INTEGER The procedure returns an integer.
Throws:
java.beans.PropertyVetoException - If a change for the value of returnValueFormat is vetoed.