SAS編程工作中常見問題(二)
1、數據步中retain語句做累加時需注意:防止因為累加里某個缺失值而導致累加后的總數為缺失。
2、用%global或者%local定義宏變量時,要明確宏變量的使用范圍。
3、SAS程序中要注意一些變量配對語句的使用。例如:do...end;if then...;else if then...;else;編寫程序時,這些語句不成對出現(xiàn),SAS程序會出現(xiàn)錯誤。
4、宏程序中出現(xiàn)多個分號時,宏語句首先消耗離它最近的第一個分號。在此段代碼中%if消耗的是第一個分號。
%macro Gender(sex);
%if &sex=1 %then put "Male"; "hello";
%mend;
data _null_;
%Gender(1);
run;
5、解析宏變量時,需要將特殊字符串(例如:' " () + - * / <> = ^ ~ ; , # blank & %),當成字符串,文本操作時,需要使用%NRBQUOTE函數。
6、解析宏變量時,包含在雙引號中的宏變量會被替換,在單引號中宏變量當作字符串處理。
put "&mystr IBM";
put '&mystr IBM';
put &mystr;
編寫程序時需要注意單引號和雙引號的使用條件,避免出現(xiàn)用錯的情況。
7、給宏變量賦值時,要注意宏函數的使用和在數據步中的使用是不同的。有些函數可以直接加上%引用,例如SUBSTR、SCAN等;有些數據步函數需要在函數外使用%SYSFUNC,才能在宏語句中使用,如%SYSFUNC(數據步函數名(自變量),<輸出格式>)。例:
%let currdate = %sysfunc(today(),worddate.);
請前往:http://lygongshang.com/TeacherV2.html?id=166