<?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 SAS Macro Do Loop not looping in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Do-Loop-not-looping/m-p/690635#M210100</link>
    <description>&lt;P&gt;Hello!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a simple macro do loop where i'm trying to repeat the same proc summary and print to a dataset for each iteration of my specified variable. The below code is what I have written, it does not produce an error however it stays stuck on the first macro var and repeats over and over again.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;%MACRO&lt;/STRONG&gt; &lt;STRONG&gt;&lt;EM&gt;SUMMARY&lt;/EM&gt;&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%LET i=1;&lt;/P&gt;
&lt;P&gt;%LET REGIONVAR=NDR KKR MSR HAM;&lt;/P&gt;
&lt;P&gt;%LET REGION= %SCAN(&amp;amp;REGIONVAR,&amp;amp;i); %PUT REGION;&lt;/P&gt;
&lt;P&gt;%DO %WHILE (&amp;amp;REGION NE );&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PROC SUMMARY DATA=&amp;amp;REGION;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;VAR HIB_COMPLETE HIB2_COMPLETE RTV_COMPLETE DTP_COMPLETE DTP3_COMPLETE OPV_COMPLETE MMR_COMPLETE HBV_COMPLETE&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VAX_COMPLETE PCV_COMPLETE PCV2_COMPLETE FLU_COMPLETE FLU3_COMPLETE FLU_6MONTHS HAV_COMPLETE HAV2_COMPLETE COMPLETE431FS314 HBV_BD_COMPLETE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;OUTPUT OUT=CI MEAN= LCLM= UCLM=/AUTONAME;&lt;/P&gt;
&lt;P&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA &amp;amp;REGION._CI;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF _N_=&lt;STRONG&gt;1&lt;/STRONG&gt; THEN SET CI(DROP=_TYPE_ _FREQ_);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET &amp;amp;REGION;&lt;/P&gt;
&lt;P&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%END;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;%MEND&lt;/STRONG&gt; SUMMARY;&lt;/P&gt;
&lt;P&gt;%&lt;STRONG&gt;&lt;EM&gt;SUMMARY&lt;/EM&gt;&lt;/STRONG&gt; (NDR KKR MSR HAM);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;the log is just this over and over, which is correct, but I also need this result for KKR, MSR, HAM etc.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;NOTE: There were 192754 observations read from the data set WORK.NDR.&lt;BR /&gt;NOTE: The data set WORK.CI has 1 observations and 56 variables.&lt;BR /&gt;NOTE: PROCEDURE SUMMARY used (Total process time):&lt;BR /&gt;real time 0.12 seconds&lt;BR /&gt;cpu time 0.51 seconds&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;NOTE: There were 1 observations read from the data set WORK.CI.&lt;BR /&gt;NOTE: There were 192754 observations read from the data set WORK.NDR.&lt;BR /&gt;NOTE: The data set WORK.NDR_CI has 192754 observations and 114 variables.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 0.17 seconds&lt;BR /&gt;cpu time 0.18 seconds&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any insight would be helpful, thank you!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 10 Oct 2020 03:56:35 GMT</pubDate>
    <dc:creator>TPayne</dc:creator>
    <dc:date>2020-10-10T03:56:35Z</dc:date>
    <item>
      <title>SAS Macro Do Loop not looping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Do-Loop-not-looping/m-p/690635#M210100</link>
      <description>&lt;P&gt;Hello!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a simple macro do loop where i'm trying to repeat the same proc summary and print to a dataset for each iteration of my specified variable. The below code is what I have written, it does not produce an error however it stays stuck on the first macro var and repeats over and over again.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;%MACRO&lt;/STRONG&gt; &lt;STRONG&gt;&lt;EM&gt;SUMMARY&lt;/EM&gt;&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%LET i=1;&lt;/P&gt;
