首页 > 解决方案 > sas 宏参数的多个值

问题描述

我是 SAS 宏编程的新手,需要启用以下宏才能处理和处理其宏参数的多个值。您好,

data have;
input name $ ACCOUNT_ID $ cust_id;
cards;
ARTHUR CC1234 1234
TOM eil1235 1235
MIKEZ tb1236 1236
MATT mb1237 1237
LIZ TB1238 1238
PIZ VB1239 1239
TAN MB1240 1240
PANDA . 1241
;
run;

%MACRO algo (IN_DS=,VAR_LIST=,DATA_TYPE_LIST=,OUT_DS=);
DATA &OUT_DS;
SET &IN_DS;

%If &data_type_LIST = num %then 
&var_LIST=sum(&VAR_LIST,2);
%else &var_LIST=cats(&var_LIST,'re');;
run;
%mend;

%algo(IN_DS=HAVE,VAR_LIST=CUST_ID,DATA_TYPE_LIST=num,OUT_DS=out1);`

我现在需要启用此宏,以便能够为宏参数传递多个值。像这样的东西:

%algo(IN_DS=HAVE,VAR_LIST='CUST_ID,ACCT_ID',DATA_TYPE_LIST='num,char',OUT_DS=out1); 有人可以帮我在宏代码中启用此功能。

标签: macrossas

解决方案


参数参数应在宏调用中用 %STR() 进行宏引用。

尝试

%algo 
( IN_DS=HAVE
, VAR_LIST= %STR (CUST_ID, ACCT_ID)
, DATA_TYPE_LIST=num
, OUT_DS=out1
);

宏引用不同于用于字符文字的 DATA 步引用。


推荐阅读