SAS 宏编程技术
文章目錄
- 宏編程技術(shù)
- 宏變量
- 定義(%LET)
- 引用(&)
- 使用分隔符隔開(kāi)宏變量引用和文本
- 間接引用
- 宏
- 定義
- 調(diào)用
- 宏參數(shù)
- 宏調(diào)用宏
- 條件表達(dá)式
- 生成重復(fù)項(xiàng)
- 宏表達(dá)式
- 參考文獻(xiàn)
宏編程技術(shù)
宏變量
定義(%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;在帶有引號(hào)的文本中引用宏變量時(shí),該引號(hào)必須是雙引號(hào),不能是單引號(hào)。
%LET a =january; data ;put "This is the time series plot for &a" run;使用分隔符隔開(kāi)宏變量引用和文本
%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 "收盤(pán)價(jià)時(shí)序圖"PLOT clpr * date = 1;symbol1 v=star i=join r=1 c=red; %mend plot;調(diào)用
%macro plot;PROC GPLOT DATA = ResDat.stk000002;TITLE2 "收盤(pán)價(jià)時(shí)序圖"PLOT clpr * date = 1;symbol1 v=star i=join r=1 c=red; %mend plot; %plot; run;宏參數(shù)
%macro plot(dat, pr, price);PROC GPLOT DATA = ResDat.&dat;TITLE2 "&pr 時(shí)序圖"PLOT &price * date = 1;symbol1 v=star i=join r=1 c=red; %mend plot; %plot(stk000002, 收盤(pán)價(jià), clpr); run;宏調(diào)用宏
%macro create; /* 產(chǎn)生數(shù)據(jù)集宏 */DATA temp;SET ResDat.&dat;IF YEAR(date) = &year; %mend create;%macro plot; /* 畫(huà)時(shí)序圖宏 */PROC GPOLT DATA = temp;TITLE2 "&pr &year1 時(shí)序圖"PLOT &price * &date = 1;symbol1 v=star i=join r=1 c=red; %mend plot; run;%macro analyze(dat, year, pr, price, year1); /* 宏調(diào)用宏 */ %create; %plot; %mend analyze;%analyze(stk000002, 2000, 收盤(pán)價(jià), clpr, 2000); run;條件表達(dá)式
%macro analyze(getdata, dat, year, pr, price, year1); %if &getdata=yes % then % create; /* 用條件表達(dá)式判斷是否調(diào)用宏create */ %plot; %mend analyze;%analyze(yes, stk000002, 2000, 收盤(pán)價(jià), clpr, 2000); run;生成重復(fù)項(xiàng)
%macro names(name, number);%do n=1 %to &number;&name&n%end; %mend names;宏表達(dá)式
%let x = %eval(1+1); %let y = %sysevalf(9.0/3.2);參考文獻(xiàn)
朱世武. SAS 編程技術(shù)教程 [M]
總結(jié)
- 上一篇: 精选15个国外CSS框架
- 下一篇: java设计模式2,开闭原则