CallServiceProgramProcedure() method
Description
The CallServiceProgramProcedure method is used to call an existing procedure in a service program using the QZRUCLSP API. It returns an object of type NTiProgramParameter containing the result of the call.
Syntax
NTiProgramParameter CallServiceProgramProcedure(
string library,
string program,
string procedure,
List parms,
List parmsType,
ServiceProgramReturnType returnFormat
) Parameters
| Name | Type | Description |
|---|---|---|
library |
string |
Library containing the service program. |
program |
string |
Name of the service program. |
procedure |
string |
Name of the service program procedure. |
parms |
List<NTiProgramParameter> |
Parameters to be transferred to the service program procedure. |
parmsType |
List<ServiceProgramParameterType> |
Types of each parameter, in the same order as parms:- Integer : The parameter is a 32-bit integer BINARY(4) passed by value- Pointer :The parameter value is passed by reference (pointer) |
returnFormat |
ServiceProgramReturnType |
Format of the expected return value: - NoReturn :No value is returned (the "Return Value" parameter is ignored). - Integer : Returns a BINARY(4) integer. - Pointer :Returns a 16-byte pointer. - IntegerErrno : Returns a BINARY(4) integer and the errno code. |
Return
Returns an object of type NTiProgramParameter which contains the return value of the procedure. The value can be accessed via the OutputData property or the Get...() methods of NTiProgramParameter. Procedure parameters passed to parms are also modified and their values can be accessed after the call.
Exceptions
ArgumentException : Thrown if the parms and parmsType lists do not have the same length.
Examples of use
Call the dlpar_get_info() procedure from QSYS/QPMLPMGT.
var conn = new NTiConnection("server=serverName;user=userName;password=password");
conn.Open();
// Procedure parameters
var parms = new List() {
new NTiProgramParameter("", 368), //Receiver variable
new NTiProgramParameter(1), //Format
new NTiProgramParameter(368) //Receiver length
};
// Type of parameter value
var parmsType = new List() {
ServiceProgramParameterType.Pointer,
ServiceProgramParameterType.Integer,
ServiceProgramParameterType.Integer
};
// Call procedure
var result = conn.CallServiceProgramProcedure("QSYS", "QPMLPMGT", "dlpar_get_info", parms, parmsType, ServiceProgramReturnType.Integer);
// Retrieving the results
var lparNumber = parms[2].GetInt(40);
var lparName = Encoding.UTF8.GetString(parms[2].GetBytes(88, 8)); References
For more information on the QZRUCLSP API, see the official IBM documentation.