SAS(十四)SAS宏相关知识
SAS宏
- 利用宏可以减少在完成一些共同任务时必须输入的文本量
- 利用宏可以使程序模块化,使程序易读、便于修改、移植、方便重复使用
SAS宏变量
- 宏变量属于SAS宏语言,与普通变量的区别是可以独立于DATA步
- 可以在SAS程序中除数据行之外的任何地方定义并使用宏变量
- %let语句定义宏变量并分配一个值给宏变量(如:%let dsn=3)
- 当引用一个宏变量的值,放&号在宏变量前
- 使用%str函数围住宏变量的值,使得在这个值内部的分号作为这个文本的部分,而不是%let语句的结束
- 使用%put语句在LOG窗口显示宏变量的值
- SAS/BASE中的自动宏变量,如:sysver, systime(给出SAS程序或会话开始执行的时间);
%put &sysver;
%put &systime;
%put &sysdate;
%put &sysscp;/*返回用户主机系统的缩写*/
title "This macro is writen by &yvar";
%let xvar=123.45;
%let yvar=zhao;
%put xvar;
%put &xvar;
data;
input a;
cards;
1
;
run;
proc print;
run;
%macro create;
data tem;
set peixun.fitness;
if age>=50;
%mend create;
%create;
run;
proc print data=tem;
run;
宏参数
- 被定义在一个%macro语句的宏名字后括号内的宏变量称为宏参数,可以直接给出宏参数的值,也可以在调用这个宏时给出这些参数的值。
- 对参数分配的值只在这个宏执行时有效,而宏变量从用户创建直到SAS会话结束前都存在
data temp1;
set peixun.fitness;
run;
%macro plot(yvar=age,xvar=weight);
proc plot;
plot &yvar*&xvar='*';
run;
%mend plot;
%plot()
%plot(xvar=runtime);
quit;
%macro create;
data temp;
set peixun.fitness;
if age>=50;
%mend create;
%*The first macro generates DATA;
%macro plot;
proc plot;
plot &yvar*&xvar='.';
run;
%mend plot;
%*The second macro generates PROC;
%macro analyze(getdata,yvar,xvar);
title;
%if %upcase(&getdata)=YES %then
%do;
%create
title3"Data Set Created for The Plot";
%end;
%plot
%mend analyze;
%analyze(yes,age,weight);
quit;