RPGLE Как использовать SETLL и READE для поиска дублирующихся записей для ключевого поля
Может кто-нибудь дать мне пример использования SETLL и READE, чтобы найти повторяющуюся запись для ключевого поля.
В настоящее время файл, с которым я работаю, имеет 3 ключевых поля. Поле, в котором я ищу дубликаты, является вторым ключом в последовательности. Я не уверен, как кодировать это в свободном формате, где я использую READE и SETLL, чтобы найти дубликаты записей.
/free
read filename;
dow not %eof(filename);
SETLL (XXPART)OUTPUTWORKFILE;
IF NOT %EQUAL(OUTPUTWORKFILE);
write OUTPUTWORKFILE;
enddo;
Я знаю, что не могу просто перейти ко второму ключевому полю (XXPART), поэтому мне нужно включить первое ключевое поле (XXPLNT). Просто не уверен, как это сделать в свободной форме. Также неясно, где я должен поставить Reade.
Заранее спасибо.
2 ответа
Я не думаю, что вам нужно reade
делать то, что вы хотите. setll
должно быть достаточно, если вам ничего не нужно из outfile. Обратите внимание, что вы можете использовать составной ключ с setll
,
read filename;
dow not %eof(filename);
setll (xxplnt: xxpart) outputworkfile;
if not %equal(outputworkfile);
write outputworkfile;
endif;
read filename;
enddo;
У @jmarkmurphy есть разумный ответ, но я также думаю, что с SQL это еще проще, если можно.
select xxplnt, xxpart from filename
group by xxplnt, xxpart
having count(*) > 1