SAS中文论坛

标题: 请帮忙看以下这个macro,错在哪里? [打印本页]

作者: shiyiming    时间: 2012-11-24 03:55
标题: 请帮忙看以下这个macro,错在哪里?
%macro d_check(din=,fn=);
proc sql;
create table a as
  select * from &din. having %sysfunc(upcase(name))="%sysfunc(upcase(&fn.))";
quit;
%mend;

%d_check(din=sashelp.class,fn=jane)

在sashelp.class中,是存在这个'Jane'名字的,e.g. proc sql; create table a as select * from sashelp.class having upcase(name)='JANE'; quit;
但不知道为何这个macro程序就无法实现?
请问,错在哪里,请帮忙指点一下。
谢谢!
作者: shiyiming    时间: 2012-11-24 09:38
标题: Re: 请帮忙看以下这个macro,错在哪里?
变量name不是宏变量,故不用宏函数%upcase,而%upcase是可以直接使用的宏函数,Proc sql中转换大小写有专用函数upper和lower
%macro d_check(din=,fn=);
        proc sql;
                create table a as
                select * from &din
                having upper(name)="%upcase(&fn)";
quit;
%mend;
%d_check(din=sashelp.class,fn=jane)
作者: shiyiming    时间: 2012-11-28 07:31
标题: Re: 请帮忙看以下这个macro,错在哪里?
thx.




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