|
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.