【发布时间】:2016-07-26 20:57:35
【问题描述】:
我正在尝试将数值变量传递给这个宏。我可以通过 KEEP 和 SET 语句传递它,但是当它到达 RENAME 语句时,我得到了这些错误:
错误:变量 '2013'n 不在 WORK.'2013'n 文件中。
错误:文件 WORK.'2013'n 上的 DROP、KEEP 或 RENAME 选项无效。
%macro step2(year,cwyear);
TITLE; FOOTNOTE;
DATA WORK._EG_CFMT;
LENGTH label $ 9;
SET WORK."&year."n (KEEP="&year."n "&cwyear."n RENAME=("&year."n =start "&year."n =label)) END=__last;
RETAIN fmtname "cw&year."n type "C";
end=start;
RUN;
%mend step2;
当我更改 &year 周围的双引号时。到单引号,像这样:
SET WORK.'&year.'n (KEEP="&year."n "&cwyear."n RENAME=("&year."n =start "&year."n =label))
我收到此错误:
错误:文件 WORK.'&YEAR.'n.DATA 不存在。
当我改回所有双引号并删除 n 时,我收到以下错误:
错误 22-322:语法错误,需要以下之一:名称、带引号的字符串、;、CUROBS、END、INDSNAME、KEY、KEYRESET、KEYS、 NOBS、OPEN、POINT、DATA、LAST、NULL。
我该如何进行这项工作?
感谢您的帮助!
【问题讨论】:
-
改成双引号时为什么要去掉
n? -
因为原始代码有双引号和 n 并抛出错误。我正在尝试测试与我已经知道不起作用的不同的东西。
-
原来的错误信息只是说变量不存在。您确定您没有尝试通过标签而不是名称来引用变量吗?