<?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: Macro and semicolon in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77524#M16795</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Because the last statement in MACRO1 does not end in a semi-colon by the time SAS executes the statement MACRO1 has finished and removed its symbol space and hence the definition of the variable VAR1.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 10 Sep 2013 13:54:55 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2013-09-10T13:54:55Z</dc:date>
    <item>
      <title>Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77523#M16794</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; When I run the following code I get warning saying that "var1 not resolved" from the %put statement in Macro2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro Macro1(Var1 = myVar);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro1 with Var1 = &amp;amp;Var1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Macro2&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Mend Macro1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro Macro2(Var2);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro2 with Var1 = &amp;amp;Var1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Mend Macro2;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro1&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But when I change the code to the following (only change is semi colon after %Macro2 invocation line) Var1 is accessible from Macro2 and I get no warning. What is going on?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro Macro1(Var1 = myVar);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro1 with Var1 = &amp;amp;Var1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Macro2;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Mend Macro1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro Macro2(Var2);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro2 with Var1 = &amp;amp;Var1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Mend Macro2;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro1&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 13:42:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77523#M16794</guid>
      <dc:creator>Jakkas</dc:creator>
      <dc:date>2013-09-10T13:42:00Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77524#M16795</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Because the last statement in MACRO1 does not end in a semi-colon by the time SAS executes the statement MACRO1 has finished and removed its symbol space and hence the definition of the variable VAR1.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 13:54:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77524#M16795</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2013-09-10T13:54:55Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77525#M16796</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I believe macro variables defined within macro default to the local scope of macro variables and not global. Local meaning available during the implementation of the macro while global being available during the sas session.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So implementing the second macro within the first keeps the variable available to the second macro. You can have the same effect by declaring the var1 macro variable as global in the first macro: %global var1; (I didnt look the syntax up but I believe this is it).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope that helps.&lt;/P&gt;&lt;P&gt;EJ&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 13:54:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77525#M16796</guid>
      <dc:creator>esjackso</dc:creator>
      <dc:date>2013-09-10T13:54:59Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77526#M16797</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Tom. I dont know if I understand your reply, but if the issue is not having more statements then that doesn't seem to be the case as the following code also have same warning.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro Macro1(Var1 = myVar);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro1 with Var1 = &amp;amp;Var1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Macro2&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Return;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Mend Macro1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro Macro2(Var2);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro2 with Var1 = &amp;amp;Var1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Mend Macro2;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro1&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also the following code also gives no warning(only change is I removed the parameters to Macro2)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro Macro1(Var1 = myVar);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro1 with Var1 = &amp;amp;Var1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Macro2&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Mend Macro1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro Macro2;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro2 with Var1 = &amp;amp;Var1;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Mend Macro2;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;%Macro1&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 14:07:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77526#M16797</guid>
      <dc:creator>Jakkas</dc:creator>
      <dc:date>2013-09-10T14:07:40Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77527#M16798</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks EJ. I was just wondering the reason behind this unexpected behavior.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 14:09:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77527#M16798</guid>
      <dc:creator>Jakkas</dc:creator>
      <dc:date>2013-09-10T14:09:56Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77528#M16799</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Actually I think the issue that is since you defined macro2 with parameters it does not think you are finished calling macro two yet.&amp;nbsp; So either add () to the macro call or remove them from the macro definition.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro Macro1(Var1 = myVar);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro1 with Var1 = &amp;amp;Var1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %macro2()&lt;/P&gt;&lt;P&gt;%mend Macro1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro Macro2(Var2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %Put Inside Macro2 with Var1 = &amp;amp;Var1;&lt;/P&gt;&lt;P&gt;%mend Macro2;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro1()&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 14:14:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77528#M16799</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2013-09-10T14:14:16Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77529#M16800</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Tom, I think that is the learning here for me. If a macro takes parameters then using () is the correct way to invoke it, even if no value is passed.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 14:23:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77529#M16800</guid>
      <dc:creator>Jakkas</dc:creator>
      <dc:date>2013-09-10T14:23:22Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77530#M16801</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You are exactly right &lt;A __default_attr="2431" __jive_macro_name="user" class="jive_macro jive_macro_user" href="https://communities.sas.com/"&gt;&lt;/A&gt; ... missed that in my look over the code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;EJ&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 14:30:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77530#M16801</guid>
      <dc:creator>esjackso</dc:creator>
      <dc:date>2013-09-10T14:30:08Z</dc:date>
    </item>
    <item>
      <title>Re: Macro and semicolon</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77531#M16802</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is A correct way.&amp;nbsp; Anything that indicates to SAS that the macro call had been completed is fine.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Sep 2013 14:40:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-and-semicolon/m-p/77531#M16802</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2013-09-10T14:40:11Z</dc:date>
    </item>
  </channel>
</rss>

