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.
result (optional) - A String containing a field name that will receive the procedure's return value
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.
Â