Обработка указателя при обновлении значения ключа в rpgle - PullRequest
1 голос
/ 23 апреля 2010

мой код выглядит так:

femp        uf   e           k disk                   
dvar1             s              5p 0                
c     *loval        setll     emp                   
c                   read      emp                   
c                   dow       not %eof(emp)         
C                   eval      ecode = ecode + 10     
c                   eval      var1=ecode             
c                   update    recemp               

c     var1          setgt     emp                   
c                   read      emp                   
c                   enddo                            
c                   eval      *inlr=*on

Вот файл с именем emp, в котором записывается имя формата приёмки с ключом ecode ...

Теперь, когда я читаю файл, а затем обновляю ecode без использования setgt .. указатель не движется вперед, он много раз обновляет одно и то же значение ecode ...

Теперь, когда я использую set, указатель gt выбирает следующую запись, но он не работает, когда два значения ecode одинаковы ... иначе также он не будет работать с нисходящими значениями ключа ...

Есть ли какое-либо решение, чтобы я мог установить указатель независимо от того, являются ли значения одинаковыми или восходящими или нисходящими.

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

Если вы хотите обновить значение ключа в каждой записи, вы должны открыть файл в последовательности поступления (не используйте 'k' в F-спецификации). Кроме того, не используйте SETGT внутри цикла, если вы специально не пытаетесь пропустить записи.

1 голос
/ 23 апреля 2010

Вы хотите обновить поле 'ecode' в каждой записи в файле 'emp' - это правильно?Если это так, просто используйте другое «read» без «setgt», и все будет хорошо.

...