宏函数中的数据步骤

Data step inside macro function

我有一系列类似的文件,我需要从中创建 SAS 数据集。我想制作一个宏,将文件名作为参数,可以输出一个数据步骤。这在理论上可能吗?

我是 SAS 的新手,我做了这个简单的例子:

%macro computeFormAndDomain(formName, domainName);
   data thing;
      input Name $;
      datalines;
      Bob 
      Jill
      ;
   run;
%mend;

%computeFormAndDomain("test", "test2");
proc print data=thing;
run;

但是这会返回错误“错误:宏 COMPUTEFORMANDDOMAIN 为数据步骤生成了 CARDS(数据行),这可能会导致不正确的结果。该 DATA 步,宏将停止执行。”需要进行哪些更正,或者是否有更好的方法来实现我想要的?

根据规则,您不能在宏中使用 CARDS/DATALINES。您需要将信息作为已构建的数据集(或其他方式)提供给宏。例如,参见 this thread 讨论该问题。