专栏首页数说工作室5分钟懂模块 | 【SAS Says·扩展篇】IML:4.模块

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

【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中,将数据集和矩阵相互转化.....

本文分享自微信公众号 - 数说工作室(shushuojun),作者:数说君

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 5分钟看懂模块 || 数说 · 语言

    本文是【SAS Says】系列的扩展篇第四文,5分钟带您看懂IML中的模块功能,它类似于创建一个函数。 用20分钟玩手机,不如花5分钟跟Ansta学习SAS。 ...

    数说君
  • 谈资 | 十日大数据参考

    我们将过去10天里播报的大数据新闻,浓缩成17条精选资讯,您只要在20分钟就可以读完,了解下这个行业的变化吧~ 1. 数说× “各行各业都在装备大数据” 2....

    数说君
  • 【大数据周记】一周大数据News总结(0907-0913)

    1.四位女生用"刷脸支付"改变传统金融 人脸识别技术能带来什么?用户需来到银行,当面核实身份,才会给予办理。若利用人脸识别,该环节就能大大简化。它通过“看脸”...

    数说君
  • Swift + RxSwift MVVM 模块化项目实践

    提高开发效率,降低 Bug 发生率,是我们每个开发所追随的目标。个人认为通过 CocoaPods 实现模块化组件化,积累适合的组件模块,重复利用公用模块,不仅可...

    iOSSir
  • Thinking--IOC思想在前端中的应用

    系统中,经常会出现 A 模块,依赖 B 模块,同时也依赖 C 模块的情况。我们通常的处理方式是将 B、C 模块直接引入到 A 模块中,这个获取过程都在 A 模块...

    奋飛
  • 每天 3 分钟,小闫带你学 Python(二十六)

    An amateur practices until they can play it correctly, a professional practices ...

    小闫同学啊
  • Tip | AS引入他人项目模块

    选择他人项目中模块的地址(把别人项目拉到本地,这里选择要引入模块的本地地址),然后点Next:

    凌川江雪
  • 超详细的Python标准库介绍与基本使用方式!

    应该用 import os 风格而非 from os import *。这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open(...

    诸葛青云
  • 【译】在生产环境中使用原生JavaScript模块

    两年前,我写了一篇有关module/nomodule技术的文章(译者注:原文地址https://philipwalton.com/articles/deploy...

    WecTeam
  • 学界 | MIT周博磊团队:时序关系网络帮助计算机填补视频帧之间的空白

    AI 科技评论按:如果你向一个人仅仅展示一段视频中的几帧,他通常可以推测出视频里发生的是什么事件以及屏幕上会显示出什么。例如,如果我们在视频开始时的帧中看到了一...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券