Skip to content

Instantly share code, notes, and snippets.

@dkelosky
dkelosky / keep-tso.mjs
Created September 25, 2023 14:20
keep-tso.mjs
import { execSync } from 'child_process';
import { writeFileSync } from 'fs';
import { readFileSync } from 'fs';
const KEY_FILE = '.scripts/key.txt';
const CMD_FILE = '.scripts/cmds.txt';
const MAX_FAIL = 5;
const WAIT_TIME = 1000 * 60 * 5; // 5 minutes (in milliseconds) - milliseconds * seconds * minutes
function start() {
@dkelosky
dkelosky / opinfo.rexx
Last active September 15, 2023 14:06
Call python and pass variables
/* REXX */
/* obtain system info from OPS */
sysname = OPSINFO("SYSNAME")
opsversion = OPSINFO("VERSION")
oslevel = OPSINFO("MVSVERSION")
osfnum = ""
rc = opsprm("show", "osfmin")
do while queued() > 0
/* REXX */
cmd = "curl -k https://jsonplaceholder.typicode.com/posts/1 2>/dev/null"
address uss
"USSCMD COMMAND('"cmd"') STEM(RESPONSE)"
if RESPONSE.0 > 0 then do
do i = 1 to RESPONSE.0
say " " RESPONSE.i
import handlebars from "handlebars";
import { existsSync, readFileSync, writeFileSync } from "fs";
import config from "config";
import { basename } from "path";
if (process.argv.length < 3) console.log(`usage \`${basename(process.argv[1])} <template-file>\``),process.exit(1)
const templateFile = process.argv[2];
const templateFilePath = `templates/${templateFile}`;
const outputFilePath = `out/${templateFile}`;
//{{jobname}} JOB IZUACCT,'JCLREXX',CLASS=A,MSGCLASS=A
/*JOBPARM SYSAFF=*
//TSO EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
{{interpreter}} PROG('{{program}}') -
{{arg}}
/*
//OPS${{subsys}} DD DUMMY
{{dd}}
say opsinfo("ipldate")
@dkelosky
dkelosky / index.mjs
Created April 20, 2022 16:01
index.mjs delete
import { zowe } from "./zowe.mjs";
import { basename } from "path";
const prefix = process.argv[2];
if (!prefix) { console.log(`Job prefix is missing, usage is 'node ${basename(process.argv[1])} <job-prefix>'`); process.exit(1); }
const resp = zowe(`jobs list jobs --prefix ${prefix}`, {json: true, silent: true});
const jsonResp = JSON.parse(resp);
jsonResp.data.forEach(job => {
@dkelosky
dkelosky / index.mjs
Created April 20, 2022 15:38
index.mjs row parsing
import { zowe } from "./zowe.mjs";
const resp = zowe("jobs list jobs --rff jobid jobname status", { silent: true});
const rows = resp.split(/\r?\n/);
rows.forEach((rows) => {
const cols = rows.split(/\s+/);
console.log(`jobid: ${cols[0]} jobname: ${cols[1]} status: ${cols[2]}`);
});
@dkelosky
dkelosky / index.mjs
Created April 20, 2022 15:21
index.mjs
import { zowe } from "./zowe.mjs";
const resp = zowe("jobs list jobs", {json: true, silent: true});
const jsonResp = JSON.parse(resp);
jsonResp.data.forEach(job => {
console.log(`${job.jobid} ${job.jobname} ${job.status}`);
});
@dkelosky
dkelosky / zowe.mjs
Last active April 20, 2022 15:18
zowe.mjs
import { execSync } from 'child_process';
export function zowe(cmd, options) {
// build command
cmd = `zowe ${cmd}`;
if (options?.json) cmd += ` --rfj`;
// run it
try {