Yeah, this is funny. I don't think there is anything us, users, can do about it, though. I suspect that by the time your fcmp function executes, it has already received a missing value and that's it, since the arguments are passed as values by default. As far as I know, that is. 🙂
[pre]
proc fcmp outlib=work.func.test;
function isOne(x);
return (x=1);
endsub;
quit;
%let cmplib = %sysfunc(getoption(cmplib));
options cmplib = (&cmplib work.func);
data _null_;
ans = isOne(v);
put ans=;
run;
options cmplib = (&cmplib);
/* expected an "uninitialized" NOTE for the variable v, but no log messages at all */
[/pre]
... View more