<?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: Slow performance macro in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218585#M40260</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Small..... You decided to write own code (macro) not DI transforms.&amp;nbsp; Wating for the hash approach of Xia ( he is experienced-fast with that) and executing will be fasssst&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 23 May 2015 15:05:06 GMT</pubDate>
    <dc:creator>jakarman</dc:creator>
    <dc:date>2015-05-23T15:05:06Z</dc:date>
    <item>
      <title>Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218580#M40255</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;I am having a big performance issue with the macro I 've written, Extremely slow (no actual output) when runs with large input data sets., Appreciate any help in re writing the code.&lt;/P&gt;&lt;P&gt;My code is as below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro getHistAllPlanteam(PPID,s_start_date);&lt;/P&gt;&lt;P&gt;data pt_all_planteam_temp (keep=ParentPartyID All_Planners g_snapshot_start_date g_snapshot_end_date );&lt;BR /&gt; set &amp;amp;_INPUT1 (where=(Contact_planner ne "n/a" and ParentPartyID="&amp;amp;PPID" and g_snapshot_start_date="&amp;amp;s_start_date"dt));&lt;BR /&gt; by ParentPartyID Plan_mgmt_team_member;&lt;/P&gt;&lt;P&gt;length All_Planners $255;&lt;/P&gt;&lt;P&gt;if first.ParentPartyID then do;&lt;BR /&gt;&amp;nbsp; retain All_Planners;&lt;BR /&gt;&amp;nbsp; All_Planners=cat(trim(Plan_mgmt_team_member)," (",trim(Participant_Management_Role_Desc),")");&lt;BR /&gt; end;&lt;BR /&gt;&amp;nbsp; else do All_Planners=catx("; ",trim(All_Planners),cat(trim(Plan_mgmt_team_member)," (",trim(Participant_Management_Role_Desc),")"));&lt;BR /&gt; end;&lt;BR /&gt;&amp;nbsp; if last.ParentPartyID then output;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc append base=&amp;amp;_OUTPUT1 data=pt_all_planteam_temp force;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%mend getHistAllPlanteam;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;delete from &amp;amp;_OUTPUT1;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data _Null_;&lt;BR /&gt; set &amp;amp;_INPUT2;&lt;BR /&gt; st_dtmval=put(g_snapshot_start_date,DATETIME.);&lt;BR /&gt; call execute('%getHistAllPlanteam('||ParentPartyID||','||st_dtmval||')');&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is a sample input;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;amp;_INPUT2&lt;BR /&gt;ParentPartyID&amp;nbsp; g_snapshot_start_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_snapshot_end_date&lt;BR /&gt;1-104O5G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 26FEB15:00:00:00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01JAN99:00:00:00&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;amp;_INPUT1&lt;BR /&gt;ParentPartyID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_snapshot_start_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_snapshot_end_date&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Plan_mgmt_team_member&amp;nbsp; Participant_Management_Role_Desc&amp;nbsp; &lt;BR /&gt;1-104O5G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 26FEB15:00:00:00&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1JAN99:00:00:00&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;&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; David Addison&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; Primary Planner&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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;1-104O5G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6FEB15:00:00:00&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; 01JAN99:00:00:00&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;&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; Rachael Mayne&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; Plan Support Coordinator&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Expected output:&lt;/P&gt;&lt;P&gt;ParentPartyID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; All_plan_mgmt_team&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;&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;&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;&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;&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;&amp;nbsp;&amp;nbsp; g_snapshot_start_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_snapshot_end_date&lt;/P&gt;&lt;P&gt;1-104O5G&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; David Addison (Primary Planner); Rachael Mayne (Plan Support Coordinator)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 26FEB15:00:00:00&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; 01JAN99:00:00:00&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 May 2015 08:02:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218580#M40255</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-23T08:02:42Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218581#M40256</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is no slow performance of a macro. Your design for the data-processing is one only acceptable for very small datasets (Mb's).&lt;BR /&gt;Problems:&lt;/P&gt;&lt;P&gt;1/ you are generating separate datasteps/appends using the call execute&lt;/P&gt;&lt;P&gt;2/ There is a delete from * with proc sql, This could be the only one working with an external DBMS (no DDL allowed only DML).&lt;/P&gt;&lt;P&gt;3/ not seeing any thoughts for big data tuning.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Going back to the basics.&lt;/P&gt;&lt;P&gt;- what is your environment (OS SAS )&lt;/P&gt;&lt;P&gt;- limitations (sizing dasd - memory)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;- Is the data in an external DBMS or only local&lt;/P&gt;&lt;P&gt;- What is your logical problem/issue.&lt;/P&gt;&lt;P&gt;Bulk/batch processing van be tuned for that purpose as there isn online/transactional processing.&amp;nbsp; The latter one always is having some performance penalties.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 May 2015 10:49:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218581#M40256</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2015-05-23T10:49:31Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218582#M40257</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It seems that you are doing some QUERY thing . Hash Table would be good for that.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 May 2015 11:00:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218582#M40257</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-05-23T11:00:54Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218583#M40258</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Could be Xia could be...&amp;nbsp;&amp;nbsp; Let us wait the op's coming with all information. &lt;BR /&gt;- May be a hash is good when it is not Iimited by memory constraints, &lt;BR /&gt;- May be some sql or indatabase processing when data is in an external dbms.&lt;BR /&gt;- May be some advanced buffer tuning or some other smart analytics solution&lt;BR /&gt;- May be...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 May 2015 11:46:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218583#M40258</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2015-05-23T11:46:47Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218584#M40259</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI Jaap,&lt;/P&gt;&lt;P&gt;I'm using the code in SAS DI custom made transformation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using Windows 7&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am having about 4GB of memory but my dataset set is having only&lt;/P&gt;&lt;P&gt;&amp;amp;_INPUT1=16,000 rows and &amp;amp;_INPUT2=13196 rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data is only as SAS Datasets, no RDBS involved.&lt;/P&gt;&lt;P&gt;Logically,what I need to achieve is for each parentpartyID concatenate the values of &lt;STRONG&gt;Participant_Management_Role_Desc&lt;/STRONG&gt; across &lt;STRONG&gt;Plan_mgmt_team_member&lt;/STRONG&gt; and put into another distinct variable in a SAS DI Transformation.&lt;/P&gt;&lt;P&gt;&lt;A __default_attr="75832" __jive_macro_name="thread" class="jive_macro jive_macro_thread" href="https://communities.sas.com/" title="Cannot create SET , BY in SAS DI"&gt;&lt;/A&gt; &lt;/P&gt;&lt;P&gt;I have initially discuss first issue of this problem in: &lt;A _jive_internal="true" href="https://communities.sas.com/thread/75832"&gt;https://communities.sas.com/thread/75832&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank You!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 May 2015 14:28:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218584#M40259</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-23T14:28:42Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218585#M40260</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Small..... You decided to write own code (macro) not DI transforms.&amp;nbsp; Wating for the hash approach of Xia ( he is experienced-fast with that) and executing will be fasssst&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 23 May 2015 15:05:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218585#M40260</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2015-05-23T15:05:06Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218586#M40261</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks your compliment .&lt;STRONG style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;A _jive_internal="true" class="jiveTT-hover-user jive-username-link" data-avatarid="1218" data-externalid="" data-presence="null" data-userid="8872" data-username="jakarman" href="https://communities.sas.com/people/jakarman" id="jive-887247816528964123186" style="padding: 0 3px 0 0; font-weight: inherit; font-style: inherit; font-size: 1.1em; font-family: inherit; color: #0e66ba;"&gt;Jaap Karman&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 12px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;Since OP didn't give enough data , It is hard to give some advice.&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 24 May 2015 03:06:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218586#M40261</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-05-24T03:06:59Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218587#M40262</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Xia,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your concern. I have attached 2 sample input data file and sas code file which will create output1 as I required.&lt;/P&gt;&lt;P&gt;This is not working when input files are large. Quite new to hash tables appreciate your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 24 May 2015 13:00:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218587#M40262</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-24T13:00:09Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218588#M40263</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;OK. Hope you have enough memory to handle this.&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;&lt;PRE&gt;proc import datafile='C:\temp\Input1.csv' out=input1 dbms=csv replace;
