pjs.callProc()
This method is used to call an ILE procedure using Profound.js fields as arguments.
Parameters
Argument / result definition - An object with the following properties:
srvpgm - A String containing the name of the service program to call. The service program name can be qualified with a library, otherwise the library list will be used to resolve the service program.
procedure - A String containing the name of the procedure to call. Keep in mind that ILE procedure names are case-sensitive. RPG procedure export names are typically in uppercase.
arguments (optional) - An array of argument definition objects with the following properties:
field - A string containing the Profound.js field name to pass
byRef - Set to Boolean true to pass the field by reference. Otherwise, the field will be passed by value.
Argument definitions for pointer type can have additional options:
string (Boolean) - set to true to truncate data sent to the backend at the position where a null byte is located in the buffer. If no null byte is found, the entire buffer will be passed.
dataLen (Number) - set to a positive integer to limit the amount of data sent to the backend for the pointer parameter. If the buffer pointed to by the pointer is longer than this number, it will be truncated. This option is ignored if
string
is specified.
result (optional) - A String containing a field name that will receive the procedure's return value
Starting in version 7.21.0, parameters can be omitted by passing a nullish value for an arguments
array entry. This is equivalent to passing *OMIT in RPG.
Exception Handling
An Error instance will be thrown with the following properties:
message - The IBM i message text.
error - The message id.
help - The message help text.
Examples
Call an RPG subprocedure with a parameter and a return value
function getPrice(item) {
pjs.define("item", { type: "packed decimal", length: 7, decimals: 0, parm: item });
pjs.define("price", { type: "packed decimal", length: 9, decimals: 2 });
pjs.callProc({
srvpgm: "PGMLIB/SALESORDER",
procedure: "GETPRICE",
arguments: [
{ field: "item" }
],
result: "price"
});
return price;
}
var price = getPrice(1234);
Call subprocedure and pass parameters by reference
function addressAutoCorrect(addrLine1, addrLine2, city, state, zip) {
pjs.define("addressLine1", { type: "char", length: 30, refParm: addrLine1 });
pjs.define("addressLine2", { type: "char", length: 30, refParm: addrLine2 });
pjs.define("city", { type: "char", length: 20, refParm: city });
pjs.define("state", { type: "char", length: 2, refParm: state });
pjs.define("zip", { type: "decimal", length: 5, decimals: 0, refParm: zip });
pjs.callProc({
srvpgm: "PGMLIB/ADDRESSES",
procedure: "CORRECT",
arguments: [
{ field: "addressLine1", byRef: true },
{ field: "addressLine2", byRef: true },
{ field: "city", byRef: true },
{ field: "state", byRef: true },
{ field: "zip", byRef: true }
]
});
}
pjs.define("line1", { type: "char", length: 30 });
pjs.define("line2", { type: "char", length: 30 });
pjs.define("city", { type: "char", length: 20 });
pjs.define("state", { type: "char", length: 2 });
pjs.define("zip", { type: "decimal", length: 5, decimals: 0 });
addressLine1 = "562 CONGRESS PRK"
city = "CENTERVILLE";
state = "OH",
zip = 45458;
addressAutoCorrect(pjs.refParm("line1"), pjs.refParm("line2"), pjs.refParm("city"), pjs.refParm("state"), pjs.refParm("zip"));
RPG Equivalent
CALLP
Requirements
This API requires the Profound.js Connector module.