<?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: how to program like this? in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44002#M11581</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mike,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can be aware of two problems in your code:&lt;/P&gt;&lt;P&gt;1. Using %do %while (&amp;amp;var_name ne); when 'var_name' is not available until next step. %do %while evaluates expression at the top of the loop, instead, %do %until evaluates on the bottom.&lt;/P&gt;&lt;P&gt;2. Misused %scan(). "" should be removed from&amp;nbsp; %scan(&amp;amp;varlist,&amp;amp;i,"");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So the working code looks like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let varlist=yy zz aa;&lt;/P&gt;&lt;P&gt;%MACRO test(varlist=);&lt;/P&gt;&lt;P&gt;%let i=1;&lt;/P&gt;&lt;P&gt;%do %until (&amp;amp;var_name eq);&lt;/P&gt;&lt;P&gt;%let var_name=%scan(&amp;amp;varlist,&amp;amp;i);&lt;/P&gt;&lt;P&gt;%put &amp;amp;var_name;&lt;/P&gt;&lt;P&gt;%let i=%eval(&amp;amp;i+1);&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%test(varlist=&amp;amp;varlist)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As an alternative, you can also try:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%MACRO test(varlist=);&lt;/P&gt;&lt;P&gt;%do i=1 %to %sysfunc(countw(&amp;amp;varlist));&lt;/P&gt;&lt;P&gt;%let var_name&amp;amp;i=%scan(&amp;amp;varlist,&amp;amp;i);&lt;/P&gt;&lt;P&gt;%put &amp;amp;&amp;amp;var_name&amp;amp;i;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kindly Regards,&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 02 Feb 2012 12:37:48 GMT</pubDate>
    <dc:creator>Haikuo</dc:creator>
    <dc:date>2012-02-02T12:37:48Z</dc:date>
    <item>
      <title>how to program like this?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/43999#M11578</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;%let varlist=index1 index2 index3...........indexn;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to write one macro and assign index1-indexn to var_1-var-n.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wrote one as follows. Anyone can help me correct it? Greatly appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%MACRO test(varlist=);&lt;/P&gt;&lt;P&gt;%let i=1;&lt;/P&gt;&lt;P&gt;%do %while (xxxxxxx);&lt;/P&gt;&lt;P&gt;%let var_%left(&amp;amp;i)=%scan(&amp;amp;varlist,i,"");&lt;/P&gt;&lt;P&gt;%let i=%eval(&amp;amp;i+1);&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Feb 2012 07:48:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/43999#M11578</guid>
      <dc:creator>MikeTurner</dc:creator>
      <dc:date>2012-02-02T07:48:30Z</dc:date>
    </item>
    <item>
      <title>how to program like this?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44000#M11579</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm not sure if I got the logic in this.&lt;/P&gt;&lt;P&gt;Is it a coincidence that the variable in you varlist is named using an unbroken sequence no?&lt;/P&gt;&lt;P&gt;If not, you coulöd much simpler do:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let n = 12;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do i = 1 to &amp;amp;N.;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let var_&amp;amp;I. = index&amp;amp;I.&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/Linus&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Feb 2012 09:54:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44000#M11579</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2012-02-02T09:54:31Z</dc:date>
    </item>
    <item>
      <title>how to program like this?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44001#M11580</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;no,no. It's not what I meant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;try to think in the way.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let varlist=yy zz aa qq;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wrote one macro to display yy zz aa qq respectively as follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%MACRO test(varlist=);&lt;/P&gt;&lt;P&gt;%let i=1;&lt;/P&gt;&lt;P&gt;%do %while (&amp;amp;var_name ne);&lt;/P&gt;&lt;P&gt;%let var_name=%scan(&amp;amp;varlist,&amp;amp;i,"");&lt;/P&gt;&lt;P&gt;%put &amp;amp;var_name;&lt;/P&gt;&lt;P&gt;%let i=%eval(&amp;amp;i+1);&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%test(varlist=&amp;amp;varlist)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anything wrong with this macro? And If I want to get the number of string seperated by blank in &amp;amp;varlist, which function will work?&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Feb 2012 10:13:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44001#M11580</guid>
      <dc:creator>MikeTurner</dc:creator>
      <dc:date>2012-02-02T10:13:46Z</dc:date>
    </item>
    <item>
      <title>Re: how to program like this?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44002#M11581</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Mike,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can be aware of two problems in your code:&lt;/P&gt;&lt;P&gt;1. Using %do %while (&amp;amp;var_name ne); when 'var_name' is not available until next step. %do %while evaluates expression at the top of the loop, instead, %do %until evaluates on the bottom.&lt;/P&gt;&lt;P&gt;2. Misused %scan(). "" should be removed from&amp;nbsp; %scan(&amp;amp;varlist,&amp;amp;i,"");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So the working code looks like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let varlist=yy zz aa;&lt;/P&gt;&lt;P&gt;%MACRO test(varlist=);&lt;/P&gt;&lt;P&gt;%let i=1;&lt;/P&gt;&lt;P&gt;%do %until (&amp;amp;var_name eq);&lt;/P&gt;&lt;P&gt;%let var_name=%scan(&amp;amp;varlist,&amp;amp;i);&lt;/P&gt;&lt;P&gt;%put &amp;amp;var_name;&lt;/P&gt;&lt;P&gt;%let i=%eval(&amp;amp;i+1);&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%test(varlist=&amp;amp;varlist)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As an alternative, you can also try:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%MACRO test(varlist=);&lt;/P&gt;&lt;P&gt;%do i=1 %to %sysfunc(countw(&amp;amp;varlist));&lt;/P&gt;&lt;P&gt;%let var_name&amp;amp;i=%scan(&amp;amp;varlist,&amp;amp;i);&lt;/P&gt;&lt;P&gt;%put &amp;amp;&amp;amp;var_name&amp;amp;i;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kindly Regards,&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Feb 2012 12:37:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44002#M11581</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2012-02-02T12:37:48Z</dc:date>
    </item>
    <item>
      <title>Re: how to program like this?</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44003#M11582</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It sounds good. Thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 03 Feb 2012 03:30:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/how-to-program-like-this/m-p/44003#M11582</guid>
      <dc:creator>MikeTurner</dc:creator>
      <dc:date>2012-02-03T03:30:54Z</dc:date>
    </item>
  </channel>
</rss>

