select Name into :Dataset1-:Dataset%trim(%left(&DatasetNum)) from MEM;
我无法解释此声明中发生的事情,任何人都可以给我一个解释。 我理解这个例子
select count(Name) into :DatasetNum from MEM
但不是上述那个。
答案 0 :(得分:3)
它试图使用宏变量DATASETNUM的值作为SELECT语句创建的宏变量名的上限。因为先前的变量是使用前导空格创建的,所以调用%LEFT()
宏来删除它们。不需要调用宏%trim()
,因为尾随空格不会造成任何麻烦。
首先构建宏变量数组然后从自动宏变量SQLOBS的值设置计数器变量要容易得多。此外,它不会有领先的空白。
select name into :Dataset1- from mem ;
%let DatasetNum=&sqlobs;
如果您的旧版本的SAS不支持新的:varname-
语法,那么只需使用较大的值作为上限。 SAS只会创建所需的宏变量数。
select name into :Dataset1-:Dataset99999 from mem;
答案 1 :(得分:1)
这是创建一个SAS宏变量数组(DATASET1,DATASET2,DATASET3)等,从MEM数据集的Name列填充。
与以下类似:
data _null_;
set MEM;
call symputx(cats('Dataset',_n_),Name);
run;