sas_宏中的变量值

时间:2014-09-07 13:21:23

标签: sas sas-macro

我需要在宏中使用以下代码:

proc sql;
select name
into :lista
separated by ' '
from dictionary.columns 
where libname='LABO2' 
and name like 't1_%'
and name like "%5";
quit;

但是当我写道:

%macro prue(numero);
proc sql;
select name
into :listas
separated by ' '
from dictionary.columns 
where libname='LABO2' 
and name like 't1_%'
and name like "% &numero.";
quit;
%put "% &numero";
%mend;

%prue(5);

我得到了类似的'%5'当我需要'%5'。如果我删除了

中的空白空间
like "%&numero."

我没有得到变量值5,我得到了'%& numero'。所以我不知道如何解决这个问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

您需要使用宏引用来转义百分号和/或将其与宏变量分开。许多解决方案之一:

%let text=fred;

proc sql;
select name from sashelp.class
where name like "%nrstr(%%)&text.";
quit; 

您将%加倍,因为%str%nrstr中的第一个%会转义某些字符,包括百分比本身。

答案 1 :(得分:0)

好吧,这不是最好的方法,但解决方案是使用猫:

%let li=%sysfunc(cats(%,&numero));

并在宏中:

and name like "&li";

你知道其他任何方法来解决这个问题?????这是解决它的正式方法吗? 感谢