Skip to content

Instantly share code, notes, and snippets.

@jarhoads
Created June 23, 2016 18:34
Show Gist options
  • Save jarhoads/eef61990034d997ef6f432684b506267 to your computer and use it in GitHub Desktop.
Save jarhoads/eef61990034d997ef6f432684b506267 to your computer and use it in GitHub Desktop.
/* REXX */
/* REXX PROGRAM FOR PROCESSING SDSF WITH REXX */
/* CHANGE THE DDNAME TO BE THE OUTPUT FILE YOU WANT */
/* CHANGE ISFPREFIX TO BE THE PREFIX FOR YOUR JOBS */
/* I USUALLY USE THIS TO FIND ALL OF MY TEST FILES */
/* AFTER RUNNING THE SUPERCE UTILITY IN BATCH MODE */
/* JOSH RHOADS - MARCH 2015 */
DDNAME = "'HLQUAL.DD.MIDQUAL.TSTFILES'"
RC = ISFCALLS('ON')
/* ACCESS THE ST DISPLAY */
ISFPREFIX = 'JOBPFX*'
ADDRESS SDSF "ISFEXEC ST"
OUT_LINE_NUM = 0 /* LINE NUMBER FOR OUTPUT FILE */
/* LOOP FOR ALL RUNNING JOBPFX JOBS */
SAY "NUMBER OF JOBS : " JNAME.0
JOBNUM = ""
DO JOB_I=1 TO JNAME.0
/*
SAY "JOBNAME : " JNAME.JOB_I
SAY "QUEUE TYPE : " QUEUE.JOB_I
SAY "ACTIVE SYS : " ACTSYS.JOB_I
*/
/* DO A ? ON THE JOB TO GET THE DATA SETS*/
ADDRESS SDSF "ISFACT ST TOKEN('"TOKEN.JOB_I"') PARM(NP ?)" ,
"( PREFIX JDS_"
/* FIND THE SYSOUT DATA SET AND ALLOCATE IT */
/* USING THE SA ACTION CHARACTER */
DO JOB_DS_J=1 TO JDS_DDNAME.0
IF JDS_DDNAME.JOB_DS_J = "OUTDD" THEN
DO
ADDRESS SDSF "ISFACT ST TOKEN('"JDS_TOKEN.JOB_DS_J"')" ,
"PARM(NP SA)"
/* READ THE RECORDS FROM THE DATA SET AND LIST THEM. */
/* THE DDNAME FOR EACH ALLOCATED DATA SET WILL BE IN */
/* THE ISFDDNAME STEM. SINCE THE SA ACTION WAS DONE */
/* FROM JDS, ONLY ONE DATA SET WILL BE ALLOCATED. */
DO DDNAME_K=1 TO ISFDDNAME.0
SAY "NOW READING" ISFDSNAME.DDNAME_K
"EXECIO * DISKR" ISFDDNAME.DDNAME_K ,
"(STEM LINE. FINIS"
SAY " LINES READ:" LINE.0
DO LINE_L = 1 TO LINE.0
/* ADD LINE PARSING AND FILE CREATION */
PARSE UPPER VAR LINE.LINE_L 'NEW:' DS1 'OLD:' DS2
DS1 = STRIP(DS1)
DS2 = STRIP(DS2)
IF DS1 ^= '' & DS2 ^= '' THEN
DO
IF JOBNUM ^= JOB_I THEN
DO
JOBNUM = JOB_I
SAY "JOBNAME : " JNAME.JOB_I
SAY "JOBID : " JOBID.JOB_I
OUT_LINE_NUM = OUT_LINE_NUM + 1
OUT.OUT_LINE_NUM = JNAME.JOB_I||"-"||JOBID.JOB_I
END
SAY "FIRST DS : " DS1
OUT_LINE_NUM = OUT_LINE_NUM + 1
OUT.OUT_LINE_NUM = DS1
SAY "SECOND DS : " DS2
OUT_LINE_NUM = OUT_LINE_NUM + 1
OUT.OUT_LINE_NUM = DS2
ITERATE DDNAME_K /* GO TO NEXT FILE */
END
ELSE NOP
/*SAY " LINE."LINE_L "IS:" LINE.LINE_L*/
END
END
END
END
END
RC = ISFCALLS('OFF')
SAY "WRITING OUTPUT TO : " DDNAME
ADDRESS TSO "ALLOC F(OUT) DA("DDNAME") NEW"
ADDRESS TSO "EXECIO * DISKW OUT (FINIS STEM OUT."
ADDRESS TSO "FREE F(OUT)"
IF RC = 0 THEN
DO
SAY OUT_LINE_NUM "LINES WRITTEN TO : " DDNAME
END
ELSE
DO
SAY "ERROR WHILE WRITING TO OUT FILE, RC : " RC
END
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment