Is possible use JS and access VSAM, really one environment IBM/zOS with VSAM , CICS , COBOL , yes, we can !
One module enables an application to read and modify VSAM datasets on z/OS. NPM have one package, with name vsam.js
Please, attetion : before installing, download and install IBM SDK for Node.js - z/OS.
Node.js 8.16.2 or higher is required.
=================================================
vsamObj = vsam.openSync("sample.test.vsam.ksds",
JSON.parse(fs.readFileSync("schema.json")));
// Find using a string as key:
vsamObj.find("0321", (record, err) => {
if (record !== null) {
assert.equal(record.key, "0321");
record.name = "JACOB";
record.quantity = Buffer.from([0xe5, 0xf6, 0x78, 0x9a]).toString("hex");
vsamObj.update(record, (err) => {
if (err !== null)
console.log("update was successful");
else
console.error(err);
vsamObj.close();
});
} else {
console.error(err);
}
});
// or find using binary data as key (type must be set to "hexadecimal"):
const keybuf = Buffer.from([0xa1, 0xb2, 0xc3, 0xd4]);
vsamObj.find(keybuf, keybuf.length, (record, err) => {
...
// or find using a hexadecimal string as key (type must be set to "hexadecimal"):
vsamObj.find("e5f6789a", (record, err) => {
...
// Starting with vsam.js v3.0.0, find and update record(s) in one call synchronously:
count = vsamObj.updateSync("f1f2f3", record);
// or find and delete record(s) in one call:
count = vsamObj.deleteSync("f1f2f3");
// or find and update record(s) in one call asynchronously:
vsamObj.update("f1f2f3", record, (count, err) => { ... });Schema.json Here contains the dataset's field names and their attributes{
"key": {
"type": "hexadecimal",
"maxLength": 8
},
"name": {
"type": "string",
"maxLength": 10,
"minLength": 1
},
"quantity": {
"type": "hexadecimal",
"maxLength": 4
}
}


No comments:
Post a Comment