§262简单程序 最简单的程序仅仅是一个命令列表。执行程序等同于在命 令窗口一行行地输入程序命令。但程序具有在命令窗口键入命 令所不具备的优势:它可以存储命令供日后使用,可以反复执 行程序和每一次做最小限度的修改。 让我们看一个简单的例子:创建一个名为 myprog的新程序, 在命令窗口输入: program myprog 在该程序的窗口中连续键入创建工作文件的命令,在名为 proder的数据库中获取一个序列,进行一次回归,计算残差和 预测,固化预测线性图并且存储结果。程序如下:
-6- §26.2 简单程序 最简单的程序仅仅是一个命令列表。执行程序等同于在命 令窗口一行行地输入程序命令。但程序具有在命令窗口键入命 令所不具备的优势:它可以存储命令供日后使用,可以反复执 行程序和每一次做最小限度的修改。 让我们看一个简单的例子:创建一个名为myprog的新程序, 在命令窗口输入: program myprog 在该程序的窗口中连续键入创建工作文件的命令,在名为 prodemo 的数据库中获取一个序列,进行一次回归,计算残差和 预测,固化预测线性图并且存储结果。程序如下:
housing analysis workfile myhouse m 1968: 31997: 6 fetch progdemo: hsf smpl1968:51992:12 equation regl Is hsf c hsf(-1) regl. makeresid hsfres smpl1993:11997:6 regl forecast hsffit freeze(hsfplot)hsffit line save 程序的第一行是注释,用撇号“”表示。在执行程序的过程中,EVew 将忽略撇号后面的文本文字。在这个程序中,我们以一个存储过的名为 myhouse的工作文件结束,这个工作文件包含hs序列、regl方程、残差序列 hsfresz和预测序列hst、以及预测的线性图 hsfplot。我们可以点击run按钮并 填写对话框来运行该程序。 现在,假设我们要对500家股票价格指数进行相同的分析,则就要把 myhouse转成mysp500,并把对hs的所有操作改成对 socom的操作。程序如
-7- 'housing analysis workfile myhouse m 1968:3 1997:6 fetch progdemo::hsf smpl 1968:5 1992:12 equation reg1.ls hsf c hsf(-1) reg1.makeresid hsfres smpl 1993:1 1997:6 reg1.forecast hsffit freeze(hsfplot) hsffit.line save 程序的第一行是注释,用撇号“’”表示。在执行程序的过程中,EViews 将忽略撇号后面的文本文字。在这个程序中,我们以一个存储过的名为 myhouse的工作文件结束,这个工作文件包含hsf序列、reg1方程、残差序列 hsfres和预测序列hsffit、以及预测的线性图hsfplot。我们可以点击run 按钮并 填写对话框来运行该程序。 现在,假设我们要对500家股票价格指数进行相同的分析,则就要把 myhouse 转成mysp500,并把对hsf的所有操作改成对fspcom的操作。程序如 下:
s&p analysis workfile mysp500 m 1968:3 1997: 6 fetch progdemo: fspcom smpl1968:51992:12 equation regl Is fspcom c fspcom(-1) regl. makeresid fspcomres smpl 1993:119976 regl forecast fspcomfit freeze( complot) fsp comfit 1i Ine save 点击πmn按钮来执行新的分析。点击save按钮在 EViews路径上存储 myprog. prg文件。 因为这两个命令大部分是相同的,所以它看起来是许多相同的输入 却编译两个分离的程序。下面我们将介绍用一个简单的程序参数就可以 解决这个问题
-8- 's&p analysis workfile mysp500 m 1968:3 1997:6 fetch progdemo::fspcom smpl 1968:5 1992:12 equation reg1.ls fspcom c fspcom(-1) reg1.makeresid fspcomres smpl 1993:1 1997:6 reg1.forecast fspcomfit freeze(fscomplot) fspcomfit.line save 点击run 按钮来执行新的分析。点击save 按钮在EViews路径上存储 myprog.prg文件。 因为这两个命令大部分是相同的,所以它看起来是许多相同的输入 却编译两个分离的程序。下面我们将介绍用一个简单的程序参数就可以 解决这个问题
§263程序变量 当我们使用程序来编辑、运行、再运行 EViews命令时,编程语言真正 的功效是来自它对程序变量和控制语句的使用。 1.控制变量 控制变量是在程序中用来代替数据的变量。一旦控制变量被赋值,我 们就可以在程序中任意运用该数据的地方使用该控制变量。控制变量的名 称以!开始,!后面应是一个少于15个字符的合法 EViews名称,例如: I counter 尽管在使用控制变量之前必须对其赋值,但是在未涉及到它之前不需 要申请控制变量。控制变量以普通的方式进行赋值,等号左边是控制变量 的名称,等号右边是赋值表达式,如下面所举的简单例子 X=7 !12345=0 Counter=12 pi=3.14159
-9- §26.3 程序变量 当我们使用程序来编辑、运行、再运行EViews命令时,编程语言真正 的功效是来自它对程序变量和控制语句的使用。 1.控制变量 控制变量是在程序中用来代替数据的变量。一旦控制变量被赋值,我 们就可以在程序中任意运用该数据的地方使用该控制变量。控制变量的名 称以 !开始,!后面应是一个少于15个字符的合法EViews名称,例如: !x !1 !counter 尽管在使用控制变量之前必须对其赋值,但是在未涉及到它之前不需 要申请控制变量。控制变量以普通的方式进行赋值,等号左边是控制变量 的名称,等号右边是赋值表达式,如下面所举的简单例子: !x=7 !12345=0 !counter=12 !pi=3.14159
旦被赋值之后,控制变量便可用于表达式中,例如: Counter=counter+1 genr norm1/sqr(2* pi *exp(-1/2* 2 scalar stdx-x/sqr(!varx) Smpl19501+119604+!1 控制变量值存储于程序的执行期间,并且随着程序的结束也自动释放。 所以,当存储一个工作文件时,控制变量不能随之被存储,但可以通过创 建一个包含控制变量值的 EViews对象来存储控制变量值。例如 scalar stdx-=sqr(!varx) c(100)=!length sample years 1960+!z 1990
-10- 一旦被赋值之后,控制变量便可用于表达式中,例如: !counter=!counter+1 genr dnorm=1/sqr(2*!pi)*exp(-1/2*!epsilon^2) scalar stdx=x/sqr(!varx) smpl 1950:1+!i 1960:4+! i 控制变量值存储于程序的执行期间,并且随着程序的结束也自动释放。 所以,当存储一个工作文件时,控制变量不能随之被存储,但可以通过创 建一个包含控制变量值的EViews对象来存储控制变量值。例如: scalar stdx = sqr(!varx) c(100) = !length sample years 1960+!z 1990