<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Global Variable not Resolving in Macro in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455734#M115350</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Two things:&lt;/P&gt;&lt;P&gt;1) A macro variable won't resolve unless it's within double quotes I believe.&lt;/P&gt;&lt;P&gt;2) From what I can see is that you're trying to call the macro that makes the macro variable by using the macro variable that you haven't made yet.&amp;nbsp; Your Call Execute function&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;CALL &lt;SPAN class="token keyword"&gt;EXECUTE&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'%FCST_CHK1(&amp;amp;IVINC)'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;uses the &amp;amp;ivinc macro variable that is created by your %fcst_chk1 macro.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe you're trying to do the following instead?&amp;nbsp; You don't have to have parameters to run a macro.&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token macrobound"&gt;%MACRO&lt;/SPAN&gt; FCST_CHK1&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token macrostatement"&gt;%GLOBAL&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;IVINC&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;  

&lt;SPAN class="token procnames"&gt;PROC&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;SQL&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;	&lt;SPAN class="token statement"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;COUNT&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;VIN17&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;INTO&lt;/SPAN&gt; :IVINC
	&lt;SPAN class="token keyword"&gt;FROM&lt;/SPAN&gt; INCV&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	
&lt;SPAN class="token procnames"&gt;DATA&lt;/SPAN&gt; _NULL_&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; &lt;SPAN class="token comment"&gt;/* TEST IF INCENTIVE FILE IS EMPTY */&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;IF&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;IVINC &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;THEN&lt;/SPAN&gt; DO&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
		&lt;SPAN class="token statement"&gt;FILE&lt;/SPAN&gt; RETURNC&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
		&lt;SPAN class="token keyword"&gt;PUT&lt;/SPAN&gt;	&lt;SPAN class="token punctuation"&gt;@&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;01&lt;/SPAN&gt;	&lt;SPAN class="token string"&gt;'RETURN CODE 01: THE INCENTIVE FILE IS EMPTY'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
		&lt;SPAN class="token statement"&gt;ABORT&lt;/SPAN&gt; RETURN &lt;SPAN class="token number"&gt;01&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	END&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token macrobound"&gt;%MEND&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;FCST_CHK1&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token procnames"&gt;DATA&lt;/SPAN&gt; _NULL_&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;IF&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"&amp;amp;FCST_Y"&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'0'&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;THEN&lt;/SPAN&gt; CALL &lt;SPAN class="token keyword"&gt;EXECUTE&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'%FCST_CHK1'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 19 Apr 2018 19:29:57 GMT</pubDate>
    <dc:creator>JeffMeyers</dc:creator>
    <dc:date>2018-04-19T19:29:57Z</dc:date>
    <item>
      <title>Global Variable not Resolving in Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455664#M115310</link>
      <description>&lt;P&gt;I have a global variable created by a&amp;nbsp;SELECT :INTO and it was resolving when I was NOT using a macro. Now I need to bound a large part of my code inside a macro because I&amp;nbsp;need&amp;nbsp;to conditionally CALL EXECUTE this macro as a means to bypass or run the code. Below is a simplified version of what I am trying to do. The global variable &amp;amp;IVINC is not resolving. Thanks for the help!&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%MACRO FCST_CHK1(IVINC);
%GLOBAL &amp;amp;IVINC;  

PROC SQL;&lt;BR /&gt;	SELECT COUNT(VIN17)
	INTO :IVINC
	FROM INCV;
	
DATA _NULL_; /* TEST IF INCENTIVE FILE IS EMPTY */
	IF &amp;amp;IVINC = 0 THEN DO;
		FILE RETURNC;
		PUT	@01	'RETURN CODE 01: THE INCENTIVE FILE IS EMPTY';
		ABORT RETURN 01;
	END;

%MEND(FCST_CHK1);

