• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网
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

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网