2014-01-29 55 views
1

您好,我在嘗試訪問遠程服務器並下載數據的宏時遇到了一些問題。下面的宏代碼是粗體,後面是日誌數據。主要問題是傳遞給宏的數據在遠程服務器上的調用中沒有解決,但是如果執行put語句。無法在遠程服務器上解析SAS宏變量

我假設有一些關於存儲在宏中的數據的本地性質沒有傳遞到遠程服務器,%put在本地執行,但遠程執行的上載不識別& sdb。

想法和幫助將不勝感激。

%macro getcrspprices(dvar,rl, rh, mvar, sdb, odb, cdb); 
%let wrds=wrds.wharton.upenn.edu 4016; 
options comamid=TCP remote=WRDS; 
signon username= %%%% password="%%%%" ; 
rsubmit; 
libname crsp '/wrds/crsp/sasdata/a_stock'; 
%put &sdb; 
proc upload data=&sdb out=dta; 
run; *upload file from my computer; 

LOG數據低於

的MPRINT輸出爲後來的部分斜體:

MPRINT(GETCRSPPRICES): ; libname crsp '/wrds/crsp/sasdata/a_stock'; 
SYMBOLGEN: Macro variable SDB resolves to work.spinnerslist 
work.spinnerslist 
MPRINT(GETCRSPPRICES): proc upload data=&sdb out=dta; 
MPRINT(GETCRSPPRICES): run; 

然後,錯誤圍繞載語句居中:

proc upload data=&sdb out=dta; 
        - 
        22 
        200 
WARNING: Apparent symbolic reference SDB not resolved. 
ERROR 22-322: Syntax error, expecting one of the following: a name, 
      a quoted string. 
ERROR 200-322: The symbol is not recognized and will be ignored. 

回答

1

我剛找到答案!要在遠程服務器上使用%syslput來獲取本地定義的宏變量。更多在這裏:http://support.sas.com/techsup/technote/ts697.pdf

希望這有助於今後的挫折

+1

在這種情況下,它需要它複製到本地會話的遠程宏變量 - 使用%SYSRPUT在遠程會話設置一個本地宏變量,例如'%SYSRPUT SDB =&SDB' –