在某些情况下,我们可能希望只有当一个或者几个条件被满足时,才多次重复执行一些命令。与FOR循环语句类似,While循环语句允许用户重复执行命令,但是While循环在设定循环所需要满足的条件方面为用户提供了更大的灵活性。
While循环语句以关键字while开始,以关键字wend结束。在这两个关键字之间,允许用户编写任意数量的命令行,而且While循环允许进行循环嵌套。While循环的声明部分由关键字while后面接包含控制变量的表达式构成。表达式应该要有逻辑值(真或假)或者数值,对于表达式为数值的情况,零值被认为是假,任何非零的数值表示为真。若表达式为真,则直到关键字wend之前的所有命令都将被执行,然后该过程被重复执行。若表达式为假,则EViews将跳过下面的命令,继续执行程序中关键字wend后面的其他命令。例如:
!val=1 !a=1 while !val<10000 and !a<10 smpl 1950q1 1970q1+!a series inc{!val}=income/!val !val=!val*10 !a=!a+1 wend
该While循环包含四部分:第一部分是循环控制变量的初始化,应用于循环控制测试条件中;第二部分是包含循环测试条件的While循环声明;第三部分是更新控制变量的声明;最后一部分是以关键字wend来结束循环。
与FOR循环不同的是,While循环并不在循环测试条件中更新控制变量。因此,用户必须在循环语句中包含确切的说明语句来改变控制变量的值,否则循环将永远不会停止下来。可以使用F1键来终止执行包含死循环的程序。
在上述例子中,While循环包含改变控制变量的声明,事实上,使用While循环可以使程序看起来更加清晰。例如:
!i=1 while !i<=25 vector a{!i} !i=!i+1 wend