<?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: loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/loop/m-p/477028#M122798</link>
    <description>&lt;P&gt;As&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/30622"&gt;@gamotte&lt;/a&gt; already implied, you would have to use a macro loop. One possibility is to rewrite your %dataload macro to a recursive version:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro dataload(year=,month=,from=,to=);
  %if %length(&amp;amp;from) and %length(&amp;amp;to) %then %do;
    %do from=&amp;amp;from %to &amp;amp;to;
      %if %substr(&amp;amp;from,3)=13 %then /* new year */
        %let from=%eval(&amp;amp;from+88);
      %dataload(year=%substr(&amp;amp;from,1,2),month=%substr(&amp;amp;from,3));
      %end;
    %return;
    %end;
  /* here goes the contents of the original macro */
%mend;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;You could then call the macro as&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%dataload(from=1609,to=1711);&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 11 Jul 2018 10:42:59 GMT</pubDate>
    <dc:creator>s_lassen</dc:creator>
    <dc:date>2018-07-11T10:42:59Z</dc:date>
    <item>
      <title>loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/loop/m-p/476739#M122694</link>
      <description>&lt;P&gt;I made macro %dataload&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and want to load data once by using loop.. not that listing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%dataload(year=16,month=09);&lt;BR /&gt;%dataload(year=16,month=10);&lt;BR /&gt;%dataload(year=16,month=11);&lt;BR /&gt;%dataload(year=17,month=12);&lt;BR /&gt;%dataload(year=17,month=01);&lt;BR /&gt;%dataload(year=17,month=02);&lt;BR /&gt;%dataload(year=17,month=03);&lt;BR /&gt;%dataload(year=17,month=04);&lt;BR /&gt;%dataload(year=17,month=05);&lt;BR /&gt;%dataload(year=17,month=06);&lt;BR /&gt;%dataload(year=17,month=07);&lt;BR /&gt;%dataload(year=17,month=08);&lt;BR /&gt;%dataload(year=17,month=09);&lt;BR /&gt;%dataload(year=17,month=10);&lt;BR /&gt;%dataload(year=17,month=11);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;can I use do loop?&lt;/P&gt;&lt;P&gt;for example&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;%let start_year=16&lt;/P&gt;&lt;P&gt;%let end_year=18&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;do i = start_year to end_year;&lt;/P&gt;&lt;P&gt;do j= 1 to 12;&lt;/P&gt;&lt;P&gt;%dataload(year=i,month=j)&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jul 2018 11:14:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/loop/m-p/476739#M122694</guid>
      <dc:creator>asdfsa</dc:creator>
      <dc:date>2018-07-10T11:14:49Z</dc:date>
    </item>
    <item>
      <title>Re: loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/loop/m-p/476751#M122699</link>
      <description>&lt;P&gt;The macro PREprocessor does its work (generating code!) before any Base SAS code starts to run. Since your macro will leave Base SAS code in its place, that will destroy any data step logic.&lt;/P&gt;
&lt;P&gt;To call a macro from a data step (using values created in the data step), use call execute().&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jul 2018 11:47:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/loop/m-p/476751#M122699</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2018-07-10T11:47:40Z</dc:date>
    </item>
    <item>
      <title>Re: loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/loop/m-p/476753#M122701</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You have to use macro loops (and use &amp;amp; to resolve macrovariables values) :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let start_year=16
%let end_year=18

%do i = &amp;amp;start_year. %to &amp;amp;end_year.;
    %do j= 1 to 12;
        %dataload(year=&amp;amp;i.,month=&amp;amp;j.)
    %end;
%end;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit : Note that a macro loop can only be used inside a macro :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%macro mymacro;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;/* macro code */&lt;/P&gt;
&lt;P&gt;...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%mend;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%mymacro;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jul 2018 12:01:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/loop/m-p/476753#M122701</guid>
      <dc:creator>gamotte</dc:creator>
      <dc:date>2018-07-10T12:01:33Z</dc:date>
    </item>
    <item>
      <title>Re: loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/loop/m-p/476847#M122739</link>
      <description>&lt;P&gt;You can.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is something not working for you?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;CALL EXECUTE is usually simpler however.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/219265"&gt;@asdfsa&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;I made macro %dataload&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;and want to load data once by using loop.. not that listing&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%dataload(year=16,month=09);&lt;BR /&gt;%dataload(year=16,month=10);&lt;BR /&gt;%dataload(year=16,month=11);&lt;BR /&gt;%dataload(year=17,month=12);&lt;BR /&gt;%dataload(year=17,month=01);&lt;BR /&gt;%dataload(year=17,month=02);&lt;BR /&gt;%dataload(year=17,month=03);&lt;BR /&gt;%dataload(year=17,month=04);&lt;BR /&gt;%dataload(year=17,month=05);&lt;BR /&gt;%dataload(year=17,month=06);&lt;BR /&gt;%dataload(year=17,month=07);&lt;BR /&gt;%dataload(year=17,month=08);&lt;BR /&gt;%dataload(year=17,month=09);&lt;BR /&gt;%dataload(year=17,month=10);&lt;BR /&gt;%dataload(year=17,month=11);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;can I use do loop?&lt;/P&gt;
&lt;P&gt;for example&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let start_year=16&lt;/P&gt;
&lt;P&gt;%let end_year=18&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;do i = start_year to end_year;&lt;/P&gt;
&lt;P&gt;do j= 1 to 12;&lt;/P&gt;
&lt;P&gt;%dataload(year=i,month=j)&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jul 2018 15:15:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/loop/m-p/476847#M122739</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-07-10T15:15:51Z</dc:date>
    </item>
    <item>
      <title>Re: loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/loop/m-p/477028#M122798</link>
      <description>&lt;P&gt;As&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/30622"&gt;@gamotte&lt;/a&gt; already implied, you would have to use a macro loop. One possibility is to rewrite your %dataload macro to a recursive version:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro dataload(year=,month=,from=,to=);
  %if %length(&amp;amp;from) and %length(&amp;amp;to) %then %do;
    %do from=&amp;amp;from %to &amp;amp;to;
      %if %substr(&amp;amp;from,3)=13 %then /* new year */
        %let from=%eval(&amp;amp;from+88);
      %dataload(year=%substr(&amp;amp;from,1,2),month=%substr(&amp;amp;from,3));
      %end;
    %return;
    %end;
  /* here goes the contents of the original macro */
%mend;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;You could then call the macro as&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%dataload(from=1609,to=1711);&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 11 Jul 2018 10:42:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/loop/m-p/477028#M122798</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2018-07-11T10:42:59Z</dc:date>
    </item>
  </channel>
</rss>

