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
Другие вопросы по тегам