<?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: sum of columns in data set multiplied by indexed macro variable in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129946#M26525</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Excerpts from above:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;%let M1=1;&lt;/P&gt;
&lt;P&gt;%let M2=2;&lt;/P&gt;
&lt;P&gt;%let M3=3;&lt;/P&gt;
&lt;P&gt;%let M4=4;&lt;/P&gt;
&lt;P&gt;%let M5=5;&lt;/P&gt;
&lt;P&gt;%let vars = a b c d e;&lt;/P&gt;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;This is what PROC SCORE can do.&amp;nbsp; This examples uses the data macro vars from Alpay's example.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: navy; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; coef;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;if&lt;/SPAN&gt; &lt;SPAN style="color: teal; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;then&lt;/SPAN&gt; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; new(keep=&amp;amp;vars);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;array&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; _n&lt;LI&gt; &amp;amp;vars;&lt;/LI&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;length&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; _TYPE_ _NAME_ $&lt;/SPAN&gt;&lt;SPAN style="color: teal; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;8&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;retain&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; _TYPE_ &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: purple; font-family: 'Courier New';"&gt;'SCORE'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; _NAME_ &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: purple; font-family: 'Courier New';"&gt;'RESULT'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;do&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; i = &lt;/SPAN&gt;&lt;SPAN style="color: teal; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;to&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; dim(_n);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _n&lt;I&gt; = symgetN(cats(&lt;/I&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: purple; font-family: 'Courier New';"&gt;'M'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;,i));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;output&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;stop&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;drop&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; i;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: navy; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, reviewing the data coef datastep:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) No records are read from set new.&amp;nbsp; It's only used to set the PDV variable attributes for &amp;amp;vars (a b c d e).&lt;/P&gt;&lt;P&gt;2) Create an array for a b c d e.&lt;/P&gt;&lt;P&gt;3) Create additional variables _TYPE_='SCORE' and _NAME_='RESULT'&lt;/P&gt;&lt;P&gt;4) Loop over the 5 element array, setting a b c d e to &amp;amp;m1, &amp;amp;m2, ..., &amp;amp;m5 respectively.&lt;/P&gt;&lt;P&gt;5) Output the record&lt;/P&gt;&lt;P&gt;6) Stop the data step (actually not needed but makes the code crystal clear).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, there is only one loop through the data step, and symgetn is called 5 times.&amp;nbsp; No records are read from an input dataset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I gotta agree with Data:&amp;nbsp; where do you think the poor performance would lie?&amp;nbsp; Your statement that symgetn is slow is in fact correct, in principle, but not in this instance due to the construction of the data step.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On the other hand, your code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;data _null_;&lt;/P&gt;
&lt;P&gt;set sashelp.vcolumn(keep=libname name memname type where=(libname='SASHELP' and memname='CLASS' and type='num')) end=last;&lt;/P&gt;
&lt;P&gt;length list $ 4000;&lt;/P&gt;
&lt;P&gt;retain list;&lt;/P&gt;
&lt;P&gt;list=catx(',',list,cats(name,'*','&amp;amp;m ',_n_));&lt;/P&gt;
&lt;P&gt;if last then call symputx('list',list);&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;will need to process *every column* from *every dataset* in *every allocated library*!&amp;nbsp; And if some of those libraries are RDBMS libraries it will perform even more poorly.&amp;nbsp; Even though you're applying a where clause, the sashelp view will not use indexes, and in general will perform badly.&amp;nbsp; Honestly, allocate 20 libraries or so, with say 100 datasets per library, with say an average of 20 variables per dataset, and see how sashelp.vcolumn will perform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you're going to use your approach, at least consider using PROC CONTENTS against your desired dataset, i.e. proc contents data=sashelp.class out=columns, then use your approach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But of the two approaches shown, yours and Data's, I believe Data's will perform much faster.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 04 Jun 2012 12:27:19 GMT</pubDate>
    <dc:creator>ScottBass</dc:creator>
    <dc:date>2012-06-04T12:27:19Z</dc:date>
    <item>
      <title>sum of columns in data set multiplied by indexed macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129939#M26518</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I need to calculate sum of columns multiplied by proper macro variable.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;columns are a, x, b, m etc (names can be different and the number of columns may change)&lt;/P&gt;&lt;P&gt;each of columns have corresponding macro value &amp;amp;m1, &amp;amp;m2, &amp;amp;m3&amp;nbsp; .... &amp;amp;mn (n- number of columns = number of macro vairables)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i need to calculate sum for each row: a*&amp;amp;m1 + x*&amp;amp;m2 + b*&amp;amp;m3 + m*&amp;amp;m4 + .....&amp;nbsp; and write results to result table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can anybody help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2012 13:30:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129939#M26518</guid>
      <dc:creator>tom12122</dc:creator>
      <dc:date>2012-05-31T13:30:54Z</dc:date>
    </item>
    <item>
      <title>Re: sum of columns in data set multiplied by indexed macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129940#M26519</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;One way would be by using arrays. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Zafer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data new;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d = 4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e = 5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = 3;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = 5;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d = 6;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%let M1=1;&lt;/P&gt;&lt;P&gt;%let M2=2;&lt;/P&gt;&lt;P&gt;%let M3=3;&lt;/P&gt;&lt;P&gt;%let M4=4;&lt;/P&gt;&lt;P&gt;%let M5=5;&lt;/P&gt;&lt;P&gt;%let vars = a b c d e;&lt;/P&gt;&lt;P&gt;data x;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set new;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array _a_ &lt;LI&gt; &amp;amp;vars;&lt;/LI&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dim = DIM(_a_);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to dim;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result = SUM(Result, _a_&lt;I&gt;*SYMGET(CATS('M',i)));&lt;/I&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; drop dim i;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2012 14:10:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129940#M26519</guid>
      <dc:creator>Alpay</dc:creator>
      <dc:date>2012-05-31T14:10:47Z</dc:date>
    </item>
    <item>
      <title>Re: sum of columns in data set multiplied by indexed macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129941#M26520</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is what PROC SCORE can do.&amp;nbsp; This examples uses the data macro vars from Alpay's example.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;data&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; coef;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;if&lt;/SPAN&gt; &lt;STRONG style="color: teal; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;0&lt;/STRONG&gt; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;then&lt;/SPAN&gt; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; new(keep=&amp;amp;vars);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;array&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; _n&lt;LI&gt; &amp;amp;vars;&lt;/LI&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;length&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; _TYPE_ _NAME_ $&lt;/SPAN&gt;&lt;STRONG style="color: teal; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;8&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;retain&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; _TYPE_ &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: purple; font-family: 'Courier New';"&gt;'SCORE'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; _NAME_ &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: purple; font-family: 'Courier New';"&gt;'RESULT'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;do&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; i = &lt;/SPAN&gt;&lt;STRONG style="color: teal; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;1&lt;/STRONG&gt; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;to&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; dim(_n);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _n&lt;I&gt; = symgetN(cats(&lt;/I&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: purple; font-family: 'Courier New';"&gt;'M'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;,i));&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;output&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;stop&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;drop&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; i;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;Proc&lt;/STRONG&gt; &lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;print&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;Proc&lt;/STRONG&gt; &lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;score&lt;/STRONG&gt; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;data&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;=new &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;score&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;=coef &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;out&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;=scored;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: white; color: blue; font-family: 'Courier New';"&gt;var&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt; &amp;amp;vars;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;print&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;STRONG style="color: navy; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;run&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 May 2012 17:16:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129941#M26520</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2012-05-31T17:16:16Z</dc:date>
    </item>
    <item>
      <title>Re: sum of columns in data set multiplied by indexed macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129942#M26521</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;NULL, &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;symgetN()&lt;/SPAN&gt; is very low efficient , that means your code is very slow . I prefer to make a marco varible to hold such expression .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data _null_;
 set sashelp.vcolumn(keep=libname name memname type where=(libname='SASHELP' and memname='CLASS' and type='num')) end=last; 
 length list $ 4000;
 retain list;
 list=catx(',',list,cats(name,'*','&amp;amp;m ',_n_));
 if last then call symputx('list',list);
