【问题标题】:SAS: Macro variable and string. Correct TableNameSAS:宏变量和字符串。正确的表名
【发布时间】:2012-05-21 21:43:16
【问题描述】:

这是宏的一部分:

  %let mvTableName = "MyTable";

  proc append base = &mvTableName data = TEMP_TABLE;
  run;

我在 WORK 中找不到表:\

之后我检查表的创建。

  data &mvTableName; 
  run;

并在日志中查看:Dataset MyTable ...

但是当我更改字符串%let mvTableName=MyTable;

我看到了这个日志:Dataset WORK.MyTable ..

如何解释?

【问题讨论】:

    标签: string macros dataset sas


    【解决方案1】:

    如果您要使用 mvTableName 作为 DATA= 选项的输入,请不要包含双引号

    假设 MyTable 和 Temp_table 是 WORK 库中的 SAS 数据集...这应该可以。

    %Let mvTableName=MyTable;
    Proc Append base=&mvTableName data=temp_table;
    run;
    

    还有,

    Data &mvTableName;
    Run;
    

    创建一个空数据集...所以 mvTableName 将被一个空数据集覆盖。

    【讨论】:

    • 在宏变量赋值中从 = 到 ;分配给宏变量...与不包含引号的数据步骤变量分配不同。引号包含在 BASE= 语句中……这是不正确的。在宏变量赋值中使用引号是很少见的(有人会说它不应该发生)。如果您需要在语句中使用引号......只需包装宏 var。请务必使用双引号,否则宏变量将无法解析。
    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多