<?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 Can a do loop iterate over a list instead of a range? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Can-a-do-loop-iterate-over-a-list-instead-of-a-range/m-p/217785#M307852</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Let's say I have five datasets (dat1, dat2, dat3, dat6, and dat8) and I have a few operations I need to apply to each of them. I could, of course, just write out a separate data step for each data set, but I'm wondering if there's a way to combine it into a macro, something like the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro dostuff;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i in (1 2 3 6 8);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data dat&amp;amp;i; set dat&amp;amp;i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;operations&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%dostuff;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Similarly, could I iterate over a series of characters? (e.g. do i in ("horse" "giraffe" "pony" &lt;EM&gt;etc&lt;/EM&gt;...) )&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 08 Apr 2015 20:12:03 GMT</pubDate>
    <dc:creator>scify</dc:creator>
    <dc:date>2015-04-08T20:12:03Z</dc:date>
    <item>
      <title>Can a do loop iterate over a list instead of a range?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Can-a-do-loop-iterate-over-a-list-instead-of-a-range/m-p/217785#M307852</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Let's say I have five datasets (dat1, dat2, dat3, dat6, and dat8) and I have a few operations I need to apply to each of them. I could, of course, just write out a separate data step for each data set, but I'm wondering if there's a way to combine it into a macro, something like the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro dostuff;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i in (1 2 3 6 8);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data dat&amp;amp;i; set dat&amp;amp;i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;operations&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%dostuff;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Similarly, could I iterate over a series of characters? (e.g. do i in ("horse" "giraffe" "pony" &lt;EM&gt;etc&lt;/EM&gt;...) )&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Apr 2015 20:12:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Can-a-do-loop-iterate-over-a-list-instead-of-a-range/m-p/217785#M307852</guid>
      <dc:creator>scify</dc:creator>
      <dc:date>2015-04-08T20:12:03Z</dc:date>
    </item>
    <item>
      <title>Re: Can a do loop iterate over a list instead of a range?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Can-a-do-loop-iterate-over-a-list-instead-of-a-range/m-p/217786#M307853</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;%macro oink;&lt;/P&gt;&lt;P&gt; %let list=1 2 3 6 8;&lt;/P&gt;&lt;P&gt; %do i=1 %to %sysfunc(countw(&amp;amp;list));&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let value=%scan(&amp;amp;list,&amp;amp;i,%str( ));&lt;/P&gt;&lt;P&gt;&amp;nbsp; %put value &amp;amp;value;&lt;/P&gt;&lt;P&gt; %end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%oink&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Works if &amp;amp;list is character or numeric or mixed.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Apr 2015 20:29:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Can-a-do-loop-iterate-over-a-list-instead-of-a-range/m-p/217786#M307853</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2015-04-08T20:29:51Z</dc:date>
    </item>
    <item>
      <title>Re: Can a do loop iterate over a list instead of a range?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Can-a-do-loop-iterate-over-a-list-instead-of-a-range/m-p/217787#M307854</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Similarly, you can accomplish the same thing by using call execute. e.g.:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data cow horse pig;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set sashelp.class;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length excmd $255;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length dset $32;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do dset='cow', 'horse', 'pig';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; excmd=catx(' ','data',dset,'; set',dset,';');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call execute(excmd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; excmd='newheigt=height-20;';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call execute(excmd);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call execute('run;');&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Apr 2015 20:33:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Can-a-do-loop-iterate-over-a-list-instead-of-a-range/m-p/217787#M307854</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2015-04-08T20:33:57Z</dc:date>
    </item>
  </channel>
</rss>

