如何连接 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";
所以,我想弄清楚如何连接 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";