Domanda

il mio codice va in questo modo:

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

Ecco un file chiamato emp con il record di nome di formato recemp con ecode come la chiave ...

Ora, quando sto leggendo il file e quindi l'aggiornamento del ecode senza utilizzare SETGT ..il puntatore non si muove avanti si sta aggiornando lo stesso valore ecode molte volte ...

Ora quando uso insieme puntatore gt preleva il record successivo, ma forza lavoro quando due valori Ecode sono uguale ... else anche non sarà lavorare con decrescente valori chiave ...

Esiste una soluzione in modo che possa impostare il puntatore a prescindere dal fatto se i valori sono uguali o ascendente o discendente.

È stato utile?

Soluzione

Si vuole update 'ecode' campo in ogni record nel file 'emp' - è corretto? Se è così, basta usare un altro 'leggere' senza 'SETGT' e farà bene.

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 

Altri suggerimenti

Se si desidera aggiornare il valore della chiave in ogni record, si dovrebbe aprire il file in sequenza arrivo (non usare la 'k' nel F-spec). Inoltre, non utilizzare SETGT all'interno del ciclo, a meno che specificamente sta cercando di ignorare i record.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top