开发者

Handling pointer while updating a key value in rpgle

开发者 https://www.devze.com 2022-12-28 10:35 出处:网络
my code goes like this: fempufek disk dvar1s5p 0 c*lovalsetllemp creademp cdownot %eof(emp) Cevalecode = ecode + 10

my code goes like this:

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

Here is a file named emp with record format name recemp with ecode as the key ...

Now when i am reading the file and then updating the ecode without using setgt ..the pointer is not moving ahead it is updating the same ecode value many time ...

Now when i use set gt pointer picks the next record but it dint work when two ecode values are same ...else also it will not be working with descending key valu开发者_开发知识库es...

Is there any solution so that i can set pointer regardless of the fact whether the values are same or ascending or descending.


You want to update 'ecode' field in each record in file 'emp' - is that correct? If so, just use another 'read' without 'setgt' and it will do just fine.

uf e k disk
c *loval setll emp
c read emp
c dow not %eof(emp)
C eval ecode = ecode + 10
c update recemp

c read emp

c enddo
c eval *inlr=*on 


If you want to update the key value in every record, you should open the file in arrival sequence (don't use the 'k' in the F-spec). Also, don't use SETGT inside the loop unless you specifically are trying to skip records.

0

精彩评论

暂无评论...
验证码 换一张
取 消