- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EViews 命令和编程之子程序
子程序是用以重复执行给定任务的一组命令的集合,执行时可能存在少
许的不同,但它并不是一组实际命令的拷贝。可以从一个程序中运用子
程序去执行另一个程序中的相同任务。
一、定义子程序(Defining Subroutines)
一个子程序由关键字subroutine 打头后接子程序名和任意给定的形式
参数,而以关键字endsub 结束。两个关键字之间可以存在任意数量的
命令行。最简单的子程序具有如下的形式:
subroutine z_square
series x = z^2
endsub
这里,关键字subroutine 之后仅有一个子程序名。每次调用这类没有
形式参数的子程序时,它都表现出相同的行为。这个子程序构造一个已
有序列Z 的平方,并将平方值保存到新序列X 中。
运用return 命令可在任何时候强制EViews 从子程序中退出。如果侦察
到了一个不可预知的错误,通常就运用return 命令从子程序中退出。
下列程序中如果很查到不能计算Durbin_h 统计量就从子程序中退出。
Durbin_h 统计量是检验具有滞后因变量序列相关用的。(参见Gr ne,
1997, p.596 or Davidson and MacKinnon, 1993, p.360)
subroutine durbin_h
equation eqn.ls cs c cs(-1) inc
scalar test=1-eqn.@regobs*eqn.@cov(2,2)
an error is indicated by test being nonpositiv
if test=0 then
return exit on error
endif
compute h statistic if test positiv
scalar h=(1-eqn.@dw/2)*sqr(eqn.@regobs/test)
endsub
二、具有形式参数的子程序 (Subroutine with arguments)
迄今为止编写的都是使用一组指定变量进行工作的子程序。一般说来,
子程序是可以获取形式参数的。如果熟悉其它程序设计语言,或许早就
明了,每次调用子程序时运用形式参数可以改变一组命令的行为。即使
还没有接触过子程序,对数学中的类似概念总是熟悉的。定义了一个函
数,例如
其中函数f 是有赖于形式参数x 的。x 只不过是在定义函数时占据了一
个位置,而且它实际上并不代表什么。定义了这个函数以后,如果要计
算实际数值譬如.7839 的函数值时,就可以简单地写成f(.7839)。如果
要计算不同数值譬如.50123 的函数值,也只不过写成f(.50123)。通过
定义函数,使我们免去了计算不同数值的函数值时,要把整个表达式
出来的烦琐。
定义具有形式参数的子程序,由subroutine 打头,后接一个子程序名,
而后是左括号,用逗号间隔的形式参数,最后是右括号。每个形式参数
在EViews 对象类型名后再列出形式参数名。控制变量作为数值量
(scalar)型,字符串变量作为字符型(string)允许出现在形式参数
中。例如,
subroutine power(series v, series y, scalar p)
v=y^p
endsu
这个子程序扩展了subroutine Z_SQUARE 子程序的功能。POWER 子程序
的功能是计算指定序列Y 的P 次幂,并将结果置于序列V 中。调用子程
序POWER 要分别用两个序列名和一个数值填充到形式参数的位置。如果
设V 等于X,Y 等于Z,P 等于2,去调用POWER 子程序,将会得到与上
述子程序Z_SQUARE 等价的结果。
三、子程序的布局(Subroutine Placement )
定义的子程序可以按任何顺序置于程序开始的位置。但是,这些子程序
并不会执行,除非在程序中利用Call 语句调用它们,它们才被执行。
例如,
subroutine z_square
series x=z^2
endsub
start of program execution
load mywor
fetch z
call z_square
这个程序从load (加载)语句开始执行;而滑过了定义的子程序,仅当
在程序的最后一行调用()它时,子程序才被执行。
定义子程序的subroutine 不能发生交叉。下一个subroutine 只能出现
在上一个子程序的sunend 以后。子程序间可以互相调用,甚至可以调
用自身。
将经常
原创力文档


文档评论(0)