DATA _NULL_;
	IF "&amp;amp;FCST_Y" = '0' THEN CALL EXECUTE('%FCST_CHK1(&amp;amp;IVINC)');&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 19 Apr 2018 16:44:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455664#M115310</guid>
      <dc:creator>DonnieJ</dc:creator>
      <dc:date>2018-04-19T16:44:22Z</dc:date>
    </item>
    <item>
      <title>Re: Global Variable not Resolving in Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455734#M115350</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Two things:&lt;/P&gt;&lt;P&gt;1) A macro variable won't resolve unless it's within double quotes I believe.&lt;/P&gt;&lt;P&gt;2) From what I can see is that you're trying to call the macro that makes the macro variable by using the macro variable that you haven't made yet.&amp;nbsp; Your Call Execute function&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;CALL &lt;SPAN class="token keyword"&gt;EXECUTE&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'%FCST_CHK1(&amp;amp;IVINC)'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&amp;nbsp;&amp;nbsp;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;uses the &amp;amp;ivinc macro variable that is created by your %fcst_chk1 macro.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Maybe you're trying to do the following instead?&amp;nbsp; You don't have to have parameters to run a macro.&lt;/P&gt;&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token macrobound"&gt;%MACRO&lt;/SPAN&gt; FCST_CHK1&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token macrostatement"&gt;%GLOBAL&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;IVINC&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;  

&lt;SPAN class="token procnames"&gt;PROC&lt;/SPAN&gt; &lt;SPAN class="token procnames"&gt;SQL&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;	&lt;SPAN class="token statement"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;COUNT&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;VIN17&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;INTO&lt;/SPAN&gt; :IVINC
	&lt;SPAN class="token keyword"&gt;FROM&lt;/SPAN&gt; INCV&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	
&lt;SPAN class="token procnames"&gt;DATA&lt;/SPAN&gt; _NULL_&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; &lt;SPAN class="token comment"&gt;/* TEST IF INCENTIVE FILE IS EMPTY */&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;IF&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;IVINC &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;THEN&lt;/SPAN&gt; DO&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
		&lt;SPAN class="token statement"&gt;FILE&lt;/SPAN&gt; RETURNC&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
		&lt;SPAN class="token keyword"&gt;PUT&lt;/SPAN&gt;	&lt;SPAN class="token punctuation"&gt;@&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;01&lt;/SPAN&gt;	&lt;SPAN class="token string"&gt;'RETURN CODE 01: THE INCENTIVE FILE IS EMPTY'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
		&lt;SPAN class="token statement"&gt;ABORT&lt;/SPAN&gt; RETURN &lt;SPAN class="token number"&gt;01&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	END&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token macrobound"&gt;%MEND&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;FCST_CHK1&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;

&lt;SPAN class="token procnames"&gt;DATA&lt;/SPAN&gt; _NULL_&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
	&lt;SPAN class="token keyword"&gt;IF&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;"&amp;amp;FCST_Y"&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token string"&gt;'0'&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;THEN&lt;/SPAN&gt; CALL &lt;SPAN class="token keyword"&gt;EXECUTE&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'%FCST_CHK1'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 19 Apr 2018 19:29:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455734#M115350</guid>
      <dc:creator>JeffMeyers</dc:creator>
      <dc:date>2018-04-19T19:29:57Z</dc:date>
    </item>
    <item>
      <title>Re: Global Variable not Resolving in Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455809#M115363</link>
      <description>&lt;P&gt;Not too sure I understood&amp;nbsp;your exact goal, but this works:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro fcst_chk1(ivinc);
  %global &amp;amp;ivinc;  

  proc sql noprint; select count(*) into :&amp;amp;ivinc trimmed from SASHELP.CLASS; quit;

  data _null_; if symget("&amp;amp;IVINC") = '0' then putlog 'a'; run;

%mend;
%let ivinc=aa;
data _null_;         
  if 1 then call execute('%fcst_chk1(&amp;amp;ivinc)');
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Apr 2018 02:43:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455809#M115363</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2018-04-20T02:43:34Z</dc:date>
    </item>
    <item>
      <title>Re: Global Variable not Resolving in Macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455895#M115401</link>
      <description>&lt;P&gt;You probably whant to made the macro variable INVIC global, i.e.:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;CHANGE&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token macrostatement"&gt;%GLOBAL&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;&amp;amp;&lt;/SPAN&gt;IVINC&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;TO&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token macrostatement"&gt;%GLOBAL&lt;/SPAN&gt; IVINC&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt; &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 20 Apr 2018 12:04:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Global-Variable-not-Resolving-in-Macro/m-p/455895#M115401</guid>
      <dc:creator>Rikard</dc:creator>
      <dc:date>2018-04-20T12:04:03Z</dc:date>
    </item>
  </channel>
</rss>

