【发布时间】:2013-12-04 21:55:30
【问题描述】:
我有 4 个 txt 文件需要加载到 SAS 并将它们保存为 4 个 sas 文件。以下是文本文件的样子:cle20130805.txt、cle20130812.txt、cle20130819.txt 和 cle20130826.txt。我在 % Macro 下使用了 % Do 循环,以便只调用一次宏来导入 4 个文件。所以这是我的代码:
%macro cle;
%do i=20130805 %to 20130826 %by 7;
Data cleaug.cle&i;
infile "home/abc/cle&i..txt" dlm= '|' dsd firstobs=1 obs=100;
input a_no b_no c_no;
run;
%end;
%mend cle;
%cle
我希望只调用一次 marco 保存 4 个 sas 文件。但是它就是无法成功运行。任何想法我在代码中做错了什么?
谢谢,
【问题讨论】:
-
如果您希望我们理解“无法成功运行”,请包含错误消息或意外/不希望的结果。
-
来自 SAS 服务器的两组警告:1) 注意 49-169:在未来的 SAS 版本中,带引号的字符串后标识符的含义可能会发生变化。建议在带引号的字符串和后续标识符之间插入空格。 2)警告:当前正在处理的引用字符串的长度已超过 262 个字节。您可能有不平衡的引号。
-
两组警告没有帮助。这些警告说可能是什么。发布您的完整日志(如果需要,对真实文件名进行混淆)。在问题中,不在 cmets 中。
-
顺便说一句,我改变了 dlm='|'到 dlm="|"我仍然得到相同的两组警告。
-
问题解决了!问题是我在 infile 语句中遗漏了一个“/”。因为我在 Unix 服务器上运行 SAS,所以我必须有“/”来获取我的文件的正确目录。当我正确引用我的文件位置时: infile "/home/abc/cle&i..txt" dlm= '|' dsd firstobs=1 obs=100;整个marco运行成功。
标签: sas