<?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: Proc SQL and Macro language in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-and-Macro-language/m-p/203128#M37863</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;terminology: macro array is a sequentially-numbered set of macro variables a1--aN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;\begin{commentary}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;step 1 how many rows in the input data sets?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you are creating only two macro variables from each of your data sets&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put info &amp;amp;=Unemp &amp;amp;=GDP;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put info &amp;amp;=lagUnemp &amp;amp;=lagGDP;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is that what you want? i.e. does each data set have only one row?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;step 2 creating the macro arrays&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;your stated assumption by the upper-bound of the%do loop is that there are exactly five variables in each data set.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;check the n-vars with this statement&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let n_obs&amp;nbsp; = %sysfunc(attrn(&amp;amp;dsid,nobs ));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let n_vars = %sysfunc(attrn(&amp;amp;dsid,nvars));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;then &lt;/P&gt;&lt;P&gt;%do i = 1 %to &amp;amp;n_vars;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you will want separate n_vars for data and lagdata&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and these upperbounds have to agree.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;step 3 create a macro array YoY*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and what are you doing to do with this macro array?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think you want to generate a set of data assignment statements&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in which case you need a data step; remove the '%let' inside the %do loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA NEW;&lt;/P&gt;&lt;P&gt;set old;&lt;/P&gt;&lt;P&gt;## Create YoY transformation using &amp;amp;var_i and &amp;amp; lagvar_i created above&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; ## The final YoY transformed variables are in YoY_var_&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;&amp;nbsp; %do i = 1 %to 5;&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; YoY_var_&amp;amp;i = (&amp;amp;&amp;amp;var&amp;amp;i - &amp;amp;&amp;amp;lagvar&amp;amp;i)/ &amp;amp;&amp;amp;lagvar&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;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;\end{commentary}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jul 2015 14:41:00 GMT</pubDate>
    <dc:creator>Ron_MacroMaven</dc:creator>
    <dc:date>2015-07-15T14:41:00Z</dc:date>
    <item>
      <title>Proc SQL and Macro language</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-and-Macro-language/m-p/203127#M37862</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all, I have some questions on&amp;nbsp; the below code :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have 2 time series data sets: data and data_lags, say. The first has say 5 variables (Unemployment, GDP etc) and the second has the same variables lagged. I need a macro ( transf_YoY below)&amp;nbsp; that will create the YoY growth rate for each variable.&lt;/P&gt;&lt;P&gt;The respective variables are in the same order in both data sets(unemp first, GDP next etc).&lt;/P&gt;&lt;P&gt;I have embedded 2 calls to Proc SQL inside the macro that will change the data set variables into macro variables.&lt;/P&gt;&lt;P&gt;Next, I create macro variables indexed by a counter i, corresponsing to each of the variables in data and data_lags.&lt;/P&gt;&lt;P&gt;Finally, inside a Do loop, I perform the YoY transoformation, by taking the difference of the ith variable with its lagged version. In fact, it is in order to perform the transformation inside a loop systematically that I needed to create the indexed vairables in the previous step. I needed to separate the original and the lagged variables into 2 different datasets since the&amp;nbsp; lag and dif functions are not available within a macro function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My questions are:&lt;/P&gt;&lt;P&gt;Can I use Proc SQL inside a macro as I have done here?&lt;/P&gt;&lt;P&gt;Also, how do I export the transformed YoY variables to a new data set or append it to the original data from inside the macro transf_YoY?&lt;/P&gt;&lt;P&gt;Is the logic below look right?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't have immediate access to SAS, and would be thankful for any advice.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro transf_YoY( data, data_lags)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Step 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Use Select Into to create macro variables corresponding to data set variables&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select Unemp, GDP&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; into: Unemp, :GDP&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from &amp;amp;data;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select lagUnemp, lagGDP&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; into: lagUnemp, :lagGDP&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; from &amp;amp;data_lags;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Step 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Create macro variable names indexed by "i" so as to do the YoY transform inside a loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## First, do the indexing for the original variables&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let dsid = %sysfunc (open(&amp;amp;data))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let i = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i = 1 %to 5;&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let&amp;nbsp; var&amp;amp;i = %sysfunc(varname(&amp;amp;dsid, &amp;amp;i))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let close = %sysfunc(close(&amp;amp;dsid))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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; ## Next, do the indexing for the lagged variables&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; %let dsid = %sysfunc (open(&amp;amp;data_lags))&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; %let i = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do i = 1 %to 5;&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp;&amp;nbsp; %let&amp;nbsp; lagvar&amp;amp;i = %sysfunc(varname(&amp;amp;dsid, &amp;amp;i));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let close = %sysfunc(close(&amp;amp;dsid));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Create YoY transformation using &amp;amp;var_i and &amp;amp; lagvar_i created above&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; ## The final YoY transformed variables are in YoY_var_&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;&amp;nbsp; %do i = 1 %to 5;&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; %let YoY_var_&amp;amp;i = (&amp;amp;&amp;amp;var&amp;amp;i - &amp;amp;&amp;amp;lagvar&amp;amp;i)/ &amp;amp;&amp;amp;lagvar&amp;amp;i;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend;&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;Thank you,&lt;/P&gt;&lt;P&gt;Radhika&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2015 08:54:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-and-Macro-language/m-p/203127#M37862</guid>
      <dc:creator>hkapoor</dc:creator>
      <dc:date>2015-07-15T08:54:59Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL and Macro language</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-and-Macro-language/m-p/203128#M37863</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;terminology: macro array is a sequentially-numbered set of macro variables a1--aN&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;\begin{commentary}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;step 1 how many rows in the input data sets?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you are creating only two macro variables from each of your data sets&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put info &amp;amp;=Unemp &amp;amp;=GDP;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %put info &amp;amp;=lagUnemp &amp;amp;=lagGDP;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is that what you want? i.e. does each data set have only one row?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;step 2 creating the macro arrays&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;your stated assumption by the upper-bound of the%do loop is that there are exactly five variables in each data set.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;check the n-vars with this statement&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let n_obs&amp;nbsp; = %sysfunc(attrn(&amp;amp;dsid,nobs ));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let n_vars = %sysfunc(attrn(&amp;amp;dsid,nvars));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;then &lt;/P&gt;&lt;P&gt;%do i = 1 %to &amp;amp;n_vars;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you will want separate n_vars for data and lagdata&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and these upperbounds have to agree.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;step 3 create a macro array YoY*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and what are you doing to do with this macro array?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think you want to generate a set of data assignment statements&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in which case you need a data step; remove the '%let' inside the %do loop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA NEW;&lt;/P&gt;&lt;P&gt;set old;&lt;/P&gt;&lt;P&gt;## Create YoY transformation using &amp;amp;var_i and &amp;amp; lagvar_i created above&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; ## The final YoY transformed variables are in YoY_var_&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;&amp;nbsp; %do i = 1 %to 5;&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; YoY_var_&amp;amp;i = (&amp;amp;&amp;amp;var&amp;amp;i - &amp;amp;&amp;amp;lagvar&amp;amp;i)/ &amp;amp;&amp;amp;lagvar&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;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;\end{commentary}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2015 14:41:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-and-Macro-language/m-p/203128#M37863</guid>
      <dc:creator>Ron_MacroMaven</dc:creator>
      <dc:date>2015-07-15T14:41:00Z</dc:date>
    </item>
    <item>
      <title>Re: Proc SQL and Macro language</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-and-Macro-language/m-p/203129#M37864</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sorry, all that &amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp; hurts my eyes.&amp;nbsp; Can you post some sample test data, in a datastep, and what the output should look like.&amp;nbsp; The reason is I can't see why you would need the above code, just use basic datasteps and arrays (or normlise your data).&amp;nbsp; Far easier.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jul 2015 14:50:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-SQL-and-Macro-language/m-p/203129#M37864</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2015-07-15T14:50:23Z</dc:date>
    </item>
  </channel>
</rss>

