保存到永久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是合法的