SAS编程工作中常见问题(二)

1、数据步中retain语句做累加时需注意:防止因为累加里某个缺失值而导致累加后的总数为缺失。
2、用%global或者%local定义宏变量时,要明确宏变量的使用范围。
3、SAS程序中要注意一些变量配对语句的使用。例如:do...end;if then...;else if then...;else;编写程序时,这些语句不成对出现,SAS程序会出现错误。
4、宏程序中出现多个分号时,宏语句首先消耗离它最近的第一个分号。在此段代码中%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;
编写程序时需要注意单引号和双引号的使用条件,避免出现用错的情况。
7、给宏变量赋值时,要注意宏函数的使用和在数据步中的使用是不同的。有些函数可以直接加上%引用,例如SUBSTR、SCAN等;有些数据步函数需要在函数外使用%SYSFUNC,才能在宏语句中使用,如%SYSFUNC(数据步函数名(自变量),<输出格式>)。例:
%let currdate = %sysfunc(today(),worddate.);




请前往:http://www.mark-to-win.com/TeacherV2.html?id=166