【问题标题】:PROC DATASETS macro variable errorPROC DATASETS 宏变量错误
【发布时间】:2015-10-21 16:12:18
【问题描述】:

我能够将宏变量解析为我期望的名称。但是 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   

【问题讨论】:

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

标签: sas sas-macro


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢 JimL .. 这有助于解决问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2018-10-31
  • 1970-01-01
相关资源
最近更新 更多