SAS 宏编程技术
文章目錄
- 宏編程技術
- 宏變量
- 定義(%LET)
- 引用(&)
- 使用分隔符隔開宏變量引用和文本
- 間接引用
- 宏
- 定義
- 調用
- 宏參數
- 宏調用宏
- 條件表達式
- 生成重復項
- 宏表達式
- 參考文獻
宏編程技術
宏變量
定義(%LET)
%LET DSN = ResDat.class;宏變量可以為一段完整的 SAS 程序
%LET plot = % STR(PROC GPLOT DATA = a;PLOT clpr * date = 1;symbol1 v=star i=join r=1 c=red;run;);引用(&)
%LET a = ResDat.class; data a;set &a; run;在帶有引號的文本中引用宏變量時,該引號必須是雙引號,不能是單引號。
%LET a =january; data ;put "This is the time series plot for &a" run;使用分隔符隔開宏變量引用和文本
%LET name = ResOat; %PUT &name^1; %PUT &name.1; %PUT &name..1;輸出: ResDat^1 ResDat1 ResDat.1間接引用
%LET data1 = x; %LET data2 = y; %LET data3 = z;%macro test;%DO i = 1 %to 3;%PUT &&data&i;%end; %mend test; %test;宏
定義
%maro mac;文本; %macro mac; %macro plot;PROC GPLOT DATA = ResDat.stk000002;TITLE2 "收盤價時序圖"PLOT clpr * date = 1;symbol1 v=star i=join r=1 c=red; %mend plot;調用
%macro plot;PROC GPLOT DATA = ResDat.stk000002;TITLE2 "收盤價時序圖"PLOT clpr * date = 1;symbol1 v=star i=join r=1 c=red; %mend plot; %plot; run;宏參數
%macro plot(dat, pr, price);PROC GPLOT DATA = ResDat.&dat;TITLE2 "&pr 時序圖"PLOT &price * date = 1;symbol1 v=star i=join r=1 c=red; %mend plot; %plot(stk000002, 收盤價, clpr); run;宏調用宏
%macro create; /* 產生數據集宏 */DATA temp;SET ResDat.&dat;IF YEAR(date) = &year; %mend create;%macro plot; /* 畫時序圖宏 */PROC GPOLT DATA = temp;TITLE2 "&pr &year1 時序圖"PLOT &price * &date = 1;symbol1 v=star i=join r=1 c=red; %mend plot; run;%macro analyze(dat, year, pr, price, year1); /* 宏調用宏 */ %create; %plot; %mend analyze;%analyze(stk000002, 2000, 收盤價, clpr, 2000); run;條件表達式
%macro analyze(getdata, dat, year, pr, price, year1); %if &getdata=yes % then % create; /* 用條件表達式判斷是否調用宏create */ %plot; %mend analyze;%analyze(yes, stk000002, 2000, 收盤價, clpr, 2000); run;生成重復項
%macro names(name, number);%do n=1 %to &number;&name&n%end; %mend names;宏表達式
%let x = %eval(1+1); %let y = %sysevalf(9.0/3.2);參考文獻
朱世武. SAS 編程技術教程 [M]
總結
- 上一篇: 精选15个国外CSS框架
- 下一篇: 项目经理(project manager