|
Back To LeighWeb Mainframe Utilities Page
View the documentation associated with this module
ISREDIT MACRO (CL1,CL2,CL3,CL4,CL5,CL6,CL7,CL8,CL9,CL10,CL11,CL12)
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
/**********************************************************************/
/* UTILITY NAME : DELDUPS */
/* DATE WRITTEN : 3-13-90 */
/* AUTHOR : DAVE LEIGH */
/* DESCRIPTION : DELETE DUPLICATE RECORDS IN A FILE. */
/*========================== MODIFICATIONS ===========================*/
/* WHO ¦WHEN ¦WHY */
/* --- ¦---- ¦--- */
/* ¦ ¦ */
/**********************************************************************/
IF &NRSTR(&CL1) = &NRSTR(HELP) THEN GOTO HELPSEC
IF &NRSTR(&CL1) = THEN +
DO
ISREDIT (LRECL) = LRECL
SET CL1 = 1
SET CL2 = &LRECL
END
IF (&NRSTR(&CL1) > AND &NRSTR(&CL2) = ) OR +
(&NRSTR(&CL3) > AND &NRSTR(&CL4) = ) OR +
(&NRSTR(&CL5) > AND &NRSTR(&CL6) = ) OR +
(&NRSTR(&CL7) > AND &NRSTR(&CL8) = ) OR +
(&NRSTR(&CL9) > AND &NRSTR(&CL10) = ) OR +
(&NRSTR(&CL11) > AND &NRSTR(&CL12) = ) THEN +
DO
SET ZEDLMSG = &NRSTR(COLUMNS MUST BE SPECIFIED IN PAIRS, +
EVEN IF THE SAME COLUMN)
ISPEXEC SETMSG MSG(UTLZ001)
EXIT
END
IF (&DATATYPE(&NRSTR(&CL1)) ¬= NUM AND &NRSTR(&CL1) > ) OR +
(&DATATYPE(&NRSTR(&CL2)) ¬= NUM AND &NRSTR(&CL2) > ) OR +
(&DATATYPE(&NRSTR(&CL3)) ¬= NUM AND &NRSTR(&CL3) > ) OR +
(&DATATYPE(&NRSTR(&CL4)) ¬= NUM AND &NRSTR(&CL4) > ) OR +
(&DATATYPE(&NRSTR(&CL5)) ¬= NUM AND &NRSTR(&CL5) > ) OR +
(&DATATYPE(&NRSTR(&CL6)) ¬= NUM AND &NRSTR(&CL6) > ) OR +
(&DATATYPE(&NRSTR(&CL7)) ¬= NUM AND &NRSTR(&CL7) > ) OR +
(&DATATYPE(&NRSTR(&CL8)) ¬= NUM AND &NRSTR(&CL8) > ) OR +
(&DATATYPE(&NRSTR(&CL9)) ¬= NUM AND &NRSTR(&CL9) > ) OR +
(&DATATYPE(&NRSTR(&CL10)) ¬= NUM AND &NRSTR(&CL10) > ) OR +
(&DATATYPE(&NRSTR(&CL11)) ¬= NUM AND &NRSTR(&CL11) > ) OR +
(&DATATYPE(&NRSTR(&CL12)) ¬= NUM AND &NRSTR(&CL12) > ) THEN +
DO
SET ZEDLMSG = &NRSTR("DELDUPS" ARGUMENTS MUST BE NUMERIC)
ISPEXEC SETMSG MSG(UTLZ001)
EXIT
END
IF &NRSTR(&CL1) = 0 OR +
&NRSTR(&CL2) = 0 OR +
&NRSTR(&CL3) = 0 OR +
&NRSTR(&CL4) = 0 OR +
&NRSTR(&CL5) = 0 OR +
&NRSTR(&CL6) = 0 OR +
&NRSTR(&CL7) = 0 OR +
&NRSTR(&CL8) = 0 OR +
&NRSTR(&CL9) = 0 OR +
&NRSTR(&CL10) = 0 OR +
&NRSTR(&CL11) = 0 OR +
&NRSTR(&CL12) = 0 THEN +
DO
SET ZEDLMSG = &NRSTR(ZERO IS NOT A VALID COLUMN)
ISPEXEC SETMSG MSG(UTLZ001)
EXIT
END
IF &CL1 > &CL2 OR +
&CL3 > &CL4 OR +
&CL5 > &CL6 OR +
&CL7 > &CL8 OR +
&CL9 > &CL10 OR +
&CL11 > &CL12 THEN +
DO
SET ZEDLMSG = &NRSTR(2ND COLUMN IN A PAIR MUST BE > OR = +
TO THE 1ST COLUMN IN A PAIR)
ISPEXEC SETMSG MSG(UTLZ001)
EXIT
END
ISREDIT SORT +
&CL1 &CL2 &CL3 &CL4 &CL5 &CL6 &CL7 &CL8 &CL9 &CL10 &CL11 &C12
IF &LASTCC > 4 THEN +
DO
SET ZEDLMSG = &NRSTR(PROBLEM WITH THE "DELDUPS" SORT STEP)
ISPEXEC SETMSG MSG(UTLZ001)
EXIT
END
ISREDIT FIND FIRST P'=' 1
ISREDIT LINE_BEFORE .ZCSR = ' '
ISREDIT FIND FIRST P'=' 1
ISREDIT CHANGE P'=' X'FF' ALL .ZCSR .ZCSR
ISREDIT (FFFFLINE) = LINE .ZCSR
ISREDIT FIND FIRST P'=' 1
IF &LASTCC = 0 THEN +
DO
ISREDIT (DLINE) = LINE .ZCSR
IF &CL2 > THEN SET SAVE1 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL4 > THEN SET SAVE2 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL6 > THEN SET SAVE3 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL8 > THEN SET SAVE4 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL10 > THEN SET SAVE5 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL12 > THEN SET SAVE6 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
END
ISREDIT FIND NEXT P'=' 1
SET SAVECC = &LASTCC
DO WHILE &SAVECC = 0
ISREDIT (DLINE) = LINE .ZCSR
SET PART1 =
SET PART2 =
SET PART3 =
SET PART4 =
SET PART5 =
SET PART6 =
IF &CL2 > THEN SET PART1 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL4 > THEN SET PART2 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL6 > THEN SET PART3 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL8 > THEN SET PART4 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL10 > THEN SET PART5 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &CL12 > THEN SET PART6 = &SUBSTR(&CL1:&CL2,&NRSTR(&DLINE))
IF &NRSTR(&PART1) = &NRSTR(&SAVE1) AND +
&NRSTR(&PART2) = &NRSTR(&SAVE2) AND +
&NRSTR(&PART3) = &NRSTR(&SAVE3) AND +
&NRSTR(&PART4) = &NRSTR(&SAVE4) AND +
&NRSTR(&PART5) = &NRSTR(&SAVE5) AND +
&NRSTR(&PART6) = &NRSTR(&SAVE6) THEN +
ISREDIT LINE .ZCSR = '&FFFFLINE'
SET SAVE1 = &NRSTR(&PART1)
SET SAVE2 = &NRSTR(&PART2)
SET SAVE3 = &NRSTR(&PART3)
SET SAVE4 = &NRSTR(&PART4)
SET SAVE5 = &NRSTR(&PART5)
SET SAVE6 = &NRSTR(&PART6)
ISREDIT FIND NEXT P'=' 1
SET SAVECC = &LASTCC
END
ISREDIT RESET ALL
ISREDIT EXCLUDE ALL
ISREDIT FIND ALL '&FFFFLINE'
ISREDIT DELETE ALL NX
ISREDIT RESET
EXIT
HELPSEC: + 02480000
ISPEXEC SELECT PGM(ISPTUTOR) PARM(HELPSHEL) 02490000
SET ZEDLMSG = &STR(*** HELP DISPLAYED FOR DELDUPS UTILITY + 02490000
*** NO PROCESSING PERFORMED ***) 02490000
ISPEXEC SETMSG MSG(UTLZ000) 02490000
EXIT
|
|