Macro是SAS编程不可缺少的一部分,Macro的好处很多(此处省略若干字),当然这也是接着前面的基础篇写的~这也是一个Macro中的基础篇。
宏变量定义的三种方式
说到Macro,那么就不得不说宏变量,宏变量的是啥呢?可以理解成和其它编程语言中的变量一样,在内存中创建了一个空间(给这个空间一个标记,宏变量的名称),然后将一些值放到这个内存空间中(这就是定义宏变量的过程),好吧,我是一个不善解释的人,没理解的还是自行百度领悟。那么就来看看如何来定义Macro变量。
%LET
%let 方式定义宏变量:这个是最简单、最直接的赋值定义的方式.
将值直接赋值给宏变量....那么来看一个简单的例子.
见上面的这个例子,小编将一句话直接赋值给宏变量,通过%put见下面一句话打印到日志,这个时候通过解析符号来解析定义的Macro变量。来看看日志的是什么样的...
看蓝色部分的哪一行话,&macvar1那个地方已经别替换了...显示的是宏变量的值....
那么在实际编程中,%let方式定义宏变量用的多么,答案是显然的多!最常用的的场景之一就是定义路径.在每个项目开始编程的第一步,最开始的程序,大概都是Setlib,设置项目夹子/与建立逻辑库,并将路径全部赋值给相应的宏变量,在后续的编程中,如果有路径的引入,将全部用宏变量去代替,为什么要这么做呢?那就是将项目夹子打包,不管移动到任何地方,无需人工修改程序内部路径,就可以直接运行程序了...当然好处不仅仅如此,接下来小编将举出一个自动获取路径,建立逻辑库的方式...
这俩段代码是等效的,原理是获取当前程序所在的路径,然后针对此路径追溯到前面的几级文件夹,将所需的路径赋值给宏变量,然后在通过调用宏变量去定义逻辑库...在编程的过程中,是可以全程不用手动输入外部路径的....都可以通过宏变量代替,将来项目夹子不管怎么移动,都能直接运行程序的..那么在来看看日志。
CALL SYMPUT
CALL SYMPUT 定义Macro变量
如果想将一个数据集中的观测给赋值给Macro变量,做循环,那么就
可以使用此方式...那么还是举出一个例子..
我这里是将某路径下所有的sas程序名称赋值给宏变量...
实际编程应用中实际是非常广的,比如批量导入excel/csv的时候自动获取文件名称,将文件名称赋值给宏变量,通过循环来实现批量导入导出的操作...
CALL SYMPUT 这种方式还是一句话:特别好用,当然也有一些局限性..最后来说也来看看日志....
PROC SQL INTO:
SQL定义宏变量是特别的好用,可以将一列观测的值赋值给一个宏变量,也可以将观测逐条赋值...应用场景特别广那么就来看看几个简单的例子...
看上面的SQL中定义宏变量,实际是有俩种,有没有发现...没发现的话,在仔细看看,下面来看看日志的...
仔细看了还没发现,那么就来看看小编设置的SQL定义宏变量的快捷方式的代码块(2种)...
那么最后来看一张图:
说了这么多宏变量定义的方式,那么还是有几点要注意的,宏变量的长度是有限制的,大概一般人都不知道吧...我还没有百度出如何解除这个长度限制的办法...如果哪位大神知道,请不吝指点...当然针对这种宏变量长度达到上限的情况,小编是这样实际编程中,在将其拆分成多个宏变量...
如果觉得好或者公众号有价值:请打赏我把~
打赏包括但不限于:转发,分享,推荐,赞赏本公众号或者文章,谢谢!为我的“万粉计划”舔砖加瓦吧~
领取专属 10元无门槛券
私享最新 技术干货