delimiter='|';
run;
proc import datafile='C:\temp\Input2.csv' out=input2 dbms=csv replace;
delimiter='|';
run;

data temp;
 if _n_ eq 1 then do;
&amp;nbsp; if 0 then set input2;
&amp;nbsp; declare hash h(dataset:'input2',hashexp:20);
&amp;nbsp; h.definekey('ParentPartyID','g_snapshot_start_date');
&amp;nbsp; h.definedone();
 end;
set input1;
if h.check()=0 and Contact_planner ne "n/a" ;
run;
proc sort data=temp;by ParentPartyID g_snapshot_start_date;run;
data want;
 set temp;
 by ParentPartyID g_snapshot_start_date;
 length All_Planners $ 255;
 retain All_Planners;
 All_Planners=catx(" ",All_Planners,Plan_mgmt_team_member,cats("(",Participant_Management_Role_Desc,")"));
 if last.g_snapshot_start_date then do;output; call missing(All_Planners);end;
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;Xia Keshan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 24 May 2015 14:14:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218588#M40263</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-05-24T14:14:48Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218589#M40264</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So it does not look like you need a macro at all.&amp;nbsp; You just want to merge the two dataset and collapse the rows.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;data INPUT1 ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; infile cards dsd dlm='|' ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; length ParentPartyId $10&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_snapshot_start_date g_snapshot_end_date 8&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Plan_mgmt_team_member&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Participant_Management_Role_Desc&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Contact_planner&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Contact_RSO_or_RAO&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Contact_LAC&amp;nbsp; $50&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; informat g_snapshot_start_date g_snapshot_end_date datetime.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; format&amp;nbsp; g_snapshot_start_date g_snapshot_end_date datetime.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; input ParentPartyId -- Contact_LAC;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;cards;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;1-100O7B|16MAR15:00:00:00|01JAN99:00:00:00|Christine Godden|Primary Planner|Christine Godden|n/a|n/a&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;1-100O7B|13MAR15:00:00:00|15MAR15:23:59:59|David Addison|Primary Planner|David Addison|n/a|n/a&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;&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;&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;&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;&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; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;1-100O7B|13MAR15:00:00:00|15MAR15:23:59:59|Rachael Mayne|Plan Support Coordinator|Rachael Mayne|n/a|n/a&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;&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;&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;&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;&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; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;1-101HPT|16DEC14:00:00:00|01JAN99:00:00:00|Annalise Korsch|Primary Planner|Annalise Korsch|n/a|n/a&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;data INPUT2 ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; infile cards dsd dlm='|' ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; length ParentPartyId $10&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_snapshot_start_date g_snapshot_end_date 8&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; informat g_snapshot_start_date g_snapshot_end_date datetime.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; format&amp;nbsp; g_snapshot_start_date g_snapshot_end_date datetime.;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp; input ParentPartyId -- g_snapshot_end_date;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;cards;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;1-100O7B|13MAR15:00:00:00|15MAR15:23:59:59&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;1-100O7B|16MAR15:00:00:00|01JAN99:00:00:00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;1-101HPT|16DEC14:00:00:00|01JAN99:00:00:00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;proc sort data=input1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by ParentPartyID g_snapshot_start_date g_snapshot_end_date;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;proc sort data=input2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by ParentPartyID g_snapshot_start_date g_snapshot_end_date;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;data pt_all_planteam_temp&amp;nbsp; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; merge INPUT1 (in=in1) INPUT2 (in=in2);&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by ParentPartyID g_snapshot_start_date g_snapshot_end_date;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if in1 and in2;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; length All_Planners $255;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain All_Planners;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.&lt;SPAN style="font-family: 'courier new', courier; font-size: 13.3333330154419px;"&gt;g_snapshot_end_date&lt;/SPAN&gt; then&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; All_Planners=cat(trim(Plan_mgmt_team_member)," (",trim(Participant_Management_Role_Desc),")")&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; All_Planners=catx("; ",trim(All_Planners),cat(trim(Plan_mgmt_team_member)," (",trim(Participant_Management_Role_Desc),")"))&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em; font-family: 'courier new', courier;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if last.&lt;SPAN style="font-family: 'courier new', courier; font-size: 13.3333330154419px;"&gt;g_snapshot_end_date&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; keep ParentPartyID g_snapshot_start_date g_snapshot_end_date All_Planners ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 May 2015 16:42:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218589#M40264</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-05-25T16:42:30Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218590#M40265</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for that, yet in my code my By variables are&amp;nbsp; ParentPartyID and Plan_mgmt_team_member&amp;nbsp; , I will try to add it and check it out;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 May 2015 23:12:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218590#M40265</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-25T23:12:51Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218591#M40266</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for the reply, Yet by variable&amp;nbsp; Plan_mgmt_team_member excluded and it has to be in the code. Will check will this approach by including the missing by variable.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 May 2015 23:15:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218591#M40266</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-25T23:15:36Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218592#M40267</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tom ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also noted within a given g_snapshot_start_date and g_snapshot_end_date there can be many ParentPartyId s .&lt;/P&gt;&lt;P&gt;Which means&lt;/P&gt;&lt;P&gt;if first.&lt;SPAN style="font-family: 'courier new', courier; font-size: 13.33px;"&gt;g_snapshot_end_date&lt;/SPAN&gt; will not give the right output at all times.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if last.ParentPartyID needs to be checked as well.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 May 2015 00:30:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218592#M40267</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-26T00:30:18Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218593#M40268</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Tom,&lt;/P&gt;&lt;P&gt;OP has a big table . Not good for MERGE .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 May 2015 12:06:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218593#M40268</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-05-26T12:06:09Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218594#M40269</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That is not right.&amp;nbsp; If you are using two or more variables in your BY statement they are nested.&amp;nbsp; So if you have BY A B then by definition when it is LAST.A is also LAST.B.&amp;nbsp; So if you want one record per &lt;SPAN style="font-size: 13px; background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"&gt;Party Id, Start Time, End Time as your original code was doing then you should use FIRST.G_SNAPSHOT_END_DATE and LAST.G_SNAPSHOT_END_DATE to detect the beginning and ending of a new group of records.&amp;nbsp; If you just want one per PARTYID then you do not want to keep the date variables on the output record since they will just be the last set of dates for that PARTYID.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 May 2015 14:00:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218594#M40269</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-05-26T14:00:00Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218595#M40270</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Not sure that was the issue. The issue was that instead of merging the two table the code was looping over one of the tables and for every observation in that table it was reading all of the other table.&amp;nbsp; So it was essentially doing an full outer join.&amp;nbsp; That is what was causing it to take so long.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 May 2015 14:01:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218595#M40270</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-05-26T14:01:33Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218596#M40271</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Why do you think that variable was excluded?&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Did you mean that you want to create more output records based on changes to that variable also?&amp;nbsp; if so then you cannot do the merge and the roll up in one step (without more complicated code) since&lt;SPAN style="font-size: 13.3333330154419px;"&gt; it is not on the second table you posted.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 26 May 2015 14:12:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218596#M40271</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-05-26T14:12:00Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218597#M40272</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tom,&lt;/P&gt;&lt;P&gt;Firstly with Set By A, B variables last.A not necessarily means last.B as well. I have added &lt;STRONG&gt;input.txt&lt;/STRONG&gt; file (BY ParentPartyID g_snapshot_start_date) with those variable values. Actually this was my initial problem as well and prevent me from merging in the first instance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have added the expected result in the second file called &lt;STRONG&gt;Expected_output.txt&lt;/STRONG&gt;&amp;nbsp; where my &lt;STRONG&gt;expected output is the dataset OUTPUT1 &lt;/STRONG&gt;in TestCode.sas.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Hope this explains the issue more clearly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 May 2015 01:06:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218597#M40272</guid>
      <dc:creator>ven</dc:creator>
      <dc:date>2015-05-27T01:06:14Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218598#M40273</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Did you even run the code I posted?&amp;nbsp; It produces the results you requested.&lt;/P&gt;&lt;P&gt;Here is a link that explains how FIRST. and LAST. variables work.&lt;/P&gt;&lt;P&gt;&lt;A href="http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000761931.htm"&gt;http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000761931.htm&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 May 2015 02:41:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218598#M40273</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-05-27T02:41:08Z</dc:date>
    </item>
    <item>
      <title>Re: Slow performance macro</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218599#M40274</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt;"&gt;Here is your data with shorter variable names and values so it is easier to see what is happening.&amp;nbsp; There are four records, but they only come from 3 distinct combinations of ID,START and STOP so the output dataset will only have 3 observations.&amp;nbsp; The first observation in not output because it is not the last record for that combination of ID,FIRST and STOP values.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt;"&gt;Notice that when LAST.ID is true then LAST.STOP must also be true because even if the next observation just happened to have the same value for STOP it would represent another group since it is for a DIFFERENT value of ID.&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&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; font-family: 'Courier New'; color: black; background: white;"&gt; one ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;length&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; ID &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; font-family: 'Courier New'; color: black; background: white;"&gt; START STOP $&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; font-family: 'Courier New'; color: black; background: white;"&gt; NAME ROLE $&lt;/SPAN&gt;&lt;STRONG style="color: teal; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;50&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;infile&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; cards &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;dsd&lt;/SPAN&gt; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;dlm&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;=&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: purple; background: white;"&gt;'|'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;input&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; ID START STOP NAME ROLE ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;cards&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: #ffffc0;"&gt;1|A|B|Christine Godden|Primary Planner&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: #ffffc0;"&gt;1|A|B|David Addison|Primary Planner&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: #ffffc0;"&gt;1|C|D|Rachael Mayne|Plan Support Coordinator&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: #ffffc0;"&gt;2|E|F|Annalise Korsch|Primary Planner&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&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; font-family: 'Courier New'; color: black; background: white;"&gt; want;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;set&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; one;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;by&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; id start stop ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;length&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; new $&lt;/SPAN&gt;&lt;STRONG style="color: teal; background: white; font-size: 10pt; font-family: 'Courier New';"&gt;200&lt;/STRONG&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;retain&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; new ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; first.stop &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;then&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; new = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: purple; background: white;"&gt;' '&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;&amp;nbsp; new = catx(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: purple; background: white;"&gt;'; '&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;,new,catx(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: purple; background: white;"&gt;' '&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;,name,cats(&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: purple; background: white;"&gt;'('&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;,role,&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: purple; background: white;"&gt;')'&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt;)));&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;put&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; (id start stop first.id first.stop last.stop last.id ) (=) / new = /;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&amp;nbsp; &lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: blue; background: white;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: 'Courier New'; color: black; background: white;"&gt; last.stop ;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&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; font-family: 'Courier New'; color: black; background: white;"&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;ID=1 START=A STOP=B FIRST.ID=1 FIRST.STOP=1 LAST.STOP=0 LAST.ID=0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;new=Christine Godden (Primary Planner)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;ID=1 START=A STOP=B FIRST.ID=0 FIRST.STOP=0 LAST.STOP=1 LAST.ID=0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;new=Christine Godden (Primary Planner); David Addison (Primary Planner)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;ID=1 START=C STOP=D FIRST.ID=0 FIRST.STOP=1 LAST.STOP=1 LAST.ID=1&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;new=Rachael Mayne (Plan Support Coordinator)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;ID=2 START=E STOP=F FIRST.ID=1 FIRST.STOP=1 LAST.STOP=1 LAST.ID=1&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace';"&gt;new=Annalise Korsch (Primary Planner)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace'; color: #1f497d;"&gt;NOTE: There were 4 observations read from the data set WORK.ONE.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 13.3333330154419px;"&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace'; color: #1f497d;"&gt;NOTE: The data set WORK.WANT has 3 observations and 6 variables.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: 'SAS Monospace'; color: #1f497d;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 May 2015 03:12:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Slow-performance-macro/m-p/218599#M40274</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-05-27T03:12:51Z</dc:date>
    </item>
  </channel>
</rss>

