【问题标题】:SAS macros to import and apply macro from text file on csv datasetSAS 宏从 csv 数据集的文本文件中导入和应用宏
【发布时间】:2018-10-06 19:03:59
【问题描述】:

我有一个文本文件“宏定义”,它有两个 SAS 宏定义。我想导入它们并应用于 HTWT.csv 数据集。该数据集有 20 个观察值和 6 个变量 ID、性别、年龄、身高、体重、年份。除性别变量外,所有都是数字。我有下面的代码来导入宏并将宏从 txt 文件应用到 csv 文件。我在运行此代码时收到一条错误消息,如下所示。

outcsvv 是 SAS 中导入的 HTWT 数据集的名称。

%include "C:\Users\komal\Desktop\Advanced SAS\Macro definition.txt";
%contents_of(outcsvv)
%print_data(outcsvv)
Warning:Apparent Invocation of macro "contents_of" not resolved
Error: Unable to complete processing of INCLUDE. Expected a filename or fileref
Expected a statement keyword: found "("

我得到的第二个错误可能是由于文本文件中的宏定义如下。

%macro contents_of(name);
proc contents data=&name;
run;
%mend;


%macro print_data(name);
proc print data=&name;
run;
%mend;

请告诉我您对如何解决问题的建议。感谢您的宝贵时间。

【问题讨论】:

  • 您可以将日志添加到您的问题中吗?将 sas 代码放在扩展名为 .txt 而不是 .sas 的文件中是不常见的,但在我看来,您的代码应该可以正常运行。假设它在 Windows 环境中运行并且 SAS 会话可以看到您桌面上的文件。我看不出您发布的代码如何生成该错误消息。我会仔细检查 Macro Definition.txt 的内容。
  • 一些建议...如果您对宏所做的只是使用它们来包装过程调用,那么您应该停止并重新考虑您在做什么。它使您的代码更难被其他人阅读和使用,它教您使用无法移植到另一个工作环境的代码,它使调试变得更加困难......
  • 谢谢。我会听从罗伯特的建议。对于这段代码,我必须使用这些宏作为练习的一部分。

标签: macros sas


【解决方案1】:

您可以设置自己的宏Autocall Library。只需拆分您的文件;每个文件保存一个宏。 more.

或者您可以将此代码添加到程序的开头:

options insert=(sasautos="/C:\Users\komal\Desktop\Advanced SAS") ;

这将搜索此目录中的宏。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多