2010-04-23 2 views
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 ..the 포인터를 사용하지 않고 ecode를 업데이트하고있다. 포인터가 앞으로 움직이지 않고 많은 ecode 값을 갱신하고있다 ...

이제 gt 포인터는 다음 레코드를 선택하지만 dint는 두 개의 ecode 값이 같을 때 작동합니다 ... 그렇지 않으면 d와 함께 작동하지 않습니다. escending 키 값 ...

값이 같은지 오름차순인지 내림차순인지에 관계없이 포인터를 설정할 수있는 솔루션이 있습니까?

+1

여기서 무엇을하려고합니까? var1은 무엇을 유지합니까? 조금 더 질문을 명확히 할 수 있습니까? –

+0

사실 여기에 포인터를 설정하기 위해 키 값을 업데이트하려고합니다. var1에 업데이트 된 키의 값을 넣었습니다 ..... –

답변

1

'emp'파일의 각 레코드에서 'ecode'필드를 업데이트하고 싶습니다. 맞습니까? 그렇다면 'setgt'없이 다른 '읽기'를 사용하면 정상적으로 작동합니다.

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

프로그램을 작동하지 않는 것이 동일한 비정상적인 동작을 보여주고 있습니다 여러 번 .... 나는 포인터가 적절한 위치로 설정되지 않은 이유는 액세스 경로를 변경 때마다 핵심 가치를 변경할 때 생각 ...이 방법을 처리하는 것입니다 ... 감사합니다 Logged –

1

당신은 모든 레코드의 키 값을 업데이트하려면, 당신은 도착 순서대로 파일을 삭제합니다 (F-사양의 'K'를 사용하지 않는) 열립니다. 또한 특별히 레코드를 건너 뛰지 않는 한 루프 내에서 SETGT를 사용하지 마십시오.

관련 문제