在许多情况下,用户可能希望只有在某些条件被满足时才执行命令。EViews使用IF/ENDIF语句来表示所设定的条件和需要执行的命令。
IF语句以关键字if开始,后面接条件表达式,接着是关键字then。在条件表达式中,经常使用逻辑运算符and和or,如果需要还可以加上圆括号。若表达式为真,则直到关键字endif之前的所有命令都将被执行;若表达式为假,则所有的命令都被跳过而执行下面的命令。表达式也可以是数值,此时,零值表示假,所有非零的数值都为真。例如,有如下IF语句:
if !stand=1 or (!rescale=1 and !redo=1) then series gnpstd=gnp/@sqr(gvar) series constd=cons/@sqr(cvar) endif if !a>5 and !a<10 then smpl 1950q1 1970q1+!a endif if !scale then series newage=age/!scale endif
需要注意的是,命令行的所有缩进都是为了使得程序看起来更清楚,其对程序的执行没有任何的影响。此外,IF语句还可以带有ELSE分句,ELSE分句所包含的命令在条件表达式为假时才被执行。若条件表达式为真,则在关键字else之前的所有命令都被执行;若条件表达式为假,则所有在关键字else和endif之间的命令都会被执行。例如,有如下IF语句:
if !scale>0 then series newage=age/!scale else series newage=age endif
IF语句也可以被用于字符串变量中以及进行IF语句的嵌套。例如,有如下IF语句:
当用户在IF语句中使用了序列或者矩阵进行比较时,需要注意的是,表达式中只有当对象中的每个元素之间的比较都为真时,表达式才为真。例如,对于序列x和序列y,有如下IF语句:
if x<>y then [一段程序] endif
当序列x的任何一个元素和序列y中相应的元素不相等时,条件表达式才为真。对于x和y都是同等维度的向量或者矩阵的情况,也是对x和y的所有元素进行比较。