pjs.callProc()



This method is used to call an ILE procedure using Profound.js fields as arguments.

Parameters

  1. 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.