proc fcmp
函数允许将哈希对象作为参数传递。文档有点含糊,它没有提到此功能是否仅限于来自其他fcmp
函数的调用,或者是否也允许来自数据步骤调用。
我试图在数据步骤中定义一个哈希,然后通过引用一个fcmp
函数来传递该哈希。然而,当我尝试下面的代码时,它给了我:NOTE: Invalid type conversion
而且我不确定我哪里出错了(或者这是否可能)。
option cmplib=work.funcs;
proc fcmp outlib=work.funcs.funcs;
function test(h hash);
return (0);
endsub;
run;
data _null_;
format pos best.;
if _n_ eq 1 then do;
declare hash h();
rc = h.definekey('pos');
rc = h.definedone();
call missing (pos);
end;
xx = test2(h);
put _all_;
run;
我试图这样做的原因是因为我希望最终有几个函数可以将同一个哈希表作为参数传递给它们。