&lt;P&gt;%LET REGIONVAR=NDR KKR MSR HAM;&lt;/P&gt;
&lt;P&gt;%LET REGION= %SCAN(&amp;amp;REGIONVAR,&amp;amp;i); %PUT REGION;&lt;/P&gt;
&lt;P&gt;%DO %WHILE (&amp;amp;REGION NE );&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PROC SUMMARY DATA=&amp;amp;REGION;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;VAR HIB_COMPLETE HIB2_COMPLETE RTV_COMPLETE DTP_COMPLETE DTP3_COMPLETE OPV_COMPLETE MMR_COMPLETE HBV_COMPLETE&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VAX_COMPLETE PCV_COMPLETE PCV2_COMPLETE FLU_COMPLETE FLU3_COMPLETE FLU_6MONTHS HAV_COMPLETE HAV2_COMPLETE COMPLETE431FS314 HBV_BD_COMPLETE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;OUTPUT OUT=CI MEAN= LCLM= UCLM=/AUTONAME;&lt;/P&gt;
&lt;P&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA &amp;amp;REGION._CI;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF _N_=&lt;STRONG&gt;1&lt;/STRONG&gt; THEN SET CI(DROP=_TYPE_ _FREQ_);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET &amp;amp;REGION;&lt;/P&gt;
&lt;P&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%END;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;%MEND&lt;/STRONG&gt; SUMMARY;&lt;/P&gt;
&lt;P&gt;%&lt;STRONG&gt;&lt;EM&gt;SUMMARY&lt;/EM&gt;&lt;/STRONG&gt; (NDR KKR MSR HAM);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;the log is just this over and over, which is correct, but I also need this result for KKR, MSR, HAM etc.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;NOTE: There were 192754 observations read from the data set WORK.NDR.&lt;BR /&gt;NOTE: The data set WORK.CI has 1 observations and 56 variables.&lt;BR /&gt;NOTE: PROCEDURE SUMMARY used (Total process time):&lt;BR /&gt;real time 0.12 seconds&lt;BR /&gt;cpu time 0.51 seconds&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;NOTE: There were 1 observations read from the data set WORK.CI.&lt;BR /&gt;NOTE: There were 192754 observations read from the data set WORK.NDR.&lt;BR /&gt;NOTE: The data set WORK.NDR_CI has 192754 observations and 114 variables.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 0.17 seconds&lt;BR /&gt;cpu time 0.18 seconds&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any insight would be helpful, thank you!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 10 Oct 2020 03:56:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Do-Loop-not-looping/m-p/690635#M210100</guid>
      <dc:creator>TPayne</dc:creator>
      <dc:date>2020-10-10T03:56:35Z</dc:date>
    </item>
    <item>
      <title>Re: SAS Macro Do Loop not looping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Do-Loop-not-looping/m-p/690640#M210103</link>
      <description>&lt;P&gt;You have the intention to loop over the 4 regions, but&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;you never increment i from 1 to 4 - it always states at 1, (2) your call to the macro&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Your call to the macro&lt;BR /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;%SUMMARY (NDR KKR MSR HAM);&lt;BR /&gt;lists a single argument with 4 components, but yours macro declaration statement&lt;BR /&gt;&amp;nbsp; &amp;nbsp;%macro summary;&lt;BR /&gt;makes no provision for that argument.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Here is what I think you are trying to do:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%MACRO SUMMARY (regions);

%do i=1 %to %sysfunc(countw(&amp;amp;regions)); 
  %LET REGION= %SCAN(&amp;amp;REGIONS,&amp;amp;i);
  %put &amp;amp;region;
  PROC SUMMARY DATA=&amp;amp;REGION;
    VAR HIB_COMPLETE HIB2_COMPLETE RTV_COMPLETE DTP_COMPLETE DTP3_COMPLETE OPV_COMPLETE MMR_COMPLETE HBV_COMPLETE
      VAX_COMPLETE PCV_COMPLETE PCV2_COMPLETE FLU_COMPLETE FLU3_COMPLETE FLU_6MONTHS HAV_COMPLETE HAV2_COMPLETE COMPLETE431FS314 HBV_BD_COMPLETE;
    OUTPUT OUT=CI MEAN= LCLM= UCLM=/AUTONAME;
  RUN;

  DATA &amp;amp;REGION._CI;
    IF _N_=1 THEN SET CI(DROP=_TYPE_ _FREQ_);
    SET &amp;amp;REGION;
  RUN;
%END;

%MEND SUMMARY;

%SUMMARY (NDR KKR MSR HAM);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;BTW you have&lt;BR /&gt;&amp;nbsp; &amp;nbsp;%put REGION;&lt;BR /&gt;which only writes the word "REGION".&amp;nbsp; In the above, note I have&lt;BR /&gt;&amp;nbsp; %put&amp;nbsp; &amp;amp;region&lt;BR /&gt;which will write the VALUE of the macrovar named region.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And for experimentation, replace it with&amp;nbsp;&lt;BR /&gt;&amp;nbsp; &amp;nbsp;%put &amp;amp;=region;&lt;/P&gt;</description>
      <pubDate>Sat, 10 Oct 2020 05:21:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Do-Loop-not-looping/m-p/690640#M210103</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-10-10T05:21:52Z</dc:date>
    </item>
    <item>
      <title>Re: SAS Macro Do Loop not looping</title>
      <link>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Do-Loop-not-looping/m-p/690695#M210135</link>
      <description>&lt;P&gt;You have programmed an infinite loop.&amp;nbsp; Your %DO WHILE() condition is going to always be true because there is nothing inside the loop to change the value of &amp;amp;REGION.&lt;/P&gt;
&lt;P&gt;Since you have the list of values up front just use a normal %DO loop instead. You can use the COUNTW() function (wrapped in the %SYSFUNC() macro function) to set the upper bound for the loop.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%DO I=1 %to %sysfunc(countw(&amp;amp;REGIONVAR,%str( )));
  %LET REGION= %SCAN(&amp;amp;REGIONVAR,&amp;amp;i,%str( )); 
  ...
%END;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 10 Oct 2020 18:05:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/SAS-Macro-Do-Loop-not-looping/m-p/690695#M210135</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2020-10-10T18:05:16Z</dc:date>
    </item>
  </channel>
</rss>

