<?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 macro do loop problem in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/macro-do-loop-problem/m-p/83015#M23809</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I want to repeat each country's obs. for 31 times and the following statements run well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let country1=abudhabi;&lt;/P&gt;&lt;P&gt;%let country2=argentina;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro x;&lt;/P&gt;&lt;P&gt;data&amp;nbsp; %do i =1 %to 31;&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;nbsp; work.&amp;amp;country1&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; %end;;&lt;/P&gt;&lt;P&gt;set&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;country1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data&amp;nbsp; %do i =1 %to 31;&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;nbsp; work.&amp;amp;country2&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; %end;;&lt;/P&gt;&lt;P&gt;set&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;country2;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%mend x;&lt;/P&gt;&lt;P&gt;%x;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But because I have tens of countries, I also want to apply the do loop on "countryj". The commands I want is something like the commands below but it failed. Can anyone give me some advice? Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let country1=abudhabi;&lt;/P&gt;&lt;P&gt;%let country2=argentina;&lt;/P&gt;&lt;P&gt;%macro x;&lt;/P&gt;&lt;P&gt;%do j = 1 %to 2;&lt;/P&gt;&lt;P&gt;data&amp;nbsp; %do i =1 %to 31;&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;nbsp; work.&amp;amp;&amp;amp;country&amp;amp;j&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; %end;;&lt;/P&gt;&lt;P&gt;set&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp;country&amp;amp;j;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend x;&lt;/P&gt;&lt;P&gt;%x;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 14 Jun 2012 14:00:43 GMT</pubDate>
    <dc:creator>comeon2012</dc:creator>
    <dc:date>2012-06-14T14:00:43Z</dc:date>
    <item>
      <title>macro do loop problem</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/macro-do-loop-problem/m-p/83015#M23809</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I want to repeat each country's obs. for 31 times and the following statements run well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let country1=abudhabi;&lt;/P&gt;&lt;P&gt;%let country2=argentina;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro x;&lt;/P&gt;&lt;P&gt;data&amp;nbsp; %do i =1 %to 31;&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;nbsp; work.&amp;amp;country1&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; %end;;&lt;/P&gt;&lt;P&gt;set&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;country1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data&amp;nbsp; %do i =1 %to 31;&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;nbsp; work.&amp;amp;country2&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; %end;;&lt;/P&gt;&lt;P&gt;set&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;country2;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%mend x;&lt;/P&gt;&lt;P&gt;%x;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But because I have tens of countries, I also want to apply the do loop on "countryj". The commands I want is something like the commands below but it failed. Can anyone give me some advice? Thanks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let country1=abudhabi;&lt;/P&gt;&lt;P&gt;%let country2=argentina;&lt;/P&gt;&lt;P&gt;%macro x;&lt;/P&gt;&lt;P&gt;%do j = 1 %to 2;&lt;/P&gt;&lt;P&gt;data&amp;nbsp; %do i =1 %to 31;&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;nbsp; work.&amp;amp;&amp;amp;country&amp;amp;j&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; %end;;&lt;/P&gt;&lt;P&gt;set&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp;country&amp;amp;j;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend x;&lt;/P&gt;&lt;P&gt;%x;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jun 2012 14:00:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/macro-do-loop-problem/m-p/83015#M23809</guid>
      <dc:creator>comeon2012</dc:creator>
      <dc:date>2012-06-14T14:00:43Z</dc:date>
    </item>
    <item>
      <title>Re: macro do loop problem</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/macro-do-loop-problem/m-p/83016#M23810</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Examine how the extra ampersand plays out.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;amp;&amp;amp;country&amp;amp;i&amp;amp;j&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The fist time through the loops, this becomes&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;amp;country11&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And there is no such macro variable.&amp;nbsp; You would need to take advantage of using a dot to end a macro variable name, changing this to:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;amp;&amp;amp;country&amp;amp;i..&amp;amp;j&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On a secondary note, it might be easier to read the names if you change them slightly:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;amp;&amp;amp;country&amp;amp;i.._&amp;amp;j&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jun 2012 14:10:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/macro-do-loop-problem/m-p/83016#M23810</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2012-06-14T14:10:29Z</dc:date>
    </item>
    <item>
      <title>Re: macro do loop problem</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/macro-do-loop-problem/m-p/83017#M23811</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Looks like you all set, but here is another solution:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* If you already have a data set with all the country names then you don't need this data step */&lt;BR /&gt;/* Just use your countries data set in the proc sql step. */&lt;BR /&gt;/* Otherwise, create a data set with all of your countries */&lt;BR /&gt;data countries;&lt;BR /&gt; country='argentina';output;&lt;BR /&gt; country='abudhabi';output;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;BR /&gt; select count(*)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; into :countries&lt;BR /&gt;&amp;nbsp;&amp;nbsp; from countries&lt;BR /&gt; ;&lt;BR /&gt;quit; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro x;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do i=1 %to &amp;amp;countries.;&lt;/P&gt;&lt;P&gt; proc sql noprint;&lt;BR /&gt;&amp;nbsp; select country&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; into :country&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from countries (firstobs=&amp;amp;i. obs=&amp;amp;i.)&lt;BR /&gt;&amp;nbsp; ;&lt;BR /&gt; quit; &lt;/P&gt;&lt;P&gt; %let country=%trim(%left(&amp;amp;country.));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; /* You probably won't need this data step, I did just to make the code work */&lt;BR /&gt; data &amp;amp;country.;&lt;BR /&gt;&amp;nbsp; country="&amp;amp;country.";&lt;BR /&gt; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; data&lt;BR /&gt;&amp;nbsp; %do j=1 %to 31;&lt;BR /&gt;&amp;nbsp; work.&amp;amp;country.&amp;amp;j.&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt; ;&lt;BR /&gt;&amp;nbsp; set &amp;amp;country.;&lt;BR /&gt; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend x;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%x;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jun 2012 13:58:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/macro-do-loop-problem/m-p/83017#M23811</guid>
      <dc:creator>p12937</dc:creator>
      <dc:date>2012-06-19T13:58:39Z</dc:date>
    </item>
  </channel>
</rss>

