Go to LeighWeb Home Page            

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