Return to Mainframe Utilities Page
Module
ISREDIT MACRO (HELP)
ISPEXEC CONTROL ERRORS RETURN
/**** SET MESSAGE DISPLAY ON/OFF BASED ON THE DEBUG SWITCH ***/
ISPEXEC VGET (DBGSWTCH) PROFILE
IF &DBGSWTCH = &STR(ON) THEN CONTROL MSG LIST CONLIST SYMLIST NOFLUSH
ELSE CONTROL NOMSG NOLIST NOFLUSH NOPROMPT
/******************************************************************/
/* 'JCLCLIST' EDIT MACRO. TAKE A JCL JOB STEP AND CONVERT TO CLIST*/
/* FORMAT. */
/* AUTHOR : DAVID LEIGH DATE : 5-25-89 */
/******************************************************************/
SET PLUS = &STR(+)
IF &STR(&HELP) = &STR(HELP) THEN GOTO HELPSEC
ISREDIT (CURRDSN) = DATASET
LISTDSI '&CURRDSN'
DELETE '&CURRDSN($&SYSUID)'
FREE DDNAME(TEMPFREE)
ALLOC DDNAME(TEMPFREE) +
DSN('&CURRDSN($&SYSUID)') +
SHR KEEP
OPENFILE TEMPFREE OUTPUT
ISREDIT (SLINE,SCOL) = CURSOR
SET PSWITCH = OFF
ISREDIT CURSOR = 1 1
SET SAVECC = 0
ISREDIT FIND FIRST P'=' 1 X
SET SAVECC = &LASTCC
IF &SAVECC = 0 THEN +
DO
ISREDIT (LN,CL) = CURSOR
SET LN = &LN - 1
IF &LN = 0 THEN +
DO
ISREDIT LINE_BEFORE .ZCSR = ' '
SET LN = 1
END
ISREDIT CURSOR = &LN &CL
ISREDIT LABEL .ZCSR = .LABELA
SET LN = &LN + 1
ISREDIT CURSOR = &LN &CL
ISREDIT LABEL .ZCSR = .LABELB
ISREDIT (DATA) = LINE .ZCSR
IF &SYSINDEX(&STR( EXEC ),&STR(&DATA)) = 0 OR +
&SYSINDEX(&STR(PGM=),&STR(&DATA)) = 0 THEN +
DO
SET ZEDLMSG = &STR(FIRST EXCLUDED LINE MUST BE AN )+
&STR("EXEC PGM=" JCL LINE)
ISPEXEC SETMSG MSG(UTLZ001)
CLOSFILE TEMPFREE
FREE DDNAME(TEMPFREE)
EXIT
END
ELSE +
DO
SET A = &SYSINDEX(&STR(PGM=),&STR(&DATA))
SET A = &A + 4
SET B = &LENGTH(&STR(&DATA))
SET DATA = &SUBSTR(&A:&B,&STR(&DATA))
SET A = &SYSINDEX(&STR(,),&STR(&DATA))
IF &A > 1 THEN +
DO
SET A = &A - 1
SET PSWITCH = ON
END
ELSE +
SET A = &SYSINDEX(&STR( ),&STR(&DATA))
SET PGMNAME = &SUBSTR(1:&A,&STR(&DATA))
DO WHILE &PSWITCH = ON
ISREDIT FIND NEXT P'¬' 3 80 X
SET SAVECC = &LASTCC
IF &SAVECC = 0 THEN +
DO
ISREDIT (LN,CL) = CURSOR
ISREDIT (DATA) = LINE .ZCSR
SET B = &LENGTH(&STR(&DATA))
SET X = &SUBSTR(&CL:&B,&STR(&DATA))
SET A = &SYSINDEX(&STR(,),&STR(&X))
IF &A > 1 THEN SET PSWITCH = ON
ELSE +
DO
SET A = &SYSINDEX(&STR( ),+
&STR(&X))
SET A = &A - 1
SET PSWITCH = OFF
END
SET X = &SUBSTR(1:&A,&STR(&X))
SET PARM = &STR(&PARM.&X)
END
ELSE SET PSWITCH = OFF
END
END
END
ELSE +
DO
SET ZEDLMSG = &STR(SELECTED LINES TO CONVERT MUST BE EXCLUDED)
ISPEXEC SETMSG MSG(UTLZ001)
CLOSFILE TEMPFREE
FREE DDNAME(TEMPFREE)
EXIT
END
ISREDIT FIND NEXT P'=' 1 X
IF &LASTCC > 0 THEN +
DO
SET ZEDLMSG = &STR(NO EXCLUDED LINES PAST THE "EXEC" STATEMENT)
ISPEXEC SETMSG MSG(UTLZ001)
CLOSFILE TEMPFREE
FREE DDNAME(TEMPFREE)
EXIT
END
ISREDIT (LN,CL) = CURSOR
ISREDIT SEEK LAST P'=' 1 X
ISREDIT LINE_AFTER .ZCSR = ' '
ISREDIT CURSOR = &LN &CL
SET LPAREN = &STR((
SET RPAREN = &STR())
SET DDBEGIN = OFF
SET DDEND = ON
SET NUMDD = 0
SET NUMDCB = 0
LOOP: +
ISREDIT CHANGE '&&' '¦' .ZCSR .ZCSR ALL
ISREDIT (LN,CL) = CURSOR
SET LN = &LN + 1
ISREDIT CURSOR = &LN 1
IF &LASTCC = 0 THEN +
ISREDIT FIND P'¬' PREV
ELSE +
DO
SET LN = &LN - 1
SET CL = &SYSLRECL
ISREDIT CURSOR = &LN &CL
ISREDIT FIND P'¬' PREV
END
ISREDIT (LN,CL) = CURSOR
ISREDIT (DATA) = LINE .ZCSR
SET CL = &CL + 2
IF &CL > &SYSLRECL THEN SET CL = &SYSLRECL
SET DATA = &SUBSTR(1:&CL,&STR(&DATA))
IF &SUBSTR(1:2,&STR(&DATA)) ¬= &STR(//) OR +
&SYSINDEX(&STR(/)&STR(/)&STR(*),&STR(&DATA)) = 1 THEN +
IF &SWITCHSYS = ON THEN +
DO
IF &SYSINDEX(&STR(&DLM ),&STR(&DATA)) = 1 THEN +
DO
SET DDBEGIN = OFF
SET DDEND = ON
END
ELSE +
DO
SET NUMLINE = &NUMLINE + 1
SET LINE&NUMLINE = &NRSTR(&DATA)
END
END
ELSE GOTO CONTINUE
IF &SYSINDEX(&STR(DCB=),&STR(&DATA)) > 0 THEN +
DO
SET A = &SYSINDEX(&STR(DCB=),&STR(&DATA))
SET A = &A + 4
SET B = &LENGTH(&STR(&DATA))
SET Q = &SUBSTR(&A:&B,&STR(&DATA))
IF &SYSINDEX(&STR(&LPAREN),&STR(&Q)) ¬= 1 THEN +
IF &SYSINDEX(&STR(SYS3.DSCB),&STR(&Q)) ¬= 1 THEN +
DO
SET DDBEGIN = OFF
SET DDEND = ON
END
ELSE
ELSE
END
IF &DDBEGIN = OFF AND +
&SYSINDEX(&STR( DD ),&STR(&DATA)) > 0 AND +
&SYSINDEX(&STR( ),&STR(&DATA)) > 3 THEN +
DO
SET DDBEGIN = ON
SET DDEND = OFF
SET NUMDD = &NUMDD + 1
SET NUMDSN = 0
SET A = &SYSINDEX(&STR( ),&STR(&DATA))
SET DDNAME = &SUBSTR(3:&A,&STR(&DATA))
IF &DDNAME = STEPLIB THEN +
DO
SET TLIB = YES
SET DDNAME = TASKLIB
END
END
IF &DDBEGIN = ON AND +
&SYSINDEX(&STR( DD ),&STR(&DATA)) > 0 AND +
&SYSINDEX(&STR( DSN=),&STR(&DATA)) = 0 AND +
(&SYSINDEX(&STR( * ),&STR(&DATA)) > 0 OR +
&SYSINDEX(&STR( DATA),&STR(&DATA)) > 0) THEN +
DO
SET NUMLINE = 0
SET SWITCHSYS = ON
SET A = &SYSINDEX(&STR(,DLM=),&STR(&DATA))
IF A > 0 THEN +
DO
SET A = &A + 5
SET B = &LENGTH(&STR(&DATA))
SET DLM = &SUBSTR(&A:&B,&STR(&DATA))
SET A = &SYSINDEX(&STR(, ),&STR(&DLM))
IF &A = 0 THEN SET A = &SYSINDEX(&STR( ),&STR(&DLM))
SET A = &A - 1
SET DLM = &SUBSTR(1:&A,&STR(&DLM))
END
ELSE SET DLM = &STR(/*)
END
IF &DDBEGIN = ON AND &SYSINDEX(&STR(DSN=),&STR(&DATA)) > 0 THEN +
DO
SET NUMDSN = &NUMDSN + 1
SET A = &SYSINDEX(&STR(DSN=),&STR(&DATA))
SET A = &A + 4
SET B = &LENGTH(&STR(&DATA))
SET DSN&NUMDSN = &SUBSTR(&A:&B,&STR(&DATA))
SET X = &&DSN&NUMDSN
SET A = &SYSINDEX(&STR(,),&STR(&X))
IF &A = 0 THEN +
DO
SET A = &SYSINDEX(&STR( ),&STR(&X))
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
SET A = &A - 1
SET DSN&NUMDSN = &SUBSTR(1:&A,&STR(&X))
END
IF &DDBEGIN = ON AND &SYSINDEX(&STR(DISP=),&STR(&DATA)) > 0 THEN +
DO
SET A = &SYSINDEX(&STR(DISP=),&STR(&DATA))
SET A = &A + 5
SET B = &LENGTH(&STR(&DATA))
SET DISP = &SUBSTR(&A:&B,&STR(&DATA))
IF &SYSINDEX(&STR(&LPAREN),&STR(&DISP)) ¬= 1 THEN +
DO
SET A = &SYSINDEX(&STR(,),&STR(&DISP))
IF &A = 0 THEN +
DO
SET A = &SYSINDEX(&STR( ),+
&STR(&DISP))
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
SET A = &A - 1
SET DISP = &SUBSTR(1:&A,&STR(&DISP))
END
ELSE +
DO
SET A = &SYSINDEX(&STR(&RPAREN),&STR(&DISP))
SET Q = &A + 1
IF &SYSINDEX(&STR( ),&STR(&DISP)) = &Q THEN +
DO
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
SET A = &A - 1
SET DISP = &SUBSTR(2:&A,&STR(&DISP))
SET A = &SYSINDEX(&STR(,),&STR(&DISP))
IF &A = 0 THEN +
DO
SET A = &SYSINDEX(&STR(&LPAREN),+
&STR(&DISP))
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
SET C = &A + 1
SET A = &A - 1
SET B = &LENGTH(&STR(&DISP))
SET X = &SUBSTR(1:&A,&STR(&DISP))
SET Y = &SUBSTR(&C:&B,&STR(&DISP))
SET A = &SYSINDEX(&STR(,),&STR(&Y))
SET A = &A - 1
IF &A > 0 THEN +
DO
SET Y = &SUBSTR(1:&A,&STR(&Y))
SET DISP = &STR(&X &Y)
END
ELSE +
SET DISP = &STR(&X)
END
END
IF &DDBEGIN = ON AND &SYSINDEX(&STR(UNIT=),&STR(&DATA)) > 0 THEN +
DO
SET A = &SYSINDEX(&STR(UNIT=),&STR(&DATA))
SET A = &A + 5
SET B = &LENGTH(&STR(&DATA))
SET UNIT = &SUBSTR(&A:&B,&STR(&DATA))
SET A = &SYSINDEX(&STR(,),&STR(&UNIT))
IF &A = 0 THEN +
DO
SET A = &SYSINDEX(&STR( ),&STR(&UNIT))
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
SET A = &A - 1
SET UNIT = &SUBSTR(1:&A,&STR(&UNIT))
END
IF &DDBEGIN = ON AND &SYSINDEX(&STR(SPACE=),&STR(&DATA)) > 0 THEN +
DO
SET A = &SYSINDEX(&STR(SPACE=),&STR(&DATA))
SET A = &A + 7
SET B = &LENGTH(&STR(&DATA))
SET SPACE = &SUBSTR(&A:&B,&STR(&DATA))
SET C = &SYSINDEX(&STR(&LPAREN),&STR(&SPACE))
SET C = &C - 2
SET Q = &SYSINDEX(&STR(&RPAREN ),&STR(&SPACE))
IF &Q > 0 THEN +
DO
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
SET X = &SUBSTR(1:&C,&STR(&SPACE))
IF &X = CYL THEN SET &X = CYLINDERS
IF &X = TRK THEN SET &X = TRACKS
IF &X = BLK THEN SET &X = BLOCKS
SET C = &SYSINDEX(&STR(&LPAREN),&STR(&SPACE))
SET C = &C + 1
SET B = &SYSINDEX(&STR(&RPAREN),&STR(&SPACE))
SET B = &B - 1
SET Y = &SUBSTR(&C:&B,&STR(&SPACE))
IF &SYSINDEX(&STR(,RLSE),&STR(&SPACE)) > 1 THEN +
SET Z = RELEASE
ELSE SET Z =
SET SPACE = &STR(SPACE(&Y) &X &Z)
END
IF &DDBEGIN = ON AND &SYSINDEX(&STR(RECFM=),&STR(&DATA)) > 0 THEN +
DO
SET A = &SYSINDEX(&STR(RECFM=),&STR(&DATA))
SET A = &A + 5
SET B = &LENGTH(&STR(&DATA))
SET RECFM = &SUBSTR(&A:&B,&STR(&DATA))
SET A = &SYSINDEX(&STR(,),&STR(&RECFM))
IF &A = 0 THEN +
DO
SET A = &SYSINDEX(&STR(&RPAREN),&STR(&RECFM))
SET Q = &A + 1
IF &SYSINDEX(&STR( ),&STR(&RECFM)) = &Q THEN +
DO
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
END
SET A = &A - 1
SET RECFM = &SUBSTR(1:&A,&STR(&RECFM))
SET F =
SET B =
SET V =
SET M =
SET A =
IF &SYSINDEX(&STR(F),&STR(&RECFM)) > 0 THEN +
SET F = &STR(F )
IF &SYSINDEX(&STR(B),&STR(&RECFM)) > 0 THEN +
SET B = &STR(B )
IF &SYSINDEX(&STR(V),&STR(&RECFM)) > 0 THEN +
SET V = &STR(V )
IF &SYSINDEX(&STR(M),&STR(&RECFM)) > 0 THEN +
SET M = &STR(M )
IF &SYSINDEX(&STR(A),&STR(&RECFM)) > 0 THEN +
SET A = &STR(A )
SET RECFM = &STR(&F&V&B&M&A)
END
IF &DDBEGIN = ON AND &SYSINDEX(&STR(LRECL=),&STR(&DATA)) > 0 THEN +
DO
SET A = &SYSINDEX(&STR(LRECL=),&STR(&DATA))
SET A = &A + 6
SET B = &LENGTH(&STR(&DATA))
SET LRECL = &SUBSTR(&A:&B,&STR(&DATA))
SET A = &SYSINDEX(&STR(,),&STR(&LRECL))
IF &A = 0 THEN +
DO
SET A = &SYSINDEX(&STR(&RPAREN),&STR(&LRECL))
SET Q = &A + 1
IF &SYSINDEX(&STR( ),&STR(&LRECL)) = &Q THEN +
DO
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
END
SET A = &A - 1
SET LRECL = &SUBSTR(1:&A,&STR(&LRECL))
END
IF &DDBEGIN = ON AND &SYSINDEX(&STR(BLKSIZE=),&STR(&DATA)) > 0 THEN +
DO
SET A = &SYSINDEX(&STR(BLKSIZE=),&STR(&DATA))
SET A = &A + 8
SET B = &LENGTH(&STR(&DATA))
SET BLKSIZE = &SUBSTR(&A:&B,&STR(&DATA))
SET A = &SYSINDEX(&STR(,),&STR(&BLKSIZE))
IF &A = 0 THEN +
DO
SET A = &SYSINDEX(&STR(&RPAREN),&STR(&BLKSIZE))
SET Q = &A + 1
IF &SYSINDEX(&STR( ),&STR(&BLKSIZE)) = &Q THEN +
DO
ISREDIT (LX CX) = CURSOR
ISREDIT SEEK P'=' NEXT 1 X
ISREDIT (XDATA) = LINE .ZCSR
IF &SUBSTR(1:3,&STR(&XDATA)) = &STR(// ) AND +
&SYSINDEX(&STR( DD ),&STR(&XDATA)) > 1 THEN +
ISREDIT CURSOR = &LX &CX
ELSE +
DO
ISREDIT CURSOR = &LX &CX
SET DDBEGIN = OFF
SET DDEND = ON
END
END
END
SET A = &A - 1
SET BLKSIZE = &SUBSTR(1:&A,&STR(&BLKSIZE))
END
IF &DDBEGIN = ON AND &SYSINDEX(&STR(SYSOUT=),&STR(&DATA)) > 0 THEN +
DO
SET DISP = &STR(DUMMY)
SET DDBEGIN = OFF
SET DDEND = ON
END
IF &DDEND = ON THEN +
DO
IF &LENGTH(&STR(&PARM)) > 0 THEN +
IF &TLIB = YES THEN +
SET CALL = &STR(TSOPTSKL &PGMNAME &PARM)
ELSE +
SET CALL = &STR(CALL 'SYS2A.LINKLIB(&PGMNAME)' '&PARM')
ELSE +
IF &TLIB = YES THEN +
SET CALL = &STR(TSOPTSKL &PGMNAME)
ELSE +
SET CALL = &STR(CALL 'SYS2A.LINKLIB(&PGMNAME)')
SET PLS = &STR(+)
IF &SWITCHSYS = ON THEN +
DO
SET SWITCHSYS = OFF
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(FREE ATTRLIST(ATTRIB&NUMDD))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET TEMPFREE = &STR(&STRING)
PUTFILE TEMPFREE
SET STRING = &STR(ATTRIB ATTRIB&NUMDD OUTPUT +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( RECFM(F B) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET RECFM =
SET STRING = &STR( LRECL(80) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET LRECL =
SET STRING = &STR( BLKSIZE(23440))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET BLKSIZE =
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(FREE DDNAME(&DDNAME))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET TEMPFREE = &STR(&STRING)
PUTFILE TEMPFREE
SET STRING = &STR(DELETE &DDNAME)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(ALLOC DD(&DDNAME) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( DSN(&DDNAME) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( NEW CATALOG +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( UNIT(SYSDA) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( SPACE(50,1) TRACKS RELEASE +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( USING(ATTRIB&NUMDD))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(OPENFILE &DDNAME OUTPUT)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET X = 1
DO WHILE &X <= &NUMLINE
SET Y = &&LINE&X
SET STRING = &STR(SET &DDNAME = )+
&STR(¦STR(&Y))
IF &LENGTH(&STR(&STRING)) > 70 THEN +
DO
SET A = &LENGTH(&STR(&STRING))
SET STG1 = &SUBSTR(1:70,&STR(&STRING))
SET STG2 = &SUBSTR(71:&A,&STR(&STRING))
SET STG1 = &STR(&STG1+)
SET STG2 = &STR( &STG2)
IF &SYSINDEX(&STR('),&STR(&STG1)) > 0 THEN +
ISREDIT LINE_BEFORE .LABELB = "&STG1"
ELSE +
ISREDIT LINE_BEFORE .LABELB = '&STG1'
IF &SYSINDEX(&STR('),&STR(&STG2)) > 0 THEN +
ISREDIT LINE_BEFORE .LABELB = "&STG2"
ELSE +
ISREDIT LINE_BEFORE .LABELB = '&STG2'
END
ELSE +
IF &SYSINDEX(&STR('),&STR(&STRING)) > 0 THEN +
ISREDIT LINE_BEFORE .LABELB = "&STRING"
ELSE +
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(PUTFILE &DDNAME)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET X = &X + 1
END
SET STRING = &STR(CLOSFILE &DDNAME)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(FREE DDNAME(&DDNAME))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET TEMPFREE = &STR(&STRING)
PUTFILE TEMPFREE
SET STRING = &STR(ALLOC DD(&DDNAME) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( DSN(&DDNAME) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( SHR KEEP)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
END
ELSE +
IF &SYSINDEX(&STR(NEW),&STR(&DISP)) > 0 THEN +
DO
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(FREE ATTRLIST(ATTRIB&NUMDD))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET TEMPFREE = &STR(&STRING)
PUTFILE TEMPFREE
SET STRING = &STR(ATTRIB ATTRIB&NUMDD OUTPUT +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR( RECFM(&RECFM) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET RECFM =
SET STRING = &STR( LRECL(&LRECL) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET LRECL =
SET STRING = &STR( BLKSIZE(&BLKSIZE))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET BLKSIZE =
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(FREE DDNAME(&DDNAME))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET TEMPFREE = &STR(&STRING)
PUTFILE TEMPFREE
SET STRING = &STR(ALLOC DD(&DDNAME) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET DDNAME =
SET X = 1
SET Y = &&DSN&X
IF &NUMDSN > 1 THEN +
DO
SET STRING = &STR( DSN('&Y' +)
ISREDIT LINE_BEFORE .LABELB = "&STRING"
SET DSN&X =
END
ELSE +
DO
SET STRING = &STR( DSN('&Y') +)
ISREDIT LINE_BEFORE .LABELB = "&STRING"
SET DSN&X =
END
SET X = &X + 1
DO WHILE &X < &NUMDSN
SET Y = &&DSN&X
SET STRING = &STR( &STR('&Y') +)
ISREDIT LINE_BEFORE .LABELB = "&STRING"
SET DSN&X =
SET X = &X + 1
END
IF &X = &NUMDSN THEN +
DO
SET Y = &&DSN&X
SET STRING = &STR( &STR('&Y')) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET DSN&X =
END
IF &DISP > THEN +
DO
IF &UNIT = AND +
&SPACE = AND +
&NUMDSN = 0 THEN +
SET PLS =
SET STRING = &STR( &DISP &PLS)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET DISP =
END
IF &UNIT > THEN +
DO
IF &SPACE = AND +
&NUMDSN = 0 THEN +
SET PLS =
SET STRING = &STR( UNIT(&UNIT) &PLS)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET UNIT =
END
IF &SPACE > THEN +
DO
IF &NUMDSN = 0 THEN +
SET PLS =
SET STRING = &STR( &SPACE &PLS)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET SPACE =
END
IF &NUMDSN > 0 THEN +
DO
SET STRING = &STR( USING(ATTRIB&NUMDD))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
END
END
ELSE +
DO
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(FREE DDNAME(&DDNAME))
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET TEMPFREE = &STR(&STRING)
PUTFILE TEMPFREE
SET STRING = &STR(ALLOC DD(&DDNAME) +)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET DDNAME =
SET X = 1
SET Y = &&DSN&X
IF &STR(&Y) > THEN +
DO
IF &NUMDSN > 1 THEN +
DO
SET STRING = &STR( DSN&STR(&LPAREN)'&Y' &STR(&PLUS))
ISREDIT LINE_BEFORE .LABELB = +
"&STRING"
SET DSN&X =
END
ELSE +
DO
SET STRING = &STR( DSN('&Y') +)
ISREDIT LINE_BEFORE .LABELB = +
"&STRING"
SET DSN&X =
END
SET X = &X + 1
DO WHILE &X < &NUMDSN
SET Y = &&DSN&X
SET STRING = &STR( &STR('&Y') &STR(&PLUS))
ISREDIT LINE_BEFORE .LABELB = "&STRING"
SET DSN&X =
SET X = &X + 1
END
IF &X = &NUMDSN THEN +
DO
SET Y = &&DSN&X
SET STRING = &STR( &STR('&Y')&RPAREN +)
ISREDIT LINE_BEFORE .LABELB = +
"&STRING"
SET DSN&X =
END
END
IF &DISP > THEN +
DO
IF &UNIT = AND +
&SPACE = THEN +
SET PLS =
SET STRING = &STR( &DISP &PLS)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET DISP =
END
IF &UNIT > THEN +
DO
IF &SPACE = THEN +
SET PLS =
SET STRING = &STR( UNIT(&UNIT) &PLS)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET UNIT =
END
IF &SPACE > THEN +
DO
SET STRING = &STR( &SPACE)
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET SPACE =
END
END
END
CONTINUE: +
ISREDIT FIND P'=' NEXT 1 X
IF &LASTCC = 0 THEN GOTO LOOP
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = '&STRING'
SET STRING = &STR(&CALL)
ISREDIT LINE_BEFORE .LABELB = "&STRING"
SET STRING = &STR( )
ISREDIT LINE_BEFORE .LABELB = "&STRING"
CLOSFILE TEMPFREE
FREE DDNAME(TEMPFREE)
ISREDIT COPY $&SYSUID BEFORE .LABELB
ISREDIT LABEL .ZCSR = .LABELC
ISREDIT CHANGE ' CATLG ' ' CATALOG ' .LABELA .LABELB ALL
ISREDIT CHANGE '¦' '&&' .LABELA .LABELB ALL
ISREDIT CHANGE ' )' ')' .LABELA .LABELB ALL
ISREDIT DELETE .LABELB .LABELC
ISREDIT RESET
EXIT
HELPSEC: +
CLEAR
WRITE *** HELP FOR EDIT MACRO 'JCLSPLIT' ***
WRITE
WRITE THE JCLCLIST EDIT MACRO WILL TAKE A JOB STEP OF JCL STATEMENTS AND
WRITE CONVERT IT TO CLIST STATEMENTS (I.E. 'ATTRIB', 'ALLOC', 'CALL',
WRITE ETC.).
WRITE
WRITE BASIC SYNTAX :
WRITE
WRITE COMMAND ===> JCLCLIST
WRITE
WRITE THE JOB STEP TO BE CONVERTED MUST BE 'EXCLUDED' (SEE EDIT LINE
WRITE COMMAND HELP FOR HOW TO 'EXCLUDE' A LINE IN AN ISPF EDIT SESSION).
WRITE
WRITE THE FIRST LINE EXCLUDED MUST CONTAIN THE 'EXEC' JCL STATEMENT WITH
WRITE THE 'PGM=' PARAMETER (A JOB STEP WHICH EXECUTES A PROC CANNOT BE
WRITE CONVERTED).
WRITE
WRITE THE CONVERTED CLIST STATEMENTS DO NOT CONSTITUTE A COMPLETE CLIST.
WRITE RATHER, THEY ARE THE 'ROUGH' EQUIVELENT STATEMENTS TO THE JCL IN
WRITE THE CONVERTED JOB STEP.
WRITE
WRITE THE CONVERTED JCL STATEMENTS ARE DELETED FROM THE DATASET BEING
WRITE EDITED.
WRITE
WRITE THE FOLLOWING IS AN EXAMPLE OF THE OUTPUT RECEIVED FROM CONVERTING
WRITE A SIMPLE JOB.
WRITE
WRITE ORIGINAL FILE :
WRITE COMMAND ===>
WRITE 000001 //TFDTDALW JOB (FCEC33,L20A),
WRITE 000002 // 'DAVID LEIGH',
WRITE 000003 // CLASS=S,
WRITE 000004 // MSGCLASS=Y,
WRITE 000005 // NOTIFY=TFDTDAL
WRITE 000006 //JS010 EXEC PGM=WAAPDSUT,
WRITE 000007 // PARM=ABEND
WRITE 000008 //SYSUT1 DD DSN=PCWCA.PWBUF.RB08.HIERARCH(0),
WRITE 000009 // DISP=(SHR,KEEP,KEEP)
WRITE 000010 //SYSUT2 DD DSN=TCWCA.TWBUF.RB08.HIERARCH,
WRITE 000011 // DISP=(NEW,CATLG,DELETE),
WRITE 000012 // UNIT=PERMDA,
WRITE 000013 // SPACE=(TRK,(1,1),RLSE),
WRITE 000014 // DCB=(RECFM=FB,LRECL=2376,BLKSIZE=21384)
WRITE 000015 //SYSPRINT DD SYSOUT=*
WRITE 000016 //SYSUDUMP DD SYSOUT=*
WRITE
WRITE RESULTING FILE :
WRITE
WRITE 000001 //TFDTDALW JOB (FCEC33,L20A),
WRITE 000002 // 'DAVID LEIGH',
WRITE 000003 // CLASS=S,
WRITE 000004 // MSGCLASS=Y,
WRITE 000005 // NOTIFY=TFDTDAL
WRITE 000006
WRITE 000007 FREE DDNAME(SYSUT1)
WRITE 000008 ALLOC DD(SYSUT1) &STR(&PLUS)
WRITE 000009 DSN(PCWCA.PWBUF.RB08.HIERARCH(0)) &STR(&PLUS)
WRITE 000010 SHR KEEP
WRITE 000011
WRITE 000012 FREE ATTRLIST(ATTRIB2)
WRITE 000013 ATTRIB ATTRIB2 OUTPUT &STR(&PLUS)
WRITE 000014 RECFM(F B) &STR(&PLUS)
WRITE 000015 LRECL(2376) &STR(&PLUS)
WRITE 000016 BLKSIZE(21384)
WRITE 000017
WRITE 000018 FREE DDNAME(SYSUT2)
WRITE 000019 ALLOC DD(SYSUT2) &STR(&PLUS)
WRITE 000020 DSN(TCWCA.TWBUF.RB08.HIERARCH) &STR(&PLUS)
WRITE 000021 NEW CATLG &STR(&PLUS)
WRITE 000022 UNIT(PERMDA) &STR(&PLUS)
WRITE 000023 SPACE(1,1) TRACKS RELEASE &STR(&PLUS)
WRITE 000024 USING(ATTRIB2)
WRITE 000025
WRITE 000026 FREE DDNAME(SYSPRINT)
WRITE 000027 ALLOC DD(SYSPRINT) &STR(&PLUS)
WRITE 000028 DUMMY
WRITE 000029
WRITE 000030 FREE DDNAME(SYSUDUMP)
WRITE 000031 ALLOC DD(SYSUDUMP) &STR(&PLUS)
WRITE 000032 DUMMY
WRITE 000033
WRITE 000034 CALL 'SYS2A.LINKLIB(WAAPDSUT)' 'PARM=ABEND'
WRITE
WRITE AS YOU MAY KNOW, CLISTS CANNOT HANDLE RELATIVE GENERATION NUMBERS
WRITE LIKE THE ONE IN SYSUT1. THEREFORE, THAT WOULD BE ONE THING TO
WRITE CHANGE PRIOR TO RUNNING THIS AS A CLIST.
WRITE
WRITE THE JOB CARD INFORMATION AND OTHER REMAINING JCL STATEMENTS WOULD
WRITE HAVE TO BE REMOVED.
WRITE
WRITE 'JCLCLIST' WILL ALSO CHANGE DD'S WITH "SYSOUT=" TO "DUMMY". THESE
WRITE MAY NEED TO BE DEALT WITH ON AN INDIVIDUAL BASIS.
WRITE
WRITE THE PROGRAM BEING EXECUTED WILL BE ASSUMED TO BE FROM THE SYSTEM
WRITE LIBRARY 'SYS2A.LINKLIB'. INDIVIDUALLY WRITTEN PROGRAMS, AND THOSE
WRITE FROM VENDOR SOFTWARE PRODUCTS MAY NOT RESIDE IN THIS LIBRARY.
WRITE THEREFORE, THE 'CALL' STATEMENT MAY NEED TO BE CHANGED. IF THE
WRITE CALLED PROGRAM CONTAINS PARAMETERS WITH SINGLE QUOTES ("'"), MORE
WRITE QUOTES MAY NEED TO BE ADDED DUE TO WAY CLISTS HANDLE SINGLE
WRITE QUOTES.
WRITE
WRITE AS YOU CAN SEE, THIS IS JUST A TOOL TO AID IN CONVERSION FROM JCL
WRITE STATEMENTS TO CLIST STATEMENTS. (IT CAN BE USED EFFECTIVELY TO
WRITE CONVERT A BACKROUND UTILITY TO A FOREGROUND ONE IN A SHORTER
WRITE AMOUNT OF TIME). IT IS NOT, HOWEVER, A COMPLETE CLIST COMMAND
WRITE LANGUAGE GENERATOR. IT NEEDS MANUAL REVIEW AND ADJUSTMENT OF THE
WRITE OUTPUT.
WRITE
WRITE *** END OF HELP *** NO PROCESSING PERFORMED ***
EXIT
Documentation
This edit macro converts JCL code into equivilent (or close) TSO CLIST code.
To execute it, you edit the JCL to be converted; "exclude" the lines which
comprise 1 job step (the first excluded line MUST be the EXEC card); type
JCLCLIST on the command line and press ENTER. The JCL statements will then be
REPLACED by the CLIST statements (i.e. don't do this to JCL you want to save...
make a copy 1st !.) If a dataset name has a relative GDG number, it will not
be converted, but must be dealt with prior to running the CLIST as relative GDG
#'s don't work in CLIST's yet. Steps with STEPLIB will convert to the TSO
TASKLIB facility. Steps without a STEPLIB will convert to the TSO CALL command
and assume the module is in SYS2A.LINKLIB.

0 Comments