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