Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 29 Current »

Content Freeze

As of July 25th, 2023, there is a content freeze on this page.

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.


  • No labels