the*_*cer 2 string sas literals
我试图将数字变量传递到此宏.我能够通过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;
Run Code Online (Sandbox Code Playgroud)
当我改变双年份的双引号时.单引号,像这样:
SET WORK.'&year.'n (KEEP="&year."n "&cwyear."n RENAME=("&year."n =start "&year."n =label))
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
错误:文件工作.'&YEAR.'n.DATA不存在.
当我改回所有双引号并删除n时,我收到以下错误:
错误22-322:语法错误,期望以下之一:名称,带引号的字符串,;,CUROBS,END,INDSNAME,KEY,KEYRESET,KEYS,NOBS,OPEN,POINT,DATA,LAST,NULL.
我该如何工作?
谢谢您的帮助!
你需要有双引号和n.名称文字可以像任何其他字符串一样使用单引号或双引号.单引号不会解析其中的宏变量,double会.
例:
options validvarname=any;
options validmemname=extend;
data '2015'n;
'2015'n = 5;
run;
%macro do_something(year=);
data work.want;
set "&year."n(rename="&year."n = start);
run;
%mend do_something;
%do_something(year=2015);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2727 次 |
| 最近记录: |