小编Mar*_*rkG的帖子

使用调用execute时出现宏变量

我有2个宏,我试图一个接一个地执行,就像在数据步骤中使用元数据表和调用执行命令一样.

宏%TWO需要全局变量&names_agg.应该在宏%ONE中创建.但是在下面的代码中,&names_agg在我第一次运行时是空白的.如果我再次运行它,它将只保留上次运行时的值.

这个想法是,每次运行%ONE时,都会有一个新的&names_agg.被建造.

我究竟做错了什么?

谢谢

%macro ONE(condition); 
%global names_agg;  
%let names_agg = ; 

proc sql;
    select 
        cats(name,"_agg"),
    into 
        :names_agg separated by " ",
    from dataset
    where condition = "&condition."
    ;
quit;
%mend;

%macro TWO(name_OT);

data &name_OT.;
    set &names_agg.;
run;

%mend;

data _null_;
  length code $32767;
  set meta_table;
  code = "%ONE(" || cats(condition) || "); %TWO(" || cats(Name_OT) || ");";
  call execute(code);
run;
Run Code Online (Sandbox Code Playgroud)

对于凌乱的日志感到抱歉,这是实际的代码.问题在于NAMES_AGG_A _B和_C无法正确解析

871  data test;
872    length code $32767;
873    set c.new_name_OT (obs=1);
874    code = '%OT_Append(' || …
Run Code Online (Sandbox Code Playgroud)

sas

5
推荐指数
1
解决办法
3644
查看次数

标签 统计

sas ×1