One of the most common problems to occur when using a macro variable created with SYMPUT is trying to reference it before it is actually created. When creating a macro variable with CALL SYMPUT, one of the most important things to know is when the variable is created. CALL SYMPUT is a DATA step statement, so it does not create the macro variable until DATA step execution time.
This is important because macro variable references resolve during the compilation of the DATA step. As a result, the following rules are true: