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;