RPGLE Как использовать SETLL и READE для поиска дублирующихся записей для ключевого поля - PullRequest
0 голосов
/ 04 мая 2018

Может кто-нибудь привести пример использования SETLL и READE для поиска дублирующейся записи для ключевого поля.

В настоящее время файл, с которым я работаю, имеет 3 ключевых поля. Поле, в котором я ищу дубликаты, является вторым ключом в последовательности. Я не уверен, как кодировать это в свободном формате, где я использую READE и SETLL, чтобы найти дубликаты записей.

/free
read filename;              

dow not %eof(filename);     


SETLL (XXPART)OUTPUTWORKFILE; 
IF NOT %EQUAL(OUTPUTWORKFILE);
write OUTPUTWORKFILE;  
enddo;      

Я знаю, что не могу просто перейти ко второму ключевому полю (XXPART), поэтому мне нужно включить первое ключевое поле (XXPLNT). Просто не уверен, как это сделать в свободной форме. Также неясно, куда мне положить реаду.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

@ jmarkmurphy дает разумный ответ, но я также думаю, что с SQL это проще, если можно.

select xxplnt, xxpart from filename
group by xxplnt, xxpart
having count(*) > 1
0 голосов
/ 04 мая 2018

Я не думаю, что вам нужно reade, чтобы делать то, что вы хотите. setll должно быть достаточно, если вам ничего не нужно из outfile. Обратите внимание, что вы можете использовать составной ключ с setll.

read filename;              
dow not %eof(filename);     
  setll (xxplnt: xxpart) outputworkfile;
  if not %equal(outputworkfile);
    write outputworkfile;
  endif;
  read filename;
enddo;
...