如何连接 SAS 多个宏变量

How to Concatenate SAS Multiple MACRO Variables

所以,我想弄清楚如何连接 SAS 宏

下面的代码有效

%let VARIAVLE1 =XSCUGRAD;

%macro sqlloop(maxcnt);
 
 %do i=1 %to &maxcnt.;

   %if &i = 1 %then
         %do;

  %let t=12345;

  %let result =&&VARIAVLE&i;
  %put result=&result;

  %let result2=&result;
  %put result2=&result2;

    data dct&i;
    set dct;
    IF &result="A" THEN &result2="Not applicable";

RUN;
 
   %end;

%end;
%mend;
%sqlloop(maxcnt=1)

SYMBOLGEN:  Macro variable RESULT resolves to XSCUGRAD
SYMBOLGEN:  Macro variable RESULT2 resolves to XSCUGRAD

那我要改

%let t=12345;

  %let result =&&VARIAVLE&i;
  %put result=&result;

  %let result2=&&result&t;
  %put result2=&result2;

我只改了这部分,但是这段代码没有用

 %let result2=&&result&t;

错误信息是

SYMBOLGEN:  Macro variable RESULT resolves to XSCUGRAD
SYMBOLGEN:  Macro variable RESULT2 resolves to &result12345
NOTE: Line generated by the macro variable "RESULT2".
1       &result12345
        -
        180

创建 XSCUGRAD12345

我怎么变can/should???

谢谢

如果要将值附加到宏变量的值,请确保告诉宏处理器名称结束的位置。你可以用一段时间来做到这一点。虽然我认为对于你的情况你只是有太多的 & 来做你想做的事情,因为 & in &t 应该让宏处理器知道名称 RESULT 结束的位置。

如果你的宏变量是这样的:

%let result = XSCUGRAD;
%let t=12345;

像这样使用宏变量:

IF &result.="A" THEN &result.&t.="Not applicable";

或者这个:

IF &result="A" THEN &result&t="Not applicable";

生成此语句。

IF XSCUGRAD="A" THEN XSCUGRAD12345="Not applicable";