BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Fluorite | Level 6

## How to return the number of declared inputs for the function in SAS IML

I would like to replicate following Matlab code with SAS IML:

%%% Trace function %%%
function val = mytrace(A,B)
if (nargin == 1)
val = sum(diag(A));
elseif (nargin == 2)
val = sum(sum(A.*B));
end
return
%%% end of mytrace.m %%%

I am wondering if there is any similar function in SAS which would return the number of declared inputs for the function just as the nargin(FUN) in matlab?

Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
Barite | Level 11

## Re: How to return the number of declared inputs for the function in SAS IML

I don't think there is a direct analog of 'nargin' in IML, however you could achieve the same effect by giving the input matrix B a blank default value, and then testing the type of matrix B, it will be undefined(U) if the call to the function has not provided a matrix B, or it will be numeric (N) if a value for B is given.  The syntax would be along the following lines:

``````  start mytrace(A, B=);
if type(B)='U' then return(trace(A)); else etc..;
finish;``````
2 REPLIES 2
Barite | Level 11

## Re: How to return the number of declared inputs for the function in SAS IML

I don't think there is a direct analog of 'nargin' in IML, however you could achieve the same effect by giving the input matrix B a blank default value, and then testing the type of matrix B, it will be undefined(U) if the call to the function has not provided a matrix B, or it will be numeric (N) if a value for B is given.  The syntax would be along the following lines:

``````  start mytrace(A, B=);
if type(B)='U' then return(trace(A)); else etc..;
finish;``````
SAS Super FREQ

## Re: How to return the number of declared inputs for the function in SAS IML

I agree with Ian.  You can use default parameter values. If necessary, you can use the ISSKIPPED function in a module to determine if an argument was provided or if the default value is being used.  You might enjoy reading the article "Everything you wanted to know about writing SAS/IML modules," which links to additional articles about default parameter values.

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
• 2 replies
• 988 views
• 5 likes
• 3 in conversation