1

proc fcmp を使用して、SAS9.3 で独自の関数を定義したいと考えています。OSはaix 64bitです。これが私のコードです(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 CATALOG instread に戻ります。警告: 関数 gen_sub_rule を mylib.funcs.rule に保存できませんでした。

誰でも助けてくれますか?ありがとう!

4

1 に答える 1

1

解決しました!https://communities.sas.com/t5/Base-SAS-Programming/Irritating-warning-in-Proc-FCMP/td-p/16216
の参照キーは cmplib オプションです。

    libname mylib 'H:\saslib\testlib';
    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;
于 2016-11-18T06:51:15.440 に答える