run;

%put %superq(list);

%let M1=1;
%let M2=2;
%let M3=3;
data want;
 set sashelp.class;
 sum=sum(&amp;amp;list );
run;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Jun 2012 06:01:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129942#M26521</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-06-01T06:01:15Z</dc:date>
    </item>
    <item>
      <title>Re: sum of columns in data set multiplied by indexed macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129943#M26522</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote" modifiedtitle="true"&gt;
&lt;P&gt;Ksharp wrote:&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;NULL, &lt;SPAN style="font-size: 10pt; background: white; color: black; font-family: 'Courier New';"&gt;symgetN()&lt;/SPAN&gt; is very low efficient , that means your code is very slow . I prefer to make a marco varible to hold such expression .&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The argument that my program is inefficient appears to be based on your misunderstanding of the data step to create COEF.&amp;nbsp; I believe if you study it more closely you will see SYMGETN would need to be very slow indeed to have any significant impact on performance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Jun 2012 13:35:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129943#M26522</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2012-06-01T13:35:13Z</dc:date>
    </item>
    <item>
      <title>Re: sum of columns in data set multiplied by indexed macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129944#M26523</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;NULL,&lt;/P&gt;&lt;P&gt;No, I am not misunderstanding . I know how slow the symgetn() would be at any situation .&lt;/P&gt;&lt;P&gt;You put it on every single variable and every single observation which make your code very slow .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Jun 2012 03:27:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129944#M26523</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-06-04T03:27:38Z</dc:date>
    </item>
    <item>
      <title>Re: sum of columns in data set multiplied by indexed macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129945#M26524</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes it is obvious you don't understand because you don't know what you're talking about.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How many observations do you think COEF has? &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Jun 2012 10:28:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129945#M26524</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2012-06-04T10:28:11Z</dc:date>
    </item>
    <item>
      <title>Re: sum of columns in data set multiplied by indexed macro variable</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129946#M26525</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Excerpts from above:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;%let M1=1;&lt;/P&gt;
