在SAS中使用PROC FCMP远程定义函数

在SAS中使用PROC FCMP远程定义函数,sas,Sas,我刚刚从本页学习了PROC FCMP: 该函数在本地运行良好,因此我想知道是否可以远程使用此过程。在我看来,只要我更改此函数的输出库,它就可以在远程服务器中使用。这是我的密码: proc fcmp outlib=rwork.funcs.trial; function study_day2(intervention_date, event_date); n = event_date - intervention_date; if n >= 0 then

我刚刚从本页学习了PROC FCMP

该函数在本地运行良好,因此我想知道是否可以远程使用此过程。在我看来,只要我更改此函数的输出库,它就可以在远程服务器中使用。这是我的密码:

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;
对于第一部分,我注意到函数已保存在RWORK库中:

注:功能研究第2天保存到rwork.funcs.trial

但是,在运行第2部分后,我发现以下错误:

错误68-185:函数研究_第2天未知,或无法执行 访问


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

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

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


如果您的远程服务器与您的本地计算机是不同的操作系统或bitness,您不能这样做,需要将整个代码部分放入
rsubmit

感谢Joe的回答(特别是对选项CMPLIB的解释)。我按照你的建议修改了代码,但仍然得到相同的错误。有什么想法吗?@Nip远程计算机的操作系统和比特数是否与本地计算机相同?两者都是Windows,但我需要检查比特数。我要补充的是,我从未遇到过从一个Windows框到另一个Windows框的情况,所以我不知道是否(例如)您可以从桌面到服务器执行同样的操作-可能无法,并且必须
rsubmit
整个位。
rsubmit;
 options cmplib=work.funcs;
 data _null_;
    start = '15Feb2008'd;
    today = '27Mar2008'd;
    sd = study_day2(start, today);
    put sd=;
 run;
endrsubmit;