| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1337 人关注过本帖
标题:高手帮我看下,这是个怎么变成死循环了?
取消只看楼主 加入收藏
l87233203
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2015-3-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
高手帮我看下,这是个怎么变成死循环了?
IF FILE('dmx.dbf')
  IF USED('dmx')
    SELECT dmx
    DELETE all
    pack
    ELSE
    USE dmx in 0 EXCLUSIVE
    SELECT dmx
    DELETE ALL
    pack
    ENDIF
   ELSE
      CREATE TABLE dmx(股票代码 c(10),rq d,cjhs n(10,2),zrhs n(10,2),ssqs n(10,2),xjqs n(10,2),zrhc n(10,2),cjhc n(10,2),mz n(10,2),nz n(2,0),xz c(10))
   ENDIF
   use
*!*    上面是清除翻译表中的数据记录。

USE C:\Users\13268862888\Desktop\fanyi\dmm.dbf
GO TOP
 k=s

 N=3
 N1=1-N*2/100
 N2=1-N/100
 N3=1+N/100
 N4=1+N*2/100
 
 *!*      DIMENSION a1(1),a2(1),b1(1),b2(1),c1(1),c2(1),d1(1),d2(1),e1(1),e2(1),m(1)
   PUBLIC a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,m
   STORE 0 TO a2,b1,b2,c1,d1,d2,e1,e2
   STORE 0.1 TO c2,a1

LOCATE FOR s>=k*1.06 OR s<=k*0.94

IF FOUND()
   IF s>=k*1.06
      A1=K
      DO ssqs
      DO WHILE EOF()
         DO xjqs
         DO ssqs
      LOOP
     ENDDO
   ELSE
      A2=K     
      DO xjqs
      DO WHILE EOF()
         
         DO ssqs
        
         DO xjqs
         LOOP
      ENDDO
   ENDIF
ELSE
   RETURN
ENDIF


红色里面,是执行第1 个IF ,现在能执行到DO SSQS.这里。但是如果我在接下来的DO WHILE EOF() 在EOF()前面加个NoT条件。怎么就变成死循环了呢?加.NOT.,也是一样。鼠标就变成了忙的了,说明还在执行。

DO XJQS和DO SSQS程序。我单独试过,可以用,也可以跳出的。




2015.04.23
就是缺少一个SKIP语句

DO SSQS  和 DO XJQS,是可以单独跳出的,里面也有DO WHILE 循环的,也有SKIP语句。

.not. EOF()和 not EOF() 和!NOT EOF() 是一个意思。

IF FOUND()
   IF s>=k*1.06
      A1=K
      DO ssqs
      DO WHILE NOT EOF()
*!*             IF EOF()
*!*                EXIT
*!*             ENDIF
*!*             SKIP
         
         DO xjqs
*!*             IF EOF()
*!*                EXIT
*!*             ENDIF
*!*             SKIP
        
         DO ssqs
*!*             IF EOF()
*!*                EXIT
*!*             ENDIF
         SKIP
         
      LOOP
     ENDDO
   ELSE
      A2=K     
      DO xjqs
      DO WHILE NOT EOF()
*!*             IF EOF()
*!*                EXIT
*!*             ENDIF  
*!*             SKIP
            
         DO ssqs
*!*             IF EOF()
*!*                EXIT
*!*             ENDIF
*!*             SKIP
           
         DO xjqs
*!*             IF EOF()
*!*                EXIT
*!*             ENDIF  
         SKIP
              
         LOOP
      ENDDO
   ENDIF
ELSE
   RETURN
ENDIF

这就可以了。一个一个试的。

我的整个程序已经写出来了。

[ 本帖最后由 l87233203 于 2015-4-23 17:56 编辑 ]
2015-04-19 15:22
l87233203
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2015-3-8
收藏
得分:0 
是的,少一个SKIP
2015-04-19 16:20
l87233203
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2015-3-8
收藏
得分:0 
回复 19楼 bccn201304
我问的是外面的循环。

没有问DO SSQS
和DO XJQS
2015-04-23 19:24
l87233203
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2015-3-8
收藏
得分:0 
回复 21楼 hu9jj
反正,我加个skip就可以运行了,不加skip就是死循环,要结合实际,能完成我的任务就行,
2015-04-24 08:32
快速回复:高手帮我看下,这是个怎么变成死循环了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031544 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved