|
Hello: I would like my program to delete duplicate records in a file. I'm trying to: 1) READ A RECORD 2) STORE THAT RECORD IN A DATA STRUCTURE 3) COMPARE DATA STRUCTURE AGAINST ARRAY THAT HOLDS RECORDS ALREADY READ FROM FILE -Delete any matches found -Add Array Element if no matches found If there is any easier way to program this, I'd like to hear it. Any ideas or help would be appreciated. Thanks, Frank * ---------- * Files Used * ---------- FUSERTIME UF E K DISK * FWK5 D Z S 4S 0 FWK5 D Y S 4S 0 * * --------- * RECORD_DS * --------- D RECORD_DS DS D DSCMPLNT# LIKE(CMPLNT#) D DSOT LIKE(OT) D DSPRO LIKE(PRO) D DSCMPLNTCD LIKE(CMPLNTCD) D DSCUSTRESP LIKE(CUSTRESP) D DSCUSTNAM LIKE(CUSTNAM) D DSRESPVIA LIKE(RESPVIA) D DSINVSTBY LIKE(INVSTBY) D DSSUB_UNSUB LIKE(SUB_UNSUB) D DSROOT1 LIKE(ROOT1) D DSROOT1DESC LIKE(ROOT1DESC) D DSROOT2 LIKE(ROOT2) D DSROOT2DESC LIKE(ROOT2DESC) D DSROOT3 LIKE(ROOT3) D DSROOT3DESC LIKE(ROOT3DESC) D DSROOT4 LIKE(ROOT4) D DSROOT4DESC LIKE(ROOT4DESC) D DSROOT5 LIKE(ROOT5) D DSROOT5DESC LIKE(ROOT5DESC) D DSOTHER_ROOT LIKE(OTHER_ROOT) D DSSUPP_CORP LIKE(SUPP_CORP) D DSSUPPCORPD1 LIKE(SUPPCORPD1) D DSSUPPCORPD2 LIKE(SUPPCORPD2) D DSOTHERCONT1 LIKE(OTHERCONT1) D DSOTHERCONT2 LIKE(OTHERCONT2) D DSACTTAKE LIKE(ACTTAKE) D DSCUSTCONT LIKE(CUSTCONT) D DSCLOSECMP LIKE(CLOSECMP) D DSEMAILSVC LIKE(EMAILSVC) D DSCLOSED_BY LIKE(CLOSED_BY) D DSCLOSED_DT LIKE(CLOSED_DT) D DSCLOSED_TM LIKE(CLOSED_TM) D DSRESO_VERI LIKE(RESO_VERI) D DSLNGTRMRESO LIKE(LNGTRMRESO) D DSCSTPHN LIKE(CSTPHN) D DSCSTPHX LIKE(CSTPHX) D DSCALLBK LIKE(CALLBK) D DSISSDTL LIKE(ISSDTL) D DSCODAMT LIKE(CODAMT) D DSINQCOD LIKE(INQCOD) D DSDSPCOD LIKE(DSPCOD) D DSDSPAMT LIKE(DSPAMT) D DSDSPFND LIKE(DSPFND) D DSFNDAMT LIKE(FNDAMT) D DSOTHCOD LIKE(OTHCOD) D DSOTHEXP LIKE(OTHEXP) D DSOT2 LIKE(OT2) D DSPRO2 LIKE(PRO2) D DSNUMPCS LIKE(NUMPCS) D DSLABDS1 LIKE(LABDS1) D DSLABDS2 LIKE(LABDS2) D DSFRTDES LIKE(FRTDES) D DSSHPSHT LIKE(SHPSHT) D DSCSTFAX LIKE(CSTFAX) * * --------- * RECORD_AR * --------- D RECORD_AR DIM(9999) OVERLAY(RECORD_DS) * * -------- * BLANK_DS * -------- D BLANK_DS DS D BDCMPLNT# LIKE(CMPLNT#) INZ(0) D BDOT LIKE(OT) INZ(0) D BDPRO LIKE(PRO) INZ(0) D BDCMPLNTCD LIKE(CMPLNTCD) INZ(*BLANKS) D BDCUSTRESP LIKE(CUSTRESP) INZ(*BLANKS) D BDCUSTNAM LIKE(CUSTNAM) INZ(*BLANKS) D BDRESPVIA LIKE(RESPVIA) INZ(*BLANKS) D BDINVSTBY LIKE(INVSTBY) INZ(*BLANKS) D BDSUB_UNSUB LIKE(SUB_UNSUB) INZ(*BLANKS) D BDROOT1 LIKE(ROOT1) INZ(*BLANKS) D BDROOT1DESC LIKE(ROOT1DESC) INZ(*BLANKS) D BDROOT2 LIKE(ROOT2) INZ(*BLANKS) D BDROOT2DESC LIKE(ROOT2DESC) INZ(*BLANKS) D BDROOT3 LIKE(ROOT3) INZ(*BLANKS) D BDROOT3DESC LIKE(ROOT3DESC) INZ(*BLANKS) D BDROOT4 LIKE(ROOT4) INZ(*BLANKS) D BDROOT4DESC LIKE(ROOT4DESC) INZ(*BLANKS) D BDROOT5 LIKE(ROOT5) INZ(*BLANKS) D BDROOT5DESC LIKE(ROOT5DESC) INZ(*BLANKS) D BDOTHER_ROOT LIKE(OTHER_ROOT) INZ(*BLANKS) D BDSUPP_CORP LIKE(SUPP_CORP) INZ(*BLANKS) D BDSUPPCORPD1 LIKE(SUPPCORPD1) INZ(*BLANKS) D BDSUPPCORPD2 LIKE(SUPPCORPD2) INZ(*BLANKS) D BDOTHERCONT1 LIKE(OTHERCONT1) INZ(*BLANKS) D BDOTHERCONT2 LIKE(OTHERCONT2) INZ(*BLANKS) D BDACTTAKE LIKE(ACTTAKE) INZ(*BLANKS) D BDCUSTCONT LIKE(CUSTCONT) INZ(*BLANKS) D BDCLOSECMP LIKE(CLOSECMP) INZ(*BLANKS) D BDEMAILSVC LIKE(EMAILSVC) INZ(*BLANKS) D BDCLOSED_BY LIKE(CLOSED_BY) INZ(*BLANKS) D BDCLOSED_DT LIKE(CLOSED_DT) INZ(0) D BDCLOSED_TM LIKE(CLOSED_TM) INZ(0) D BDRESO_VERI LIKE(RESO_VERI) INZ(*BLANKS) D BDLNGTRMRESO LIKE(LNGTRMRESO) INZ(*BLANKS) D BDCSTPHN LIKE(CSTPHN) INZ(*BLANKS) D BDCSTPHX LIKE(CSTPHX) INZ(*BLANKS) D BDCALLBK LIKE(CALLBK) INZ(*BLANKS) D BDISSDTL LIKE(ISSDTL) INZ(*BLANKS) D BDCODAMT LIKE(CODAMT) INZ(0) D BDINQCOD LIKE(INQCOD) INZ(*BLANKS) D BDDSPCOD LIKE(DSPCOD) INZ(*BLANKS) D BDDSPAMT LIKE(DSPAMT) INZ(0) D BDDSPFND LIKE(DSPFND) INZ(*BLANKS) D BDFNDAMT LIKE(FNDAMT) INZ(*BLANKS) D BDOTHCOD LIKE(OTHCOD) INZ(*BLANKS) D BDOTHEXP LIKE(OTHEXP) INZ(*BLANKS) D BDOT2 LIKE(OT2) INZ(0) D BDPRO2 LIKE(PRO2) INZ(0) D BDNUMPCS LIKE(NUMPCS) INZ(0) D BDLABDS1 LIKE(LABDS1) INZ(*BLANKS) D BDLABDS2 LIKE(LABDS2) INZ(*BLANKS) D BDFRTDES LIKE(FRTDES) INZ(*BLANKS) D BDSHPSHT LIKE(SHPSHT) INZ(*BLANKS) D BDCSTFAX LIKE(CSTFAX) INZ(*BLANKS) * * -------------------------------------------------- * Find and Delete Duplicate Records in USERTIME file * -------------------------------------------------- FWK5 C *LOVAL SETLL USERTIME | C DOU %EOF(USERTIME) | C READ USERTIME | C IF %EOF(USERTIME) | C LEAVE | C ENDIF | * | * Move Record into Data Structure | C MOVE RUSERTIM RECORD_DS | * | * Find out if Record Already Exists | C 1 DO 999 Z | * | * Last Array Element Processing | C IF Z = 999 AND (RECORD_AR(Z) <> RECORD_DS) | C 1 DO 999 Y | * | * Store Record in First Blank Array Element | * Array Element Isn't Blank; Get Next Array Element | C IF RECORD_AR(Y) <> BLANK_DS | C ITER | C ENDIF | * Blank Array Element; Store Record in Array; Leave Loop | C IF RECORD_AR(Y) = BLANK_DS | C EVAL RECORD_AR(Y) = RECORD_DS | C LEAVE | C ENDIF | C ENDDO | C ENDIF | * | * Record NOT-Equal to Array Element; Get next Array Element | C IF RECORD_AR(Z) <> RECORD_DS | C ITER | C ENDIF | * | * Record Equal to Array Element; Delete Record; Leave Loop | C IF RECORD_AR(Z) = RECORD_DS | C DELETE RUSERTIM | C LEAVE | C ENDIF | * | C ENDDO | * 1 DO 999 Z | * FWK5 C ENDDO * DOU %EOF(USERTIME)
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.