【发布时间】:2017-03-31 15:14:29
【问题描述】:
我需要将大量不同的数据集输出到不同的文本文件。数据集共享一些需要输出的公共变量,但也有很多不同的变量。我已将这些不同的变量加载到由空格分隔的宏变量中,以便可以对其进行宏化。
所以我创建了一个宏,它循环遍历数据集并将每个数据集输出到不同的文本文件中。
为此,我在数据步骤中使用了 put 语句。 PUT 语句如下所示:
PUT (all the common variables shared by all the datasets), (macro variable containing all the dataset-specific variables);
例如:
%MACRO OUTPUT();
%DO N=1 %TO &TABLES_COUNT;
DATA _NULL_;
SET &&TABLE&N;
FILE 'PATH/&&TABLE&N..txt';
PUT a b c d "&vars";
RUN;
%END;
%MEND OUTPUT;
其中 &vars 是宏变量,其中包含在当前循环中输出数据集所需的所有变量。 例如,哪个得到解决:
PUT a b c d special1 special2 special5 ... special329;
现在的问题是,带引号的字符串只能是 262 个字符长。我试图输出的一些数据集有很多变量要输出,这个宏变量是一个带引号的字符串并包含所有这些变量,它将比这长得多。有没有其他方法可以做到这一点?
【问题讨论】:
-
我认为 PUT 语句可以引用的变量数量没有限制。但是为什么 PUT 语句中间有逗号?
-
删除了逗号并修改了问题。谢谢指出!
-
引号也不需要...
标签: sql macros sas proc enterprise-guide