2014-05-06 64 views
0

我有SAS代碼,它從外部文件.txt中讀取我的密碼,並與odbc建立連接。當我運行在SAS下面的代碼,它工作正常SAS明顯的符號引用PWD未解決

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

這是爲什麼發生?如何處理這個問題?

+1

如果你從企業運行指南您提交可以在遠程服務器上運行的代碼,在這種情況下,它可能無法「看到」您的'C:'驅動器。你會從數據步驟中得到任何錯誤嗎? – mjsqu

回答

4

因爲你的call symputx沒有正確定義它,至少根據你粘貼的代碼。

data _NULL_ ; 
    infile pw ; 
    input pw : $50. ; 
    call symputx('pwd',pw); 
run; 

這將是正確的語法(或更改輸入語句讀取pwd)。看看你的datastep的日誌,它應該有一個警告pwd was uninitialized

如果您正確粘貼了代碼,我仍然會查看您的數據步驟的日誌,並查看是否處理了任何行。 mjsqu可能是正確的,因爲您可能無法查看目錄(如果這在服務器上,並且您沒有訪問服務器可見目錄),或者由於您處於不同的環境而可能會出現其他問題。

3

你有一個錯字。我的猜測是你的原始變量被命名爲pwd,你測試了你的代碼,它運行良好,然後你重命名它。如果你關閉你的sas會話並嘗試重新運行它,我敢打賭它會失敗。

嘗試更改爲此:

filename pw "C:/xxxx"; 

data _NULL_ ; 
    infile pw ; 
    input pw : $50. ; 
    call symputx('pwd',pw); 
run;