/*REXX*/ ADDRESS ISREDIT 'MACRO (begcol endcol)' numcheck = DATATYPE(begcol,N) /* DETERMINE IF ANY PARMS HAVE */ IF numcheck ^= 1 THEN /* BEEN PASSED. CHECK NUMERIC */ begcol = 1 numcheck = DATATYPE(endcol,N) IF numcheck ^= 1 THEN 'ISREDIT (endcol) = LRECL' 'ISREDIT (currline) = LINENUM .ZFIRST' /* SAVE STARTING RECORD # */ 'ISREDIT (lastline) = LINENUM .ZLAST' /* SAVE ENDING RECORD # */ 'ISREDIT (cl,cc) = CURSOR' /* SAVE CURSOR POSITION */ delcnt = 0 DO WHILE currline < lastline /* CONTROL LOOP PROCESS */ 'ISREDIT (LINE1) = LINE' currline /* GET FIRST RECORD */ line1 = SUBSTR(line1,begcol, (endcol - begcol) + 1) nextline = currline + 1 'ISREDIT (line2) = LINE' nextline /* GET NEXT RECORD */ line2 = substr(line2,begcol,(endcol - begcol) + 1) IF line1 == line2 THEN /* IF LINES ARE DUPS */ DO 'ISREDIT DELETE' nextline /* DELETE THE DUPLICATE */ lastline = lastline - 1 delcnt = delcnt + 1 END ELSE currline = currline + 1 END 'ISREDIT RESET' IF cl > lastline THEN /* RESET CURSOR LINE TO THE LAST */ cl = lastline /* RECORD IF PREV LINE DELETED */ 'ISREDIT CURSOR = &CL &CC' /* RESTORE CURSOR POSITION */ IF delcnt = 0 THEN DO zedsmsg = 'NO DUPS FOUND' zedlmsg = 'NO DUPLICATE LINES WERE DETECTED' END ELSE DO zedsmsg = delcnt 'DUPS DEL' zedsmsg = delcnt 'DUPLICATE LINES WERE REMOVED' END ADDRESS ISPEXEC 'SETMSG MSG (ISRZ000)' EXIT