使用SAS中的PROC FCMP远程定义功能

时间:2014-07-22 20:24:31

标签: sas

我刚从这个页面学到了 PROC FCMP

http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a003181727.htm

该函数在本地工作正常,所以我想知道我是否可以远程使用此proc。在我看来,只要我更改此功能的输出库,它就可以在远程服务器中使用。这是我的代码:

proc fcmp outlib=rwork.funcs.trial;
   function study_day2(intervention_date, event_date);
      n = event_date - intervention_date;
         if n >= 0 then
            n = n + 1;
         return (n);
   endsub;
options cmplib=rwork.funcs;
run;

rsubmit;
data _null_;
   start = '15Feb2008'd;
   today = '27Mar2008'd;
   sd = study_day2(start, today);
   put sd=;
run;
endrsubmit;

对于第1部分,我注意到该功能已保存在RWORK库中:

  

注意:函数study_day2已保存到rwork.funcs.trial。

然而,在运行第二部分后,我收到此错误:

  

错误68-185:函数STUDY_DAY2未知或不可能   访问。

有没有办法解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:0)

假设您想以这种方式编程(在本地计算机上编译该函数并远程运行它),并且您通过SAS / CONNECT连接的计算机与您的操作系统和位数(64/32位)相同在本地计算机上,您需要在rsubmit中运行options cmplib=rwork.funcs;(假设rwork指向您的远程工作目录,您可能需要将其更改为options cmplib=work.funcs;)。

rsubmit;
 options cmplib=work.funcs;
 data _null_;
    start = '15Feb2008'd;
    today = '27Mar2008'd;
    sd = study_day2(start, today);
    put sd=;
 run;
endrsubmit;

该选项不适用于proc fcmp,因为您似乎根据您找到它的位置来思考。它告诉SAS在使用函数时要查看的位置。 (outlib中的proc fcmp选项是将其存储在那里所需的选项。)

如果您的远程服务器与本地计算机的操作系统或位数不同,则无法执行此操作,并且需要将整段代码放在rsubmit中。