gpt4 book ai didi

sas - 使用 PROC FCMP 时的包是什么?

转载 作者:行者123 更新时间:2023-12-04 06:43:00 25 4
gpt4 key购买 nike

在指定应存储已编译函数/子例程的输出数据集时,PROC FCMP 需要一个三级参数。
但是当使用这些编译函数时,SAS 需要全局选项 CMPLIB 的两级参数。

文档说:

Note: Subroutine and function names must be unique within a package. However, different packages can have subroutines and functions with the same names. To select a specific subroutine when there is ambiguity, prefix the subroutine name with the package name and a period (.) For example, to get the MthFncs version of inverse, use 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.

这不是包的使用方式吗?难道我做错了什么?看起来是的 :) 但我看不出是什么。
谢谢!

最佳答案

以下白皮书指出,无法让数据步骤在单个数据步骤中使用来自多个包的同名函数(第 15 页,标题为“存储和共享功能”):

http://support.sas.com/resources/papers/proceedings09/147-2009.pdf

但是,它确实提供了一些替代建议。

干杯


PS - 请务必查看 runsubmit.com - 就像堆栈溢出一样,但仅适用于 SAS 相关问题。

关于sas - 使用 PROC FCMP 时的包是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4016881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com