1

私のコードは次のようになります:

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

これは、キーとして ecode を持つレコード形式名 recemp の emp という名前のファイルです...

ファイルを読み込んでから、setgt を使用せずに ecode を更新すると、ポインタが先に移動せず、同じ ecode 値を何度も更新しています ...

set gt ポインターを使用すると、次のレコードが選択されますが、2 つの ecode 値が同じ場合は機能しません...それ以外の場合は、降順のキー値でも機能しません...

値が同じか、昇順か降順かに関係なく、ポインターを設定できるようにするための解決策はありますか。

4

2 に答える 2

1

ファイル'emp'の各レコードの'ecode'フィールドを更新したい-それは正しいですか?その場合は、「setgt」なしで別の「read」を使用するだけで問題ありません。

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 
于 2010-04-23T14:27:18.083 に答える
1

すべてのレコードのキー値を更新する場合は、ファイルを到着順に開く必要があります (F 仕様で「k」を使用しないでください)。また、特にレコードをスキップしようとしている場合を除き、ループ内で SETGT を使用しないでください。

于 2010-04-28T05:16:55.233 に答える