|
L1 is an exelent option. I didn't want to create he logical file, so I
have used SQL. First, find out how many records are dupicated:
> SELECT NCLIE, TESTAD, TELEF, count(*) FROM b.telefonos GROUP BY
NCLIE, TESTAD, TELEF HAVING count(*) > 1
Deleting from the same file should work, but it is a lot faster to use a
"work file":
> insert into duplicados SELECT dupli from
(SELECT NCLIE, TESTAD, TELEF, count(*), max(rrn(t)) dupli
FROM b.telefonos t GROUP BY NCLIE, TESTAD, TELEF HAVING count(*) >
1) d
5 fila(s) insertada(s) en DUPLICADOS.
> delete from b.telefonos x where rrn(x) in (SELECT dupli from
duplicados )
This procedure deletes one of the copies, in the first step I found that
some records where two times and others tree. I had to repeat the select
and delete for the records that where tree times.
If you have to many duplicates, it may be more efficient to create one
record for each key, and delete the rest.
_________________________________________________________________________________
Buck wrote:
I would like my program to delete duplicate records in a file.
This is what I would do
1) FMTDTA/OPNQRYF/logical file to put the records in order
by the whole record.
2) Program describe the file and put L1 in the Level break column.
3) NL1, delete the record.
An alternative is to read every record and CHAIN to itself to see if it's a
duplicate. You can use a logical with a different name from the physical
but with the same key.
Something to get the discussion started.
--buck
_______________________________________________
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.
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.