Sas PROC数据集宏变量错误

Sas PROC数据集宏变量错误,sas,sas-macro,Sas,Sas Macro,我能够将宏变量解析为我期望的名称。但无法识别proc数据集中的delete语句。如何让它工作 PROC DATASETS LIB=WORK NODETAILS NOLIST; DELETE &INPUT._mi &INPUT._lc ; RUN; MPRINT(GET_true_value): PROC DATASETS LIB=WORK NODETAILS NOLIST; NOTE: Line generated by the macro variable "

我能够将宏变量解析为我期望的名称。但无法识别proc数据集中的delete语句。如何让它工作

PROC DATASETS LIB=WORK NODETAILS NOLIST;
    DELETE  &INPUT._mi  &INPUT._lc ;
RUN;

MPRINT(GET_true_value):   PROC DATASETS LIB=WORK NODETAILS NOLIST;
NOTE: Line generated by the macro variable "INPUT".
108          work.true_value_mi
             __________________
             22
             201
MPRINT(GET_true_value):   DELETE work.true_value_mi work.true_value_lc ;
NOTE: Enter RUN; to continue or QUIT; to end the procedure.
MPRINT(GET_true_value):   RUN;

ERROR 22-322: Expecting a name.  

ERROR 201-322: The option is not recognized and will be ignored.

NOTE: Statements not processed because of errors noted above.
109   

看起来问题在于编写的delete语句包含了库名称。这不是必需的(并引发错误),因为库是在PROC DATASETS语句中指定的

您希望宏变量解析为:

PROC DATASETS LIB=WORK NODETAILS NOLIST;
    DELETE true_value_mi ;
RUN;

Proc数据集除了运行外还需要退出,因此您还需要结束Proc。如果您已经运行了几次,SAS可能会感到困惑。也可以尝试删除数据集名称的库部分。@Reeza下一个PROC数据集将定义一个步骤边界,因此这不应该是问题所在。吉姆的回答在这里是正确的(即你评论中的第二句话)。谢谢乔和里扎。我没抓住要点。是的,删除LIB部分后,问题就解决了。我的坏朋友,错过了这件愚蠢的事情。不幸的是,还有一个问题需要解决。将在另一个问题中发布:)非常感谢JimL。。这有助于解决问题