Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
/* REXX */
/* CONTROL NOMSG NOSYMLIST NOCONLIST NOLIST NOPROMPT */
ADDRESS ISPEXEC " CONTROL RETURN ERRORS " ;
/* ARG selectProcessor */
TRACE oFF
/* set myPrefix to a HLQ for work dataset names */
myPrefix = USERID()
/* name one processor to compare to all others */
selectProcessor = 'GCBL'
/*select a processor step 4 SUPER comparisons */
selectStep = 'COMPILE'
/* if your site requires a VOLUME on allocations, include 1 here */
volume = ''
UseVolume ='TSOE32'
If Length(UseVolume) > 2 then,
volume = "VOLUME("UseVolume")"
/* Name Dataset that contains the processors to be compared */
Dataset = myPrefix'.PROCESS.PROCESSR' ;
Dataset = 'YOURSITE.NDVR.TEAM.PROCESS.COBOL'
NEWDD = Dataset ;
OldDD = Dataset ;
Listings =myPrefix'.SUPERC.'selectProcessor'.SAVELIST' ;
UPDATES =myPrefix'.SUPERC.'selectProcessor'.UPDATES' ;
Skeletons = myPrefix'.ENDEVOR.SKELS' ;
/* */
Listings =myPrefix'.SUPERC.'selectProcessor'.SAVELIST' ;
UPDATES =myPrefix'.SUPERC.'selectProcessor'.UPDATES' ;
Skeletons = myPrefix'.TEAM.MODELS'
Skeletons = 'YOURSITE.YOUR.NDVR.NODES1.ISPS'
/* name the macro that parses the steps of a processor */
MACRO = 'SUPCSOUT';
ADDRESS ISPEXEC,
"LIBDEF ISPSLIB Dataset ID('"Skeletons"') COND STACK" ; ,
/* */
Call Allocate_Files ;
/* */
/* COMPARE ALL MEMBERS OF PROCESSOR LIBRARY WITH MEMBER SPECIFIED BY */
/* ARG. GET STEPS FOR EACH PROCESSOR TOO. */
/* */
List_Processors = " ";
Call Compare_Processors ;
/* */
/* COMPARE ALL STEPS OF ARG PROCESSOR WITH SAME-NAMED STEPS IN OTHERS */
/* */
Call Compare_Processor_Steps
EXIT ;
Compare_Processors:
/* */
/* List processors (members) in the named dataset */
TEMP = LISTDSI("'"Dataset"'" RECALL);
ADDRESS ISPEXEC " LMINIT DATAID(MYPDS1) Dataset('"Dataset"') " ;
ADDRESS ISPEXEC " LMOPEN DATAID("MYPDS1") OPTION(INPUT) " ;
RtCode = 0 ;
Do While RtCode = 0
ADDRESS ISPEXEC " LMMLIST DATAID("MYPDS1") OPTION(LIST) ",
"MEMBER(MYMBR) STATS(NO) " ;
RtCode = RC ;
IF RtCode = 0 THEN ,
Do
MYMBR = STRIP(MYMBR) ;
SA= 'PROCESSING FOR *'MYMBR'*' ;
List_Processors = List_Processors MYMBR ;
StepDSN =myPrefix'.SUPERC.'MYMBR'.STEPS' ;
DSNCHECK = SYSDSN("'"StepDSN"'") ;
IF DSNCHECK /= OK THEN,
Do
SA= 'ALLOCATING ' StepDSN ;
ADDRESS TSO "ALLOC DA('"StepDSN"') ",
" LRECL(080) BLKSIZE(32000) SPACE(10,10) ",
" DIR(15) DSNTYPE(LIBRARY) ",
" SPACE(10,10) RECFM(F B) CYLINDERS DSORG(PO) ",
" NEW CATALOG REUSE" volume
ADDRESS TSO "FREE DA('"StepDSN"')" ;
End /* IF DSNCHECK /= OK THEN */
Input_DSN = Dataset ;
Input_DSN = Input_DSN'('MYMBR')' ;
"ALLOCATE F(PROCESSB) DA('"Input_DSN"') SHR REUSE " ;
"EXECIO * DISKR PROCESSB (STEM PROCESSR. FINIS " ;
ADDRESS TSO "FREE F(PROCESSB) " ;
NEWDSN = StepDSN'('MYMBR')' ;
"ALLOCATE F(NEW#MBR) DA('"NEWDSN"') SHR REUSE " ;
"EXECIO * DISKW NEW#MBR (STEM PROCESSR. FINIS " ;
ADDRESS TSO "FREE F(NEW#MBR) " ;
"ALLOCATE DA('"NEWDSN"') OLD REUSE " ;
DROP PROCESSR. ;
SAY 'Creating members from STEPS of' MYMBR;
"ISPEXEC EDIT Dataset('"NEWDSN"')",
"MACRO("MACRO")" ;
ADDRESS TSO "FREE DA('"NEWDSN"')" ;
SA= 'RUNNING SUPERC FOR' selectProcessor 'AND' MYMBR;
/* if you want whole processor comparisons, uncomment */
/* Call Do_Superc ; */
END ; /* IF RtCode */
END; /* Do While ... */
/* */
ADDRESS ISPEXEC " LMCLOSE DATAID(MYPDS1) ";
RETURN
Allocate_Files:
DSNCHECK = SYSDSN("'"Listings"'") ;
IF DSNCHECK /= OK THEN,
Do
ADDRESS TSO "ALLOC DA('"Listings"') BLKSIZE(13300) ",
"CYLINDERS ",
"LRECL(133) RECFM(F B) ",
" DIR(15) DSNTYPE(LIBRARY) ",
" SPACE(10,10) RECFM(F B) CYLINDERS DSORG(PO) ",
" NEW CATALOG REUSE" volume
ADDRESS TSO "FREE DA('"Listings"')" ;
SA= 'ALLOCATING ' Listings ;
END;
DSNCHECK = SYSDSN("'"UPDATES"'") ;
IF DSNCHECK /= OK THEN,
Do
ADDRESS TSO "ALLOC DA('"UPDATES"') ",
" LRECL(080) BLKSIZE(32000) SPACE(10,10) ",
" DIR(15) DSNTYPE(LIBRARY) ",
" SPACE(10,10) RECFM(F B) CYLINDERS DSORG(PO) ",
" NEW CATALOG REUSE" volume
ADDRESS TSO "FREE DA('"UPDATES"')" ;
SA= 'ALLOCATING ' UPDATES ;
END;
RETURN ;
Do_Superc:
ADDRESS ISPEXEC "FTOPEN TEMP"
ADDRESS ISPEXEC "FTINCL CONSOLSK"
ADDRESS ISPEXEC "FTCLOSE " ;
ADDRESS ISPEXEC "VGET (ZUSER ZTEMPF ZTEMPN) ASIS" ;
Debug = 'YES' ;
Debug = 'NAW' ;
X = OUTTRAP("OFF")
IF Debug = 'YES' THEN,
Do
Trace ?R
ADDRESS ISPEXEC "LMINIT DATAID(DDID) DDNAME(&ZTEMPN)"
ADDRESS ISPEXEC "EDIT DATAID(&DDID)"
ADDRESS ISPEXEC "LMFREE DATAID(&DDID)"
END;
ELSE,
ADDRESS TSO "SUBMIT '"ZTEMPF"'" ;
RETURN ;
Compare_Processor_Steps:
/* Go though the members in your processor dataset again */
/* and compare the selectStep with the one in selectprocessor */
sa = 'Compare_Processor_Steps'
Do mbr# = 1 to Words(List_Processors)
MYMBR = Word(List_Processors,mbr#)
OLDDD = myPrefix'.SUPERC.'MYMBR'.STEPS' ;
Listings = myPrefix'.SUPERC.'selectStep'.SAVLIST' ;
DSNCHECK = SYSDSN("'"Listings"'") ;
IF DSNCHECK /= OK THEN,
Do
SA= 'ALLOCATING ' Listings ;
ADDRESS TSO "ALLOC DA('"Listings"') BLKSIZE(13300) ",
"CYLINDERS ",
"LRECL(133) RECFM(F B) ",
" DIR(15) DSNTYPE(LIBRARY) ",
" SPACE(10,10) RECFM(F B) CYLINDERS DSORG(PO) ",
" NEW CATALOG REUSE" volume
ADDRESS TSO "FREE DA('"Listings"')" ;
END;
NEWDD = myPrefix'.SUPERC.'selectProcessor'.STEPS' ;
NEWMBR = selectStep
OLDMBR = selectStep
SA= 'PROCESSING FOR *'MYMBR'*' ;
Call Do_Superc
END; /* Do mbr# = 1 to Words(List_Processors) */
RETURN
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//CONSOLID JOB (0000),
// CLASS=A,MSGCLASS=X,REGION=4M,
// NOTIFY=&SYSUID
//*==================================================================*
//SUPERC EXEC PGM=ISRSUPC, *0004
// PARM=(LONGL,LINECMP, 0005
// 'UPDSEQ0', 0006
// '') 0007
//NEWDD DD DSN=&NEWDD(&NEWMBR), 0008
// DISP=SHR 0009
//OLDDD DD DSN=&OLDDD(&OLDMBR), 0010
// DISP=SHR 0011
//OUTDD DD DSN=&LISTINGS(&MYMBR), 0028
// DISP=SHR 0028
//DELDD DD DSN=&&&&DELTA, 0015
// DISP=(NEW,PASS),UNIT=3390, 0015
// DCB=(LRECL=80,BLKSIZE=13680), 0016
// SPACE=(13680,(15,30),RLSE) 0017
//* 0018
//*==================================================================*
//*= (optionally save the SUPERC "delta")============================*
//*==================================================================*
//SAVDLTA EXEC PGM=IEBGENER,COND=(0,LE) 0019
//SYSPRINT DD DUMMY 0020
//SYSUT1 DD DSN=&&&&DELTA, 0021
// DISP=(SHR,DELETE) 0021
//SYSUT2 DD DSN=&UPDATES(&MYMBR), 0022
// DISP=SHR 0022
//SYSIN DD DUMMY 0023
//* 0024
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
/* REXX */
TRACE Off;
ADDRESS ISPEXEC,
"VGET (ZSCREEN) SHARED"
Table = 'C1SYMBS' || ZSCREEN
ADDRESS ISPEXEC
"TBSTATS "Table" STATUS1(STATUS1) STATUS2(STATUS2)"
/* FOR TABLE STATUS... */
/* 1 = TABLE EXISTS IN THE TABLE INPUT LIBRARY CHAIN */
/* 2 = TABLE DOES NOT EXIST IN THE TABLE INPUT LIBRARY CHAIN */
/* 3 = TABLE INPUT LIBRARY IS NOT ALLOCATED. */
/* */
/* 1 = TABLE IS NOT OPEN IN THIS LOGICAL SCREEN */
/* 2 = TABLE IS OPEN IN NOWRITE MODE IN THIS LOGICAL SCREEN */
/* 3 = TABLE IS OPEN IN WRITE MODE IN THIS LOGICAL SCREEN */
/* 4 = TABLE IS OPEN IN SHARED NOWRITE MODE IN THIS LOGICAL SCREEN*/
/* 5 = TABLE IS OPEN IN SHARED WRITE MODE IN THIS LOGICAL SCREEN. */
"TBQUERY "Table" KEYS(KEYLIST) NAMES(VARLIST) ROWNUM(ROWNUM)"
IF RC > 0 THEN EXIT
KEYLIST = TRANSLATE(KEYLIST," ","()',");
VARLIST = TRANSLATE(VARLIST," ","()',");
VARLIST = Strip(KEYLIST) STRIP(VARLIST);
SA= "KEYLIST=" VARLIST;
VariableCount = Words(VARLIST) ROWNUM
"TBTOP "Table
maxLen = 12
DO Row# = 1 TO ROWNUM
"TBSKIP "TABLE
tmp = Left(VARSISYM,12) '="' || Strip(VARUSPVA) || '"'
If Length(tmp) > maxLen then maxlen = Length(tmp)
queue tmp
End /* DO Row# = 1 TO ROWNUM */
Push "Largest_record_size = " maxLen
ADDRESS TSO,
"ALLOC F(TBLSAVE)",
"LRECL(100) BLKSIZE(24000) SPACE(5,5)",
"RECFM(F B) TRACKS ",
"NEW UNCATALOG REUSE " ;
ADDRESS TSO,
"EXECIO" QUEUED() "DISKW TBLSAVE (FINIS"
ADDRESS ISPEXEC "LMINIT DATAID(DDID) DDNAME(TBLSAVE)"
ADDRESS ISPEXEC "VIEW DATAID(&DDID)"
ADDRESS ISPEXEC "LMFREE DATAID(&DDID)"
ADDRESS TSO,
"FREE F(TBLSAVE)"
EXIT ;
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
//IBMUSERA JOB (0000), JOB05921
// 'ENDEVOR JOB',MSGLEVEL=(1,1),CLASS=B,REGION=0M,MSGCLASS=A,
// NOTIFY=&SYSUID
//* RESTART=RUNTEST,
//*==================================================================*
// JCLLIB ORDER=(YOURSITE.NDVR.TEAM.JCL)
// SET TRACE=N T/Y/N/variable-name
//*==================================================================*
//* If a Site Symbol table is inuse at your site,
//* Create a representation of the table in a format like:
//* SYMBOLNAME="value"
//* See the ESYMBOLR.rex member for a method for doing this.
//* Place the results into a dataset(member) for the next step.
//* Something like DSN=YOURSITE.NDVR.TEAM.WRK(ESYMBOLO)
//*-----------
//* Concatenate below it, another input containing variables from
//* one or more processors, in the same format.
//*//*================================================================
//RUNTEST EXEC PGM=IRXJCL,
// PARM='NDVRREPT &TRACE'
//INPUT DD * < "seed" C1 variables here (only ones necessary)
C1PRGRP = G2345678
C1SI = P
C1ST = PRD
C1SY = FINAN
C1SU = SSSSS
C1TY = CBL
C1SSTGNUM = 2
C1SSTAGE = TEST
C1SSTGID = T
C1SSTG = TEST
C1SSTG# = 1
C1SSUBSYS = A110
// DD DISP=SHR,DSN=YOURSITE.NDVR.TEAM.WRK(ESYMBOLO)
// DD DISP=SHR,DSN=YOURSITE.NDVR.TEAM.WRK(PSYMBOLS)
// DD * <use stmts like these for longer variable names>
C1ENVMNT = &C1EN.
C1STGID = &C1SI.
C1STAGE = &C1ST.
C1SYSTEM = &C1SY.
C1SUBSYS = &C1SU.
C1ELTYPE = &C1TY.
//SYSEXEC DD DISP=SHR,DSN=YOURSITE.NDVR.REXX
//REPORT DD SYSOUT=*
//SYSTSIN DD DUMMY
//SYSTSPRT DD SYSOUT=*
//*================================================================
Loading
Loading