从 SAS 宏变量中删除逗号
Remove commas from SAS macro variable
我有一个 SAS 宏变量是:
&varlist. = OriginCd,DestinCd
我正在尝试获取一个新的宏变量,它是同一件事,但删除了逗号和 space。所以这个:
&newlist. = OriginCd DestinCd
我试过以下方法:
%let newlist=%sysfunc(tranwrd(%sysfunc(compbl(&varlist)),%str(,),%str( )));
%let newlist = %sysfunc(compress(&varlist,','));
%let newlist = %sysfunc(tranwrd(&varlist,","," "));
对于向后函数,我得到"the function TRANWRD referenced by %SYSFUNC macro function has too many arguments"。但我很确定这就是您通常使用它的方式。谢谢!
尝试:
%let varlist=OriginCd,DestinCd;
%let newlist=%sysfunc(compbl(%sysfunc(tranwrd(%quote(&varlist),%str(,),%str( )))));
%put &=newlist;
我添加了 %quote()
以防止逗号被解释为参数分隔符,并将 compbl()
切换到外部以防止需要另一个 %quote()
我有一个 SAS 宏变量是:
&varlist. = OriginCd,DestinCd
我正在尝试获取一个新的宏变量,它是同一件事,但删除了逗号和 space。所以这个:
&newlist. = OriginCd DestinCd
我试过以下方法:
%let newlist=%sysfunc(tranwrd(%sysfunc(compbl(&varlist)),%str(,),%str( )));
%let newlist = %sysfunc(compress(&varlist,','));
%let newlist = %sysfunc(tranwrd(&varlist,","," "));
对于向后函数,我得到"the function TRANWRD referenced by %SYSFUNC macro function has too many arguments"。但我很确定这就是您通常使用它的方式。谢谢!
尝试:
%let varlist=OriginCd,DestinCd;
%let newlist=%sysfunc(compbl(%sysfunc(tranwrd(%quote(&varlist),%str(,),%str( )))));
%put &=newlist;
我添加了 %quote()
以防止逗号被解释为参数分隔符,并将 compbl()
切换到外部以防止需要另一个 %quote()