PROC當指定要在其中存儲已編譯函數/子例程的輸出數據集時,FCMP需要三級參數。 但是,當使用這些編譯函數時,SAS需要全局選項CMPLIB的兩級參數。什麼是使用PROC FCMP時的軟件包?
文檔說:
注意:子程序和函數的名稱必須是包中是唯一的。但是,不同的包可以具有相同名稱的子例程和函數。要選擇 當有歧義一個特定的ç子程序,預連接與 包名稱和週期X的子程序名(。)例如,要獲得倒數的MthFncs版本, 使用MthFncs.inverse
但我一直沒有能夠重現這種行爲。當這樣做的:
proc fcmp outlib=work.functions.pkg1;
function test(var1, var2);
return (var1+var2);
endsub;
run;
proc fcmp outlib=work.functions.pkg2;
function test(var1, var2);
return (var1*var2);
endsub;
run;
option cmplib=work.functions;
data _null_;
a=test(3,3);
b=pkg1.test(3,3);
c=pkg2.test(3,3);
put a= b= c=;
run;
程序崩潰並說:
ERROR: DATA STEP Component Object failure. Aborted during the COMPILATION phase.
31 b=pkg1.test(3,3);
_________
557
ERROR 557-185: Variable pkg1 is not an object.
這不是包裝是指將要使用的方法是什麼?難道我做錯了什麼?看起來像是:)但我看不到什麼。 謝謝!
已解決。感謝這兩個參考! – Willy 2010-10-26 10:19:10