Skip to content

Latest commit

 

History

History
146 lines (112 loc) · 3.87 KB

README.md

File metadata and controls

146 lines (112 loc) · 3.87 KB

nodejs-bpxwdyn

Node.js interface to the BPXWDYN program (svc 99 service with text commands)

Installation

Before installing, download and install IBM Open Enterprise SDK for Node.js 16 or higher. nodejs-bpxwdyn v1.0.3 or higher is required for Node.js 18 or higher.

Install

npm install nodejs-bpxwdyn

Use

bpxwdyn.execute_rtvars

Arguments:
  1. Command to BPXWDYN Reference 1
  2. Second argument, is the call-back function for asynchronous call.
Returns:

This function requests BPXWDYN to return DDNAME, DSNAME and VOLSER The callback function receive five return objects, they are respectively:

  1. Error String, if Return code is not 0
  2. Return code
  3. DDNAME if Return code is 0
  4. DSNAME if Return code is 0
  5. VOLSER if Return code is 0

bpxwdyn.execute

Arguments:
  1. Command to BPXWDYN Reference 1
  2. Second argument, is the call-back function for asynchronous call.
Returns:

This function does not requests BPXWDYN to return variables The callback function receive two return objects, they are respectively:

  1. Error String, if Return code is not 0
  2. Return code

Example:

const bpxwdyn = require('nodejs-bpxwdyn');

async function foo() {

  console.log("\n\n------------------------------------------------------TESTING  alloc shr msg(2) da('SYS1.MACLIB(GETMAIN)')");
  let p1 = new Promise((resolve, reject) => {
    bpxwdyn.execute_rtvars(
        "alloc shr msg(2) da('SYS1.MACLIB(GETMAIN)')",
        function(err, rc, ddname, dsname, volser) {
          console.log(
              "\n\n----- ALLOC SHR DA('SYS1.MACLIB(GETMAIN)') ---------");
          if (rc == 0) {
            console.log("ddname-received", ddname);
            console.log("dsname-received", dsname);
            console.log("volser-received", volser);
            resolve(ddname);
          } else {
            console.log("error-string", err);
            reject("allocate failed");
          }
        });
  }).catch((error) => {
      console.log("Error", error);
      return;
  })


  let ddname_allocated = await p1;

  console.log("\n\n------------------------------------------------------TESTING  free dd(" + ddname_allocated + ")");
  let p2 = new Promise((resolve, reject) => {
    bpxwdyn.execute("free dd(" + ddname_allocated + ")", function(err, rc) {
      console.log("\n\n----- FREE DD('" + ddname_allocated + "')-----");
      if (rc == 0) {
        resolve("OK");
      } else {
        console.log("error-string", err);
        reject("free failed");
      }
    });
  }).catch((error) => {
      console.log("Error", error);
      return;
  })

  let freed = await p2;

  console.log("\n\n------------------------------------------------------TESTING alloc diag(2) shr msg(2) da('DOES.NOT.EXIST')" );
  bar()
}

async function bar() {

  let p1 = new Promise((resolve, reject) => {
    bpxwdyn.execute_rtvars(
        "alloc diag(2) shr msg(2) da('DOES.NOT.EXIST')",
        function(err, rc, ddname, dsname, volser) {
          console.log(
              "\n\n-----ALLOC DA('DOES.NOT.EXIST')---------------------");
          if (rc == 0) {
            console.log("ddname-received", ddname);
            console.log("dsname-received", dsname);
            console.log("volser-received", volser);
            resolve(ddname);
          } else {
            console.log("error-string", err);
            reject("allocate failed");
          }
        });
  }).catch((error) => {
      console.log("Error", error);
  })

  let ddname_allocated = await p1;
}

foo();

Test

node test.js

reference

BPXWDYN: a text interface to dynamic allocation