【发布时间】:2018-11-06 18:44:24
【问题描述】:
我是 SAS 新手,可能天真地试图模仿在 SAS 中构建宏作为函数。
我有多个从存储过程启动的宏变量。有些可能有值,而另一些可能是空的。
%let a1 = column_name1;
%let a2 = column_name2;
%let a3 = ;
%let col1 = &a1;
%let col2 = &a2;
%let col3 = &a3;
我想在 proc sql 中使用它们:
proc sql;
create table some_table as
select
&col1 AS column1,
&col2 AS column2,
&col3 AS column3
from some_table;
quit;
但是,这不适用于空变量 (&col3)。因此,我正在尝试构建某种封装它的函数。比如:
%macro macro_return_string(macro_variable);
%if length(macro_variable) = 1 %then %do; /* if column_name# is not empty, then it len() is always >2 */
"";
%end;
%else %do;
macro_variable;
%end;
%mend macro_return_string;
所以它会像这样使用:
%let col1 = macro_return_string(&a1); /* return column_name1 */
%let col2 = macro_return_string(&a2); /* return column_name2 */
%let col3 = macro_return_string(&a3); /* return "" */
感谢您的帮助!
有人问了here 类似的问题,但我无法解决我的问题。
【问题讨论】: