I'm not sure that my subject correctly explains what I am trying to do, but here is my question. I have a %LET variable (0 or 1) that I want to set at the beginning of my SAS script. I want to use this value to tell my script whether or not to execute one of two PROC SQL statements. Everything seems to work correctly with my MACRO call if I "hard code" the value into the call, but nothing executes if I attempt to use the %LET variable I am setting at the beginning of my script. I have tried a number of ways without success. What am I doing wrong? Any help would be greatly appreciated. Here is my code: /*************************************************************** SET variable at the beginning of the SAS script. Will be set to either 0 or 1 depending on circumstances. ***************************************************************/ %LET Upload_Has_Invalid_TIN = 0 /*************************************************************** Want to use the above variable to execute determine if all or only a portion of the PROC SQL script is executed. ***************************************************************/ %MACRO RunFull(HasTIN); %IF &HasTIN = 1 %THEN %DO; PROC SQL; CREATE TABLE WORK.TMP_TIN_PTY_UNION AS select PTY1.SortKey ,PTY1.TIN FROM WORK.tmp_TIN_PTY PTY1 UNION select PTY2.SortKey ,PTY2.TIN FROM WORK.tmp_TIN9 PTY2 ; QUIT; %END; %ELSE %IF &HasTIN = 0 %THEN %DO; PROC SQL; CREATE TABLE WORK.TMP_TIN_PTY_UNION AS select PTY1.SortKey ,PTY1.TIN FROM WORK.tmp_TIN_PTY PTY1 ; QUIT; %END; %MEND RunFull; /***************************************************************** I have attempted to included EACH of the following below "individually" as a MACRO call immediately below %MEND RunFull; (shown above) The only Macro call executions that work are 3 and 4 (Below). Can I not pass a %LET variable into a %MACRO execution? *****************************************************************/ /* 1 */ %RunFull(HasTIN=&Upload_Has_Invalid_TIN); /* THIS DOES NOT WORK */ /* 2 */ %RunFull(&Upload_Has_Invalid_TIN); /* THIS DOES NOT WORK */ /* 3 */ %RunFull(0); /* HARDCODING this value WORKS. Defeats purpose of %LET variable*/ /* 4 */ %RunFull(1); /* HARDCODING this value WORKS. Defeats purpose of %LET variable */ Thank you. John
... View more