That's a very good question. I've tried to create an FCMP function and then a DS2 FCMP package using that function and while the original function works fine in Base SAS it fails when called through the DS2 FCMP function with an error :
ERROR: Cannot find a library containing subroutine SOUNDEX.
This leads me to believe that functions not supported in DS2 can't be called even when wrapped inside an FCMP function.
For the record here's my code complete with tests
proc fcmp outlib=work.funcs;
function mysoundex(name $) $;
length retval $4;
put name=;
retval=soundex(name);
put retval=;
return(retval);
endsub;
run;
options cmplib=work.funcs;
data _null_;
length rc $4;
set sashelp.class;
rc=mysoundex(name);
put rc=;
run;
proc ds2;
package sndx / overwrite=yes
language='fcmp'
table='work.funcs';
run;
quit;
data class;
set sashelp.class;
run;
proc ds2;
data _null_;
dcl package sndx myval();
dcl char(4) retval;
method run();
set class;
retval=myval.mysoundex(name);
put retval=;
end;
run;
quit;
I would encourage you to log a support track with SAS which you can do here -> https://support.sas.com/ctx/supportform/createForm in case they have any suggestions...
I don't know about the other functions on your list but why not trying use SAS macro processor to handle your need for the SOUNDEX() function.
See if you can translate this simple datastep into PROC DS2 step.
data test ;
set sashelp.class ;
x1 = soundex(name);
x2 = resolve('%sysfunc(soundex('||name||'))');
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.