Search code examples
ibm-midrangerpgle

Handling pointer while updating a key value in rpgle


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 values...

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


Solution

  • 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