Several call routine in SAS/IML are now can be defined in FCMP and used in data step and other proccedures. Here is an example for inverse a matrix(array) in data step.
proc fcmp outlib=sasuser.funcs.temp;;
subroutine invert (mat[*,*],invmat[*,*] );
outargs invmat;
call inv(mat, invmat);
endsub;
run;
quit;
options cmplib=sasuser.funcs;
data _null_;
array a(3,3) _temporary_ ( 1 2 3,
2 2 4,
3 4 5
);
array b(3,3) _temporary_ ;
call invert (a, b);
do i=1 to dim1(b);
do j=1 to dim2(b);
put b[i,j] @;
end;
put;
end;
run;
***check with iml;
proc iml;
a={ 1 2 3,
2 2 4,
3 4 5
};
b=inv(a);
print b;
quit;