【发布时间】:2018-09-14 13:49:11
【问题描述】:
我正在尝试传递由 Call symputx 创建的具有特殊字符(下划线)的宏变量,但无法成功,这是我编写的代码。
data _null_;
call symputx('name', scan( "&table" ,2,'.')); run;
%let location= E:\drives\Monthly;
Proc export data=file
outfile= "&location.\&name..txt" dbms=dlm replace;
run;
当NAME 宏变量没有特殊字符时,代码可以完美执行,但是会显示身份验证失败或无法解析宏或任何其他错误。
我想掩盖特殊字符,我该怎么做?
以下是详细信息:(由@Richard 评论添加)
%let location=%nrstr(E:\Reports\Monthly\Updates (NEW)_UPPDATE_LIST);
%let Name = %nrstr(Table_20);
Proc export dbms=dlm
data=Newfile
replace
outfile= "&location=.\&Name..txt" ;
run;
当我在表名中有下划线时,它会给出这个错误
ERROR: Insufficient authorization to access
E:\Reports\Monthly\Updates (NEW)_UPPDATE_LIST
我必须补充一件事,我正在使用 %include 语句来运行程序。
【问题讨论】:
-
名字可以有什么特殊字符
-
只有下划线
-
我试过 %let table =new._one;它对我有用
-
&NAME 中唯一会给 SAS 带来麻烦的特殊字符是
",因为这会导致生成无效的 SAS 语法。可能有其他字符不是 SAS 特殊的,但在您的操作系统上作为文件名的一部分是无效的。喜欢:。什么角色给你带来了问题? -
显示实际输入数据。显示 SAS 日志中的实际行以及 SAS 生成的错误。