2010-04-23 32 views
1

mon code va comme ceci:pointeur Manipulation en mettant à jour une valeur clé dans RPGLE

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 

Voici un fichier nommé emp avec le nom du format d'enregistrement recemp avec ecode comme la clé ...

Maintenant, quand je suis en train de lire le fichier et de mettre à jour l'ecode sans utiliser setgt ..le pointeur ne bouge pas il met à jour la même valeur d'ecode de nombreuses fois ...

Maintenant, quand j'utilise set gt pointer, je sélectionne le prochain enregistrement mais il dint travail lorsque deux valeurs d'ecode sont identiques ... sinon, il ne fonctionnera pas avec d escorter les valeurs de clé ...

Existe-t-il une solution pour que je puisse définir le pointeur indépendamment du fait que les valeurs soient identiques ou croissantes ou décroissantes.

+1

Qu'est-ce que vous essayez de faire ici? Que détient var1? Pouvez-vous clarifier un peu plus votre question? –

+0

ici en fait je suis en train d'essayer de mettre à jour la valeur de la clé afin de mettre le pointeur j'ai mis la valeur de clé mise à jour dans var1 ..... –

Répondre

1

Vous voulez mettre à jour le champ 'ecode' dans chaque enregistrement dans le fichier 'emp' - est-ce exact? Si c'est le cas, utilisez juste un autre 'read' sans 'setgt' et tout ira bien.

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 
+0

pas cher qui ne fonctionne pas le programme montre un comportement anormal il met à jour la même valeur plusieurs fois .... je pense quand nous changeons la valeur clé chaque fois que le chemin d'accès change, c'est pourquoi le pointeur ne se positionne pas à la position appropriée ... est-il possible de gérer cela ... merci –

1

Si vous souhaitez mettre à jour la valeur de clé dans chaque enregistrement, vous devez ouvrir le fichier dans l'ordre d'arrivée (ne pas utiliser le « k » dans la spécification F). De même, n'utilisez pas SETGT dans la boucle sauf si vous essayez spécifiquement d'ignorer les enregistrements.