pjs.runCommand()
This API is used to execute an IBM i CL command.
Note: In Profound.js release 7.10.0, API pjs.runCommand() was improved to work very similar to the C library function system()
as called by RPG programs, with the following additions:
2nd optional parameter
ignoreError
3rd optional parameter
msgId
.return value of -1, 1, or 0.
These changes are backward-compatible with earlier releases of Profound.js; i.e. any current Profound.js modules that do NOT use these new features will behave as before.
Parameters
Command - A string containing a CL command to execute.
ignoreError - optional boolean value: “true” = ignore error if command fails; “false” = throw error if command fails. Default is “false”.
msgId - optional strongly-defined char(7) field to be updated with the error MsgId if the command fails.
Return value
-1 : null is passed for command
1: command fails
0: command is successful
Exception Handling
If the command fails, an Error instance will be thrown with the following properties, if the 2nd optional parameter ignoreError
is not specified or “false”.
message - The IBM i message text.
statusCode - The message id.
RPG Equivalent
QCMDEXC System API or C library function system() .
Examples
Example 1: Check for existence of an object
var command = "CHKOBJ OBJ(QTEMP/WORKFILE) OBJTYPE(*FILE)";
var exists = true;
try {
pjs.runCommand(command);
}
catch(e) {
exists = false;
}
Example 2: Create a duplicate file in QTEMP
var command = "CRTDUPOBJ OBJ(ORDERSP) FROMLIB(DATALIB) OBJTYPE(*FILE) TOLIB(QTEMP) NEWOBJ(WORKFILE) DATA(*NO)";
pjs.runCommand(command);
Example 3: Run a command with parameters with return value (this feature is available since Profound.js 6.0.0)
CL code:
DCL VAR(&NBRRCD) TYPE(*DEC) LEN(10 0)
RTVMBRD FILE(PJSTEST/PRODUCTSP) NBRCURRCD(&NBRRCD)
PJS code:
pjs.define("nbrRcd", { type: 'packed', length: 10, decimals: 0});
pjs.runCommand(`RTVMBRD FILE(PJSTEST/PRODUCTSP) NBRCURRCD(&nbrRcd)`);
console.log(`nbrRcd = ${nbrRcd}`);
Examples for error-handling
Example 4: No error-handling: run-time error is thrown if command has error
Example 5: Use try/catch
Example 6: Specify 2nd optional parameter ignoreError as “true”
Example 7: Specify 2nd optional parameter ignoreError as “true”, and specify a MsgId field to get error MsgId
Example 8: Specify 2nd optional parameter ignoreError as “true”, specify a MsgId field to get error MsgId, and check return value
Example 9: MONMSG for a specific error MsgId
Requirements
This API requires the Profound.js Connector module.