<?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 Create a macro array and call a macro for each element in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Create-a-macro-array-and-call-a-macro-for-each-element/m-p/713501#M220135</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have create a macro array that I want to loop over&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;sql&lt;/STRONG&gt; &lt;SPAN&gt;noprint&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;select distinct&lt;SPAN&gt; y&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;into&lt;/SPAN&gt; :depvar_list separated by&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;' '&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; med.working_panel_serial_count_y;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;quit&lt;/STRONG&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;depvar_list = y1 y2 y3 etc&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I have a macro that will execute each value&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/SPAN&gt; run_arima(dv=);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;//stuff to do&lt;/P&gt;&lt;P&gt;%mend run_arima;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;How to I&amp;nbsp;tier&amp;nbsp;of the array?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In a real language:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;for i in&amp;nbsp;depvar_list:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; run_arima(dv=i)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;So how do I do that in sas ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 22 Jan 2021 22:05:18 GMT</pubDate>
    <dc:creator>monty808</dc:creator>
    <dc:date>2021-01-22T22:05:18Z</dc:date>
    <item>
      <title>Create a macro array and call a macro for each element</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-macro-array-and-call-a-macro-for-each-element/m-p/713501#M220135</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I have create a macro array that I want to loop over&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt; &lt;STRONG&gt;sql&lt;/STRONG&gt; &lt;SPAN&gt;noprint&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;select distinct&lt;SPAN&gt; y&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;into&lt;/SPAN&gt; :depvar_list separated by&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;' '&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="Apple-converted-space"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;from&lt;/SPAN&gt; med.working_panel_serial_count_y;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;quit&lt;/STRONG&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;depvar_list = y1 y2 y3 etc&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I have a macro that will execute each value&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;%macro&lt;/STRONG&gt;&lt;/SPAN&gt; run_arima(dv=);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;//stuff to do&lt;/P&gt;&lt;P&gt;%mend run_arima;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;How to I&amp;nbsp;tier&amp;nbsp;of the array?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;In a real language:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;for i in&amp;nbsp;depvar_list:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; run_arima(dv=i)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;end&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;So how do I do that in sas ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 22 Jan 2021 22:05:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-macro-array-and-call-a-macro-for-each-element/m-p/713501#M220135</guid>
      <dc:creator>monty808</dc:creator>
      <dc:date>2021-01-22T22:05:18Z</dc:date>
    </item>
    <item>
      <title>Re: Create a macro array and call a macro for each element</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-macro-array-and-call-a-macro-for-each-element/m-p/713509#M220138</link>
      <description>&lt;P&gt;Here is one example, not the only way, to build a list and loop over the elements in the list&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;%macro dummy();
Proc sql noprint;
   select distinct sex into :slist separated by ' '
   from sashelp.class
   ;
quit;

%do i = 1 %to %sysfunc(countw(&amp;amp;slist.));
   %let word = %scan(&amp;amp;slist.,&amp;amp;i.);

   Proc print data=sashelp.class noobs;
      where sex="&amp;amp;word.";
   run;
%end;
%mend;


%dummy&lt;/PRE&gt;
&lt;P&gt;The function COUNTW is a data step function and for the macro language to use it must be wrapped in a %sysfunc( ) call.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The proc print is just a simple example of using the "word" or parameter as extracted.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please be very careful about using phrases like&lt;/P&gt;
&lt;PRE&gt;In a real language:

for i in depvar_list:
     run_arima(dv=i)
end&lt;/PRE&gt;
&lt;P&gt;I know several 'real languages'. Not counting spoken languages, about 15 programming languages and dialects. SAS is just one. I might be insulted by the implication that SAS is not a "real language".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 22 Jan 2021 22:27:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-macro-array-and-call-a-macro-for-each-element/m-p/713509#M220138</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2021-01-22T22:27:49Z</dc:date>
    </item>
    <item>
      <title>Re: Create a macro array and call a macro for each element</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Create-a-macro-array-and-call-a-macro-for-each-element/m-p/713523#M220144</link>
      <description>This is inefficient code. You should restructure your data and use a single BY statement which means no macros at all. &lt;BR /&gt;&lt;A href="https://blogs.sas.com/content/iml/2017/02/13/run-1000-regressions.html" target="_blank"&gt;https://blogs.sas.com/content/iml/2017/02/13/run-1000-regressions.html&lt;/A&gt;</description>
      <pubDate>Fri, 22 Jan 2021 23:30:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Create-a-macro-array-and-call-a-macro-for-each-element/m-p/713523#M220144</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-01-22T23:30:55Z</dc:date>
    </item>
  </channel>
</rss>

