Why do we need to use sysfunc when we call a SAS function inside a SAS macro I saw this piece of code in my project:

%let num = test;
%let x=%sysfunc(trim(&amp;num));


Why could not  I write: 

%let x= %trim(&amp;num);


Why did I need to use sysfunc?

Under what circumstances can I call a function inside a macro without using sysfunc?
Without the sysfunc(), the expression will not be evaluated. You will not be assigning the value of the expression trim(&amp;num) to the macrovariable, but rather the whole expression.

If you want to store the result of an expression, you need to execute that function with sysfunc()

http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#z3514sysfunc.htm