我有SAS代码,它从外部.txt
文件中读取密码,并与odbc
建立连接。当我在SAS中运行以下代码时,它可以正常工作
filename pw "C:/xxxx";
data _NULL_ ;
infile pw ;
input pw : $50. ;
call symputx('pwd',pwd);
run;
libname xxx odbc user=myUser password=&pwd. dsn=myDsn schema=mySchema;
proc sql;
connect to xxx(dsn=myDsn user=myUser password=&pwd.);
但是,当我创建批处理文件以从Windows任务计划程序运行它或从SAS Enterprise Guide运行它时,我得到Apparent symbolic reference PWD not resolved
为什么会这样?如何处理这个问题?
答案 0 :(得分:5)
由于您的call symputx
未正确定义,至少根据您粘贴的代码。
data _NULL_ ;
infile pw ;
input pw : $50. ;
call symputx('pwd',pw);
run;
这将是正确的语法(或将输入语句更改为读取pwd
)。查看您的datastep的日志,它应该有一个警告pwd was uninitialized
。
如果您正确粘贴了代码,我仍会查看您的数据步骤的日志,并查看是否有任何行已处理。 mjsqu可能是正确的,因为您可能无法看到目录(如果这是在服务器上并且您没有访问服务器可见目录),或者由于您在某个目录中而可能存在某些其他问题不同的环境。
答案 1 :(得分:4)
你有一个错字。我的猜测是你的原始变量名为pwd
,你测试了你的代码,它运行正常,然后你重命名它。如果你关闭你的sas会话并尝试重新运行,我敢打赌它会失败。
尝试更改为:
filename pw "C:/xxxx";
data _NULL_ ;
infile pw ;
input pw : $50. ;
call symputx('pwd',pw);
run;