保存到永久SAS数据集时,使用宏变量
尝试使用下面的代码将数据集保存到永久SAS数据集时,使用宏变量,sas,sas-macro,Sas,Sas Macro,尝试使用下面的代码将数据集Keepmerge保存为名为Oct15Tot的永久SAS数据集。如果我只为Oct15Tot设置sub“&OutTabTot”,它就工作了。试图避免我不得不再向下更改一段代码(开始时引用了%let,并在我的整个程序中使用。谢谢 %let OutTabTot = Oct15Tot; libname WorkItem "\\WRKGRP\CVOWB\SAS Data Sets"; data WorkItem."&OutTabTot"; set work.Keep
Keepmerge
保存为名为Oct15Tot
的永久SAS数据集。如果我只为Oct15Tot设置sub“&OutTabTot”
,它就工作了。试图避免我不得不再向下更改一段代码(开始时引用了%let
,并在我的整个程序中使用。谢谢
%let OutTabTot = Oct15Tot;
libname WorkItem "\\WRKGRP\CVOWB\SAS Data Sets";
data WorkItem."&OutTabTot";
set work.Keepmerge;
run;
下面是我得到的错误:
22
201
ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, /, ;,
_DATA_, _LAST_, _NULL_.
ERROR 201-322: The option is not recognized and will be ignored.
如果删除数据语句中的引号,它应该会起作用,如下所示:
%let OutTabTot = Oct15Tot;
libname WorkItem "\\WRKGRP\CVOWB\SAS Data Sets";
Data WorkItem.&OutTabTot;
Set Work.Keepmerge;
Run;
一般来说,正如cherry所指出的,你应该跳过引文
但是,如果您有理由使用引号,则需要在之后使用n
来告诉SAS将其作为文字名称
%let OutTabTot = Oct15 Tot;
options validmemname=extend;
libname WorkItem "\\WRKGRP\CVOWB\SAS Data Sets";
Data WorkItem."&OutTabTot"n;
Set Work.Keepmerge;
Run;
如果可以避免的话,我不建议使用数据集名称和空格之类的东西,因为这是一种痛苦……但使用set是合法的