Why do we need to use sysfunc when we call a SAS function inside a SAS macro
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