当前位置:首页 >

帮忙看看这段程序的问题出在哪里?


C           KEY03       SETGTZEA010R#                   
C                           EXFMTDHA01532                   
C*                                                    
C           LOOP01    TAG                             
C                           READPZEA010R#                 50
C   50                   GOTO STEP99                     
C*                                                    
C           A1OQTY    SUB  A1TQTR    T1BLQT  51       
C           T1BLQT    IFGT 0                          
C   OF                EXCPTOL01                       
C                     EXCPTOL02                       
C                     GOTO LOOP01                     
C                     ELSE                            
C                     GOTO LOOP01                     
C                     END       
  *                                                
C           STEP99    TAG                         
C   50                EXCPTOL99                   
C   50                SETON                     LR
C   LR                RETRN                 


这段程序的正常结果应该是READPZEA010R,如果到了文件头,50指示器亮, 就SETON  LR,程序结束。
但现在程序为什么会循环几次,请帮忙看看?我看着好像没问题,不知道哪里出了问题,头都大了。

 wildfish 回复于:2004-05-21 17:22:31
你用代码的形式贴出来,我一看到这种代码就头晕

 yoyoage 回复于:2004-05-22 10:53:46
干吗不DEBUG看看?

 kevingao 回复于:2004-05-22 22:20:31
DEBUG我试过了,但是找不出什么错啊

 红像 回复于:2004-05-24 09:57:47
这段代码意思表达有问题。

问题1
KEY03先SETGT一下,将游标钉在一个地方(问题就在这里),然后EXFMT画面定住,这个时候改变一些域(改变得域包括KEY03里面的值吗,如果是,那么之前的SETGT就可能是将游标钉错地方了。可能会造成查询次数不足,或者多查。)

问题2
READP是一条一条读,当然会多次循环。


我个人的写法会是这样:
KEY03 CHAIN                  50
readp
(预读一条记录,作为屏幕域的输入参数)
EXFMT

LOVAL SETLL (重置游标到数据库开头)
CHAIN                  50
*IN50 DOWEQ *OFF
处理找到的记录
READE                  50
ENDDO

set lr

大概这样就OK

 天海 回复于:2004-05-31 18:59:40
这样的代码我也看不懂

 红像 回复于:2004-06-01 12:20:36
偶写的伪代码,用来说明流程的,for people, not for compiler

 aeiou 回复于:2004-06-01 13:05:27
你自己也说是要读到文件头才会跳出来。没有读到文件头之前会一直循环,这是正常的啊。

 james68 回复于:2004-06-01 16:56:07
应该用机构化的方法来写.
最基本的少用GOTO 语句
如果这样就好看好查多了

 james68 回复于:2004-06-01 17:12:32
最明显的 你看
   IF  ...
    GOTO LOOP01
   ELSE 
    GOTO LOOP01
   ENDIF


最热门文章推荐:
神舟笔记本
笔记本硬盘
hp笔记本电脑
笔记本无线上网
富士通笔记本
清华同方笔记本
笔记本选购
长城笔记本
 ↓相关文章:
© 2006-2008 All Rights Reserved