宏系列指南
SAS宏是SAS大师不可或缺的技能,因为它足够强大,可以大大提高程序开发的效率。把你的时间和精力放在更有价值的事情上。
宏系列文章将一一呈现SAS Macro,带你走上从认识宏到熟练使用宏的道路。掌握SAS宏会让你的SAS编程能力上一段楼梯。
增长
时期
介绍了最后一篇文章“”。在每一种编程语言中,有些字符都有特殊的含义,但在某些情况下,我们并不需要它们有特殊的含义,只是把它们作为一个字符来使用。宏语言也不例外。如果您想使用具有特殊含义的字符作为普通字符,您需要使用宏引用。所以简单来说,宏引用就是隐藏宏语言中具有特殊功能的字符的功能。
背
参加
宏观系列(13)——宏观故事
本期介绍宏存储的话题,如何存储宏程序方便每次调用。也可以在团队内部共享,让整个团队提高工作效率。同时可以对一些核心程序进行编译存储,在与他人共享的同时保护源代码。
一般我们调用自定义宏程序时,需要运行一次宏程序的定义部分(即%MACRO语句和%MEND语句)。运行完这部分宏程序定义后,SAS会编译宏程序,存储在WORK的目录中。SASMACR如果不先运行自定义宏程序的定义部分就直接调用宏程序,SAS会提示没有这样的宏程序。
当SAS关闭再开启时。如果要再次调用自定义宏程序,还需要再次运行宏程序的定义部分。那么,有什么方法可以方便地重用宏程序呢?
1.最直接的方法
最常用的方法是上面提到的手工执行。将所有宏程序定义保存在一个SAS程序中,在SAS中打开这个程序,运行整个程序编译所有宏程序;或者选择性的运行一些宏程序的定义,编译一些宏程序使用。编译后的宏程序将存储在工作目录中。SASMACR..例如:
小费
要注意SASAUTOS= system选项,因为SAS启动的时候会初始化一些Autocall库,所以SASAUTOS会有一个默认值。如果直接覆盖SASAUTOS的值,SAS系统附带的宏将不可用。因此,赋值时,添加默认的SASAUTOS值。
SASAUTOS的默认值可以在SAS启动配置文件“sasv9.cfg”中找到。如果默认语言是中文,配置文件位于:
{SASHOME}SASFoundation9.4nlszh
打开这个文件夹中的sasv9.cfg文件,可以找到默认SASAUTOS对应的路径(也可以在这里直接添加自己存储宏程序的路径,这样就可以省略上面的步骤2和3)。
4.存储编译后的宏
Autocall可以自动搜索相应的宏程序进行编译运行,但每次第一次调用宏时,仍然需要先编译宏程序源代码,然后再执行宏。
但是,通过存储编译后的宏,可以节省编译宏程序的时间,提高效率。要存储已编译的宏,需要以下四个步骤:
使用LIBNAME语句定义存储编译宏的逻辑库;
使用系统选项MSTORED打开存储编译宏的功能,使用系统选项SASMSTORE =指定存储编译宏的逻辑库;
将STORE选项添加到%MACRO语句中;
提交%MACRO-%MEND宏程序定义代码,编译后存储在指定的逻辑库中;
一个
分配逻辑库
libnamecrealib " D:SAS macrosstored _ macros ";
2
使用系统选项
option mstored SAS mstore = macro lib;
三
添加STORE选项
% macro roc _ print(DSN,var)/store;
proc打印数据= & ampdsn
var &。var
跑步;
% mendproc _ print
四
提交运行代码
提交以上代码,运行后日志如下:
特殊用途
另外还有一个要求,就是封装核心代码。别人只能用,看不到源码。也可以通过存储编译后的宏来实现,只需在%MACRO语句中添加SECURE选项。您不能通过%COPY语句查看其源代码。例如:
% macro roc _ freq(DSN,var)/store secure;
proc freq数据= & ampdsn
桌子&。var
跑步;
% mendproc _ freq
% copy proc _ freq/source;
运行后日志文件:
可以看到日志显示因为SECURE没有显示的源代码。即使使用MPRINT和MLOGIC选项,也不会显示相关代码和宏变量,只会显示运行日志:
本文到此结束,主要围绕宏观故事展开。%INCLUDE语句经常在日常工作中使用,因为它最方便。如果某些敏感信息需要封装,可以加密编译存储,让用户看不到源代码。更多信息请关注SAS中文论坛——《SAS摇滚理论——宏观系列》。
剑指SAS,现在。欢迎各位技术专家交流。你可以按下面的二维码进入SAS中文论坛@Slash的微信群,或者发邮件:slash.xin@hotmail.com。
更多SAS摇滚理论系列文章
1.《storing SAS岩论 | Macro系列——Macro Storing》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《storing SAS岩论 | Macro系列——Macro Storing》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1440747.html