从 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()