Statistical programming, matrix languages, and more

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

Accepted Solution Solved
Reply
New Contributor
Posts: 2
Accepted Solution

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.

View solution in original post


All Replies
SAS Super FREQ
Posts: 3,831

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: 3,831

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.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 299 views
  • 3 likes
  • 2 in conversation