从SAS宏变量中提取值

时间:2016-06-14 13:56:22

标签: sas sas-macro

我已经定义了宏变量

%let data_names = fuzzy_Data_segment EMWS2.Clus_TRAIN;

然后我编写了一个宏来提取并打印上述宏变量中的值:

 %macro calling_data;
   %do i = 1 %to 2;
     %let data_name&i = %qscan(&data_names,&i);
     %put &&data_name&i;
   %end;
 %mend;
 %calling_data;

我的宏代码能够打印名字(fuzzy_Data_segment),但是,它只打印第二个名称(EMWS2)的一部分。我该怎么做才能打印整个第二个名字

1 个答案:

答案 0 :(得分:2)

您的问题是SAS认为某个句点是宏变量中的默认分隔符之一。在这种情况下,看起来您希望使用空格来分隔data_names中的项目,因此请指定:

%let data_name&i= %qscan(&data_names,&i., %str( ));

您在%let声明和calling_data电话中也错过了分号。