2015-10-21 113 views
2

我能够将宏变量解析为我期待的名称。但是proc数据集中的delete语句没有被识别。如何使它工作?PROC DATASETS宏变量错误

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 
+0

PROC数据集需要添加退出运行,所以你还需要结束PROC。如果你已经运行过几次,SAS可能会感到困惑。也可以尝试删除数据集名称的库部分。 – Reeza

+0

@Reeza下一个PROC DATASETS将定义一个步骤边界,因此不应该是问题。吉姆的回答在这里是正确的(即你评论中的第二句话)。 – Joe

+0

谢谢Joe和Reeza。我错过了这一点。是的,删除LIB部分后,问题就解决了。我的坏,错过了愚蠢的事情。不幸的是还有一个问题需要解决。将发布在一个单独的问题:) –

回答

3

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

您希望您的宏变量来解决这个:

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

非常感谢JimL ..这有助于解决问题 –