&lt;P&gt;%let M2=2;&lt;/P&gt;
&lt;P&gt;%let M3=3;&lt;/P&gt;
&lt;P&gt;%let M4=4;&lt;/P&gt;
&lt;P&gt;%let M5=5;&lt;/P&gt;
&lt;P&gt;%let vars = a b c d e;&lt;/P&gt;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;This is what PROC SCORE can do.&amp;nbsp; This examples uses the data macro vars from Alpay's example.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: navy; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; coef;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;if&lt;/SPAN&gt; &lt;SPAN style="color: teal; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;then&lt;/SPAN&gt; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; new(keep=&amp;amp;vars);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;array&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; _n&lt;LI&gt; &amp;amp;vars;&lt;/LI&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;length&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; _TYPE_ _NAME_ $&lt;/SPAN&gt;&lt;SPAN style="color: teal; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;8&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;retain&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; _TYPE_ &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: purple; font-family: 'Courier New';"&gt;'SCORE'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; _NAME_ &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: purple; font-family: 'Courier New';"&gt;'RESULT'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;do&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; i = &lt;/SPAN&gt;&lt;SPAN style="color: teal; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;to&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; dim(_n);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _n&lt;I&gt; = symgetN(cats(&lt;/I&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: purple; font-family: 'Courier New';"&gt;'M'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;,i));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;end&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;output&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;stop&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: blue; font-family: 'Courier New';"&gt;drop&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt; i;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: navy; background: none repeat scroll 0% 0% white; font-size: 10pt; font-family: 'Courier New';"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; background: none repeat scroll 0% 0% white; color: black; font-family: 'Courier New';"&gt;;&lt;/SPAN&gt;&lt;/P&gt;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, reviewing the data coef datastep:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) No records are read from set new.&amp;nbsp; It's only used to set the PDV variable attributes for &amp;amp;vars (a b c d e).&lt;/P&gt;&lt;P&gt;2) Create an array for a b c d e.&lt;/P&gt;&lt;P&gt;3) Create additional variables _TYPE_='SCORE' and _NAME_='RESULT'&lt;/P&gt;&lt;P&gt;4) Loop over the 5 element array, setting a b c d e to &amp;amp;m1, &amp;amp;m2, ..., &amp;amp;m5 respectively.&lt;/P&gt;&lt;P&gt;5) Output the record&lt;/P&gt;&lt;P&gt;6) Stop the data step (actually not needed but makes the code crystal clear).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, there is only one loop through the data step, and symgetn is called 5 times.&amp;nbsp; No records are read from an input dataset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I gotta agree with Data:&amp;nbsp; where do you think the poor performance would lie?&amp;nbsp; Your statement that symgetn is slow is in fact correct, in principle, but not in this instance due to the construction of the data step.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On the other hand, your code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __jive_macro_name="quote" class="jive_text_macro jive_macro_quote"&gt;
&lt;P&gt;data _null_;&lt;/P&gt;
&lt;P&gt;set sashelp.vcolumn(keep=libname name memname type where=(libname='SASHELP' and memname='CLASS' and type='num')) end=last;&lt;/P&gt;
&lt;P&gt;length list $ 4000;&lt;/P&gt;
&lt;P&gt;retain list;&lt;/P&gt;
&lt;P&gt;list=catx(',',list,cats(name,'*','&amp;amp;m ',_n_));&lt;/P&gt;
&lt;P&gt;if last then call symputx('list',list);&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;

&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;will need to process *every column* from *every dataset* in *every allocated library*!&amp;nbsp; And if some of those libraries are RDBMS libraries it will perform even more poorly.&amp;nbsp; Even though you're applying a where clause, the sashelp view will not use indexes, and in general will perform badly.&amp;nbsp; Honestly, allocate 20 libraries or so, with say 100 datasets per library, with say an average of 20 variables per dataset, and see how sashelp.vcolumn will perform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you're going to use your approach, at least consider using PROC CONTENTS against your desired dataset, i.e. proc contents data=sashelp.class out=columns, then use your approach.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But of the two approaches shown, yours and Data's, I believe Data's will perform much faster.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Jun 2012 12:27:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sum-of-columns-in-data-set-multiplied-by-indexed-macro-variable/m-p/129946#M26525</guid>
      <dc:creator>ScottBass</dc:creator>
      <dc:date>2012-06-04T12:27:19Z</dc:date>
    </item>
  </channel>
</rss>

