【问题标题】:SAS Macro variables not resolving in remote serverSAS 宏变量未在远程服务器中解析
【发布时间】:2014-01-29 11:50:59
【问题描述】:

您好,我在尝试访问远程服务器并下载数据的宏时遇到了一些问题。下面的宏代码是粗体的,后面是日志数据。主要问题是传递给宏的数据不会在远程服务器上的调用中解析,而是在执行 put 语句时解析。

我假设存储在宏中的数据的本地性质没有传递到远程服务器,%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.

【问题讨论】:

    标签: sas sas-macro


    【解决方案1】:

    我刚刚找到了答案!要在远程服务器上获取本地定义的宏变量,请使用 %syslput。更多内容:http://support.sas.com/techsup/technote/ts697.pdf

    希望这有助于未来的挫折

    【讨论】:

    • 在这种情况下,需要复制到本地会话的是远程宏变量 - 在远程会话中使用 %SYSRPUT 设置本地宏变量,例如%SYSRPUT SDB = &SDB
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 2021-10-08
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多