%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程序就无法实现?
请问,错在哪里,请帮忙指点一下。
谢谢!
变量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)