最近计划离职,工作逐渐交接出去。很奇怪,忙的时候满心全是吐槽,到了交接的时候反而很不舍。所以想给自己找点事情做,一方面看看书提高自己的认知,另一方面三言两语写点小知识点分享一下。毕竟自己碰到不会的就会到去各种帖子各种微信群拿来主义~
因为ODS无法输出空数据集,所以在制作宏程序批处理数据集的时候,要判断为空的数据集,给其增加一行数据:no listing。以保证所有数据集均不为空。本篇主要记录如果判断数据集的观测数,并将其放入宏变量。
*1.使用DATA步获取信息, call symput() 动作放入宏变量;
data _null_;
set SASHELP.CARS nobs=nobs;
call symput("nobs", nobs);
run;
%put &nobs.;
#output: 428
**************************************************************;
*2.没有直接打开数据集的情况下利用open函数获取信息,let语句放入宏变量;
%let dsid = %sysfunc(open(SASHELP.CARS, i));
%let n=%sysfunc(attrn(&dsid,nobs));
%let rc=%sysfunc(close(&dsid));
%put &n.;
#output: 428
**************************************************************;
*3.使用PROC步,SQL获取信息, into子句放入宏变量;
PROC SQL noprit;
select count(*) into :num from SASHELP.CARS;
quit;
%put &num .;
#output: 428
这里顺带提一句,上面其实也用到了制作宏变量常用的三种方法:
1.%LET 语句;
2.DATA步中的 call symput();
3.SQL into子句;
结束收工!其实写这东西还是有点好处的,现在我工作过程中用python越来越多,稍微写下blog也能帮助自己加深记忆。