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