Add something to your DATA step like PUTLOG _ALL_; to dump SAS variables with each DATA step pass. The SYMPUT is executing with each DATA step pass, but if you read the CALL EXECUTE discussion, it states that the code is not compiled until after the DATA step is finished. You will need to generate %LET statements to set the macro variable value, instead of the CALL SYMPUT approach. Then you will see the "generated" SAS code compiled and executed after completing your first DATA step.
Of course, another approach would be to output the SAS code to a "temp" FILENAME allocation using PUT statements, and then %INCLUDE the temp file "fileref". Less smoke-and-mirrors occurring that way.
Scott Barry
SBBWorks, Inc.