DATA Step, Macro, Functions and more

%Sysfunc function

Reply
Occasional Contributor
Posts: 11

%Sysfunc function

[ Edited ]

%sysfunc - why this function we use?

Super User
Posts: 19,851

Re: function

Documentation:

Execute SAS functions or user-written functions.

 

Logic:

How does SAS macro processing know if text you type is a string or a function? Wrapping it with SYSFUNC tells the processor that you want to evaluate that function, not treat it as a string.

%let my_func = substr(Awesome, 1, 2);
%let my_func_executed = %sysfunc(substr(Awesome, 1, 3));

%put &my_func;
%put &my_func_executed;

Results:

 

 

54 %let my_func = substr(Awesome, 1, 2);
55 %let my_func_executed = %sysfunc(substr(Awesome, 1, 3));
56
57 %put &my_func;
substr(Awesome, 1, 2)
58 %put &my_func_executed;
Awe
Super User
Posts: 5,516

Re: %Sysfunc function

Macro language contains just a handful of functions.  DATA steps, on the other hand, contain hundreds of functions.  %SYSFUNC was invented so that you could tell macro language to use a DATA step function.  That way, the macro language would not have to reprogram all those DATA step functions into a macro language version.  Most DATA step functions (not all) can be called using %SYSFUNC.

Ask a Question
Discussion stats
  • 2 replies
  • 248 views
  • 5 likes
  • 3 in conversation