前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >5分钟懂模块 | 【SAS Says·扩展篇】IML:4.模块

5分钟懂模块 | 【SAS Says·扩展篇】IML:4.模块

作者头像
数说君
发布2018-04-08 11:52:27
6980
发布2018-04-08 11:52:27
举报
文章被收录于专栏:数说工作室

【SAS Says · 扩展篇】IML:创建模块

这是“CIR模型利率期限结构拟合”中的一段代码,出自《金融计算与建模》(朱世武,367页):

注意用红色框框圈住的代码,是IML的模块功能,创建一个模块就像创建一个函数,你可以不断的进行调用。

今天将会结合例子,来认识一下模块功能。

1. 基本语句

创建模块的语句格式为:

创建模块 【SAS Says·扩展篇】

START 模块名;

模块语句;

FINISH;

创建完成后,可以进行调用,格式如下:

调用模块 【SAS Says·扩展篇】

方法一: RUN 模块名; 方法二:

CALL 模块名;

比如:

proc iml;

start a; x=1; print x; finish; call a; quit;

结果如下:

模块还可以嵌套,一个模块中还可以嵌套一个子模块。

2. 不含参数模块和含参数模块

在非参数模块中,所有变量都是全局的,比如下面的例子,模块中的v,在全局也是通用的。

proc iml; a=10; b=20; c=30; d=90; start mod2; v=100; c=25; finish mod2; run mod2; print a b c d v; quit;

但是一旦有参数,就不是全局的了,比如上面的程序稍微修改一下:

proc iml; a=10; b=20; c=30; d=90; start mod2; v=100; c=25; finish mod2; run mod2(2,3); print a b c d v; quit;

log中就会给出提示:

ERROR: Matrix v has not been set to a value.

再举一个含参数模块的例子:

proc iml; a=10; b=20; c=30; d=90; start mod2; v=x+y; c=25; print v; finish mod2; run mod2(a,b); quit;

结果如下:

3. 函数模块

与一般的模块比,函数模块的特点在于可以返回一个单一值,模块中包含一个return的语句,它的语句格式为:

函数模块 【SAS Says·】

Start function(参数);

函数语句;

Return (返回值);

Finish function;

最后再看一个例子:

proc iml; a=10; b=20; start sum(x,y); s=x+y; return (s); finish sum; c=sum(a,b); print a,b,c; quit;

结果是:

结束,恭喜你又学会一个新技能!下节介绍:

如何在SAS中,将数据集和矩阵相互转化.....

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数说工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档