<?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 in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42836#M8747</link>
    <description>I tried doing this. &lt;BR /&gt;
&lt;BR /&gt;
233  %let qtr = 2009-12TestNS;&lt;BR /&gt;
234&lt;BR /&gt;
235  %let qtrdata = %Qsubstr(%superQ(qtr), 1,7 )||PROD;&lt;BR /&gt;
236&lt;BR /&gt;
237  %put &amp;amp;qtr &amp;amp;qtrdata;&lt;BR /&gt;
2009-12TestNS 2009-12||PROD&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
I'm expecting &amp;amp;qtrdata = 2009-12Prod</description>
    <pubDate>Tue, 19 Jan 2010 17:43:46 GMT</pubDate>
    <dc:creator>deleted_user</dc:creator>
    <dc:date>2010-01-19T17:43:46Z</dc:date>
    <item>
      <title>macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42831#M8742</link>
      <description>%let qtr = 2009-12TestNS;&lt;BR /&gt;
&lt;BR /&gt;
data _null_;&lt;BR /&gt;
 Call symput('qtrdata',%substr(&amp;amp;qtr,1,7));&lt;BR /&gt;
run; &lt;BR /&gt;
&lt;BR /&gt;
%put &amp;amp;qtr &amp;amp;qtrdata;&lt;BR /&gt;
&lt;BR /&gt;
70   %put &amp;amp;qtr &amp;amp;qtrdata;&lt;BR /&gt;
2009-12TestNS         1997&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
Do you know why it is doing &amp;amp;qtrdata = 1997??&lt;BR /&gt;
&lt;BR /&gt;
I'm expecting &amp;amp;qtrdata = 2009-12</description>
      <pubDate>Tue, 19 Jan 2010 16:36:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42831#M8742</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-01-19T16:36:51Z</dc:date>
    </item>
    <item>
      <title>Re: macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42832#M8743</link>
      <description>Yes.&lt;BR /&gt;
[pre]&lt;BR /&gt;
Call symput('qtrdata',%substr(&amp;amp;qtr,1,7));&lt;BR /&gt;
[/pre]&lt;BR /&gt;
will resolve to:&lt;BR /&gt;
[pre]&lt;BR /&gt;
Call symput('qtrdata',2009-12);&lt;BR /&gt;
[/pre]&lt;BR /&gt;
So 2009-12 = 1997.&lt;BR /&gt;
&lt;BR /&gt;
SAS is doing an implicit numeric to char conversion and assigning '1997' to QTRDATA.&lt;BR /&gt;
&lt;BR /&gt;
enclose your value into double quotes, like this&lt;BR /&gt;
[pre]&lt;BR /&gt;
Call symput('qtrdata',"%substr(&amp;amp;qtr,1,7)");&lt;BR /&gt;
[/pre]&lt;BR /&gt;
or &lt;BR /&gt;
&lt;BR /&gt;
switch the macro function %substr to its datastep equivalent, and use double quotes arround QTR&lt;BR /&gt;
[pre]&lt;BR /&gt;
Call symput('qtrdata',substr("&amp;amp;qtr",1,7));&lt;BR /&gt;
[/pre]&lt;BR /&gt;
Cheers from Portugal&lt;BR /&gt;
&lt;BR /&gt;
Daniel Santos @ &lt;A href="http://www.cgd.pt" target="_blank"&gt;www.cgd.pt&lt;/A&gt;</description>
      <pubDate>Tue, 19 Jan 2010 16:56:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42832#M8743</guid>
      <dc:creator>DanielSantos</dc:creator>
      <dc:date>2010-01-19T16:56:10Z</dc:date>
    </item>
    <item>
      <title>Re: macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42833#M8744</link>
      <description>Thank you!! It works. &lt;BR /&gt;
&lt;BR /&gt;
how do i do it without call symput and just %let?&lt;BR /&gt;
&lt;BR /&gt;
%let qtr = 2009-12TestNS;&lt;BR /&gt;
&lt;BR /&gt;
%let qtrdata = ???</description>
      <pubDate>Tue, 19 Jan 2010 17:19:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42833#M8744</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-01-19T17:19:33Z</dc:date>
    </item>
    <item>
      <title>Re: macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42834#M8745</link>
      <description>%Qsubstr( %superQ(qtr), 1,7 )&lt;BR /&gt;
I've used the macro quoting functions to protect the minus sign from being treated as syntax</description>
      <pubDate>Tue, 19 Jan 2010 17:39:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42834#M8745</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2010-01-19T17:39:09Z</dc:date>
    </item>
    <item>
      <title>Re: macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42835#M8746</link>
      <description>macro quoting is overkill here, as this saslog snippet indicates[pre]49   %let qtr = 2009-12TestNS;&lt;BR /&gt;
50   %let qtrdata = %substr( &amp;amp;qtr, 1,7 ) ;&lt;BR /&gt;
51   %put &amp;amp;qtrdata ;&lt;BR /&gt;
2009-12&lt;BR /&gt;
[/pre]&lt;BR /&gt;
PeterC</description>
      <pubDate>Tue, 19 Jan 2010 17:43:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42835#M8746</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2010-01-19T17:43:43Z</dc:date>
    </item>
    <item>
      <title>Re: macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42836#M8747</link>
      <description>I tried doing this. &lt;BR /&gt;
&lt;BR /&gt;
233  %let qtr = 2009-12TestNS;&lt;BR /&gt;
234&lt;BR /&gt;
235  %let qtrdata = %Qsubstr(%superQ(qtr), 1,7 )||PROD;&lt;BR /&gt;
236&lt;BR /&gt;
237  %put &amp;amp;qtr &amp;amp;qtrdata;&lt;BR /&gt;
2009-12TestNS 2009-12||PROD&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
I'm expecting &amp;amp;qtrdata = 2009-12Prod</description>
      <pubDate>Tue, 19 Jan 2010 17:43:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42836#M8747</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-01-19T17:43:46Z</dc:date>
    </item>
    <item>
      <title>Re: macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42837#M8748</link>
      <description>in the macro language of SAS, that concatenation symbol is unneccessary and is being treated as text[pre]&lt;BR /&gt;
53   %let qtr = 2009-12TestNS;&lt;BR /&gt;
54   %let qtrdata = %substr( &amp;amp;qtr, 1,7 )PROD;&lt;BR /&gt;
55   %put &amp;amp;qtrdata ;&lt;BR /&gt;
2009-12PROD[/pre]</description>
      <pubDate>Tue, 19 Jan 2010 17:46:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42837#M8748</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2010-01-19T17:46:59Z</dc:date>
    </item>
    <item>
      <title>Re: macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42838#M8749</link>
      <description>ah! thanks a lot!</description>
      <pubDate>Tue, 19 Jan 2010 17:58:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/macro/m-p/42838#M8749</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-01-19T17:58:51Z</dc:date>
    </item>
  </channel>
</rss>

