SAS9.3 PROC FCMP 无法保存用户自定义函数



我想使用 proc fcmp 在 SAS9.3 中定义我自己的函数。操作系统是 aix 64 位。这是我的代码(reg_func.sas):

proc fcmp outlib=mylib.funcs.rule;
function gen_sub_rule();
put "this is a test function";
return (0);
endsub;
run;
quit;

但是在运行 SAS reg_func.sas 后,我收到了一些警告

警告:无法将模型转换为数据集 mylib.funcs,因为它已当前打开或已作为标准数据集存在。将恢复到 V8 目录初始化。警告:无法将函数gen_sub_rule保存到 mylib.funcs.rule。

谁能帮忙?谢谢!

解决了!参考 https://communities.sas.com/t5/Base-SAS-Programming/Irritating-warning-in-Proc-FCMP/td-p/16216
关键是 cmplib 选项,这是我的代码:

    libname mylib 'H:saslibtestlib';
    proc fcmp outlib=mylib.funcs.rule;
      function calc(var);
         newvar=log(var);
         return(newvar);
      endsub;
     function gen_str(var1 $, var2 $, var3 $) $100;
        length newvar $100;
        newvar=catx('#', var1, var2, var3);
        return(newvar);
      endsub;
    Run;
    /*list the source code*/
    Options cmplib=_null_; 
    proc fcmp library=mylib.funcs;
      listfunc calc gen_str;
      run;
    Quit;
    /*using func*/
    options cmplib=mylib.funcs; 
      data _null_;
        numret=calc(20);
       charret=gen_str('what', 'is', 'your');
       put numret= charret=;
    run;
    /*delete the func*/
    options cmplib=mylib.funcs; 
    proc fcmp outlib=mylib.funcs.rule;
    deletefunc calc;
    run;
    quit;

最新更新