SAS中文论坛

标题: 宏变量的赋值匹配问题 [打印本页]

作者: shiyiming    时间: 2003-10-20 17:40
标题: 宏变量的赋值匹配问题
data sam1;
a=1;
run;
data sam2;
b=2;
run;
data sam3;
c=3;
run;
proc sql noprint;
select memname into :tblname separated by '.' from sashelp.vstable
where libname='WORK';
select count(*) into:n from sashelp.vstable
where libname='WORK';
quit;

%macro mac;
%do i=1 %to &n;
        %let name1=%scan(&tblname,&i,'.');
        %let name2=%substr(&name1,1,3);
   %if %trim(&name2)='SAM' %then %put &name1;
%end;
%mend;

%mac;

主要是mac中的%if那行,
也可以使用 %if %trim(%left(&name2))='SAM' ......
不知哪里错了?
作者: shiyiming    时间: 2003-10-20 17:57
标题: Re: 哪里有问题?
[quote="willon":ed9c3]..
主要是mac中的%if那行,
也可以使用 %if %trim(%left(&name2))='SAM' ......
不知哪里错了?[/quote:ed9c3]

将这句改成:
%if %trim(&name2)=SAM %then %put &name1;
或者
%if “%trim(&name2)”=“SAM” %then %put &name1; /*这个方法更为可靠,有一篇文章专门讲解这个问题,下次贴上*/

因为宏变量的值没有引号。

另外宏变量一般不需要用%trim(%left,因为后面没有填补的空格。

<宏变量的值均为字符型,所以从SAS系统的设置角度来看,不需要加引号>
作者: shiyiming    时间: 2003-10-20 18:12
谢谢,要的就是这个。




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2