Manipolazione puntatore durante l'aggiornamento di un valore chiave in rpgle
-
01-10-2019 - |
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.
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.