我已经定义了宏变量
%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)的一部分。我该怎么做才能打印整个第二个名字
答案 0 :(得分:2)
您的问题是SAS认为某个句点是宏变量中的默认分隔符之一。在这种情况下,看起来您希望使用空格来分隔data_names中的项目,因此请指定:
%let data_name&i= %qscan(&data_names,&i., %str( ));
您在%let
声明和calling_data
电话中也错过了分号。