Solved
New Contributor
Posts: 2

# In IML, is it possible to pass a function name as argument to other functions?

I want to pass the name of a function to another function as an argument in IML.  Is this possible? I'm running V9.4

``````proc iml;

start try1(x,y);
return(x+y);
finish;

start try2(x,y);
return (x*y);
finish;

start calc(x,y,func);
return ( func(x,y) );
finish;

x=2; y=3;
a = calc(x,y,"try1"); print a;
b = calc(x,y,"try2"); print b;

quit;``````

Accepted Solutions
Solution
‎10-23-2017 12:18 PM
New Contributor
Posts: 2

## Re: In IML, is it possible to pass a function name as argument to other functions?

Yes, I see.  I did not know of either of these two strategies.  Perfectly clear answer with your examples.  Thanks very much for the information.  A great help.

All Replies
SAS Super FREQ
Posts: 4,275

## Re: In IML, is it possible to pass a function name as argument to other functions?

Maybe. It depends what you are trying to do. Look at the APPLY function, which solves your trivial example.

``````proc iml;
start try1(x,y);
return(x+y);
finish;

start try2(x,y);
return (x*y);
finish;

x=2; y=3;
a = apply("try1", x,y); print a;
b = apply("try2", x,y); print b;``````
SAS Super FREQ
Posts: 4,275

## Re: In IML, is it possible to pass a function name as argument to other functions?

I guess the general answer is that you can build the function call as a text string and then use CALL EXECUTE to call the function:

``````start calc(x,y,func);
z = .;
cmd = "z = " + func + "(x,y);";
call execute( cmd );
return z;
finish;

x=2; y=3;
a = calc(x,y,"try1"); print a;
b = calc(x,y,"try2"); print b;
``````
Solution
‎10-23-2017 12:18 PM
New Contributor
Posts: 2

## Re: In IML, is it possible to pass a function name as argument to other functions?

Yes, I see.  I did not know of either of these two strategies.  Perfectly clear answer with your examples.  Thanks very much for the information.  A great help.

☑ This topic is solved.