pjs.callProc()

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.

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