我试图在一次拍摄中使用多个数据集的set语句,即我有数据集vmoreranked1,vmoreranked2,vmoreranked3,...但不断收到错误
data stackorig;
set vmoreranked1-vmoreranked&vmcnt; run;
-
22
错误22-322:语法错误,期望以下之一:名称,a 引用字符串,(,;,END,KEY, KEYS,NOBS,OPEN,POINT, DATA , LAST , NULL 。
注意:由于错误,SAS系统停止处理此步骤。
有人可以帮忙吗?
答案 0 :(得分:0)
除非您运行的旧版SAS不支持使用数据集名称范围,否则您的宏变量中可能会有前导空格。例如,如果我运行此代码:
data _null_;
call symput('vmcnt',' 2');
run;
data stackorig;
set vmoreranked1-vmoreranked&vmcnt;
run;
我收到了您的错误消息,但我还收到了另一条解释问题的消息。
2071 vmoreranked 2
-
22
200
ERROR: Missing numeric suffix on a numbered data set list (WORK.vmoreranked1-WORK.vmoreranked).
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, ;, CUROBS,
END, INDSNAME, KEY, KEYRESET, KEYS, NOBS, OPEN, POINT, _DATA_, _LAST_, _NULL_.
ERROR 200-322: The symbol is not recognized and will be ignored.
您应该修复如何创建宏变量,以便不包含前导空格。
或者你可以通过重新创建它来删除前导空格:
%let vmcnt=&vmcnt ;