<?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: Efficiency Advice in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311707#M67446</link>
    <description>&lt;P&gt;It's quite a long code, and i don't have the time to figure out what it does and why.&lt;/P&gt;
&lt;P&gt;Ther's probably a reason&amp;nbsp;why you process one zip at the time...?&lt;/P&gt;
&lt;P&gt;If there's no logical problems, run all zipcodes in one go instead.&lt;/P&gt;</description>
    <pubDate>Tue, 15 Nov 2016 14:47:55 GMT</pubDate>
    <dc:creator>LinusH</dc:creator>
    <dc:date>2016-11-15T14:47:55Z</dc:date>
    <item>
      <title>Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311695#M67439</link>
      <description>&lt;P&gt;Hi. I have the following series of queries that run as part of a macro loop, once for each ZIP Code. And there are 68 ZIP Codes! The data is huge so each step can take a couple of hours per ZIP Code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Due to the huge size of the data the datasets ods_bi_recon_selected_mp and ods_iv_recon_selected_mp are created with records from only 1 ZIP Code at a time. Then each in the series of the queries is executed against these datasets. Then the process repeats for each of the remaining ZIPs.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm curious if anyone sees opportunities for improving efficiency of these individual queries or in executing all the queries as a whole? &amp;nbsp;Any suggestions would be greatly appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;/*Create IV dataset*/&lt;BR /&gt; %PUT CHECK: CREATE IV DS FOR &amp;amp;ZIP5;&lt;BR /&gt; proc sql;&lt;BR /&gt; connect to oracle as db (user=&amp;amp;orauser password=&amp;amp;orapass path="ivasprd");&lt;BR /&gt; create table ods_iv_recon_selected_mp as &lt;BR /&gt; select * from connection to db&lt;BR /&gt; ( select *&lt;BR /&gt; from ivas.ods_iv_recon_selected_mp&lt;BR /&gt; where imb_dlvry_zip_5=&amp;amp;ZIP5_QUOTED&lt;BR /&gt; ); &lt;BR /&gt; disconnect from db;&lt;BR /&gt; quit;&lt;BR /&gt;&lt;BR /&gt;/*Create BIDS dataset*/&lt;BR /&gt; %PUT CHECK: CREATE BIDS DS FOR &amp;amp;ZIP5;&lt;BR /&gt; proc sql;&lt;BR /&gt; connect to oracle as db (user="myuser" password="mypw" path="ibscrprd");&lt;BR /&gt; create table ods_bi_recon_selected_mp as &lt;BR /&gt; select * from connection to db&lt;BR /&gt; ( select *&lt;BR /&gt; from imapsscr.ods_bi_recon_selected_mp&lt;BR /&gt; where imb_dlvry_zip_5=&amp;amp;ZIP5_QUOTED&lt;BR /&gt; ); &lt;BR /&gt; disconnect from db;&lt;BR /&gt; quit;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The series of queries are:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/*	 RULE: PIECES MISSING IN IV QUERY */
	%PUT CHECK: RULE: PIECES MISSING IN IV QUERY 999.1;
	proc sql;
		create table QueryData as
		select subpad('PIECES MISSING IN IV',1,58) as RULE_NM length=58, 
		       	actual_dlvry_date, 
				subpad(imb_code,1,31) as IMB_CODE length=31, 
				999.1 as Rule_Order,
				imb_dlvry_zip_5
		from ods_bi_recon_selected_mp
	    where imb_code not in(select imb_code 
		                        from ods_iv_recon_selected_mp);
	quit;

/*	Append datasets to final dataset */
	proc append base=QueryData&amp;amp;ZIP5 data=QueryData force;
	run;

/*	RULE: PIECES MISSING IN BIDS QUERY */
	%PUT CHECK: RULE: PIECES MISSING IN BIDS QUERY 999.6;
	proc sql;
		create table QueryData as
		select subpad('PIECES MISSING IN BIDS',1,58) as RULE_NM length=58, 
		       	actual_dlvry_date, 
				subpad(imb_code,1,31) as IMB_CODE length=31, 
				999.6 as RULE_ORDER,
				imb_dlvry_zip_5
		from ods_iv_recon_selected_mp
		where imb_code not in(select imb_code 
		                      from ods_bi_recon_selected_mp);
	quit;

/*	Append datasets to final dataset */
	proc append base=QueryData&amp;amp;ZIP5 data=QueryData force;
	run;

/*	RULE: VOLUME MATCHING */
/*	Volume Matching assumes the records match exactly and have not violated any rules */
	%PUT CHECK: RULE: VOLUME MATCHING 999.2;
	proc sql;
		create table QueryData as
		select subpad('VOLUME MATCHING',1,58) as RULE_NM length=58, 
		       	actual_dlvry_date, 
				subpad(imb_code,1,31) as IMB_CODE length = 31, 
				999.2 as RULE_ORDER,
				imb_dlvry_zip_5
		from ods_bi_recon_selected_mp
		EXCEPT
	    select 'VOLUME MATCHING' as RULE_NM length=58, 
	           	actual_dlvry_date, 
				imb_code length = 31, 
				999.2 as RULE_ORDER,
				imb_dlvry_zip_5
	    from QueryData&amp;amp;ZIP5
	    where rule_order &amp;lt; 997.1
		  and rule_order is not null
		EXCEPT
	    select  'VOLUME MATCHING' as RULE_NM length=58, 
	        	actual_dlvry_date, 
				imb_code length = 31, 
				999.2 as RULE_ORDER,
				imb_dlvry_zip_5
	    from ods_bi_recon_selected_mp
		where imb_code not in(select imb_code
	                          from ods_iv_recon_selected_mp)
		;    
	quit;

/*	Append datasets to final dataset */
	proc append base=QueryData&amp;amp;ZIP5 data=QueryData force;
	run;

/*	RULE: TOTAL BIDS VOLUME SAMPLED */
	%PUT CHECK: RULE: TOTAL BIDS VOLUME SAMPLED 999.3;
	data QueryData;
	  length rule_nm $58;
	  length imb_code $31;
	  set ods_bi_recon_selected_mp;
	  RULE_NM='TOTAL BIDS VOLUME SAMPLED'; 
	  RULE_ORDER=999.3;
	  keep rule_nm actual_dlvry_date imb_code rule_order imb_dlvry_zip_5;
	run;

/*	Append datasets to final dataset */
	proc append base=QueryData&amp;amp;ZIP5 data=QueryData force;
	run;

/*	RULE: EXCLUDED IN IV INCLUDED IN BIDS */
	%PUT CHECK: RULE: EXCLUDED IN IV INCLUDED IN BIDS 999.4;
	proc sql;
		create table QueryData as
		select subpad('EXCLUDED IN IV INCLUDED IN BIDS',1,58) as RULE_NM length=58,
				actual_dlvry_date, 
				imb_code length=31, 
				999.4 as RULE_ORDER,
				imb_dlvry_zip_5
		from ods_bi_recon_selected_mp
		where excl_sts_code is null
		  and imb_code in (select imb_code 
		                   from ods_iv_recon_selected_mp
		                   where excl_sts_code is not null);
	quit;

/*	Append datasets to final dataset */
	proc append base=QueryData&amp;amp;ZIP5 data=QueryData force;
	run;

/*	RULE: INCLUDED IN IV EXCLUDED IN BIDS */
	%PUT CHECK: RULE: INCLUDED IN IV EXCLUDED IN BIDS 999.5;
	proc sql;
		create table QueryData as
		select subpad('INCLUDED IN IV EXCLUDED IN BIDS',1,58) as RULE_NM length=58, 
	           actual_dlvry_date, 
			   imb_code length=31, 
	           999.5 as RULE_ORDER,
			   imb_dlvry_zip_5
	    from ods_bi_recon_selected_mp
	    where excl_sts_code is not null
	      and imb_code in (select imb_code 
	                       from ods_iv_recon_selected_mp
	                       where excl_sts_code is null);
	quit;

/*	Append datasets to final dataset */
	proc append base=QueryData&amp;amp;ZIP5 data=QueryData force;
	run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 16:38:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311695#M67439</guid>
      <dc:creator>buechler66</dc:creator>
      <dc:date>2016-11-15T16:38:31Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311707#M67446</link>
      <description>&lt;P&gt;It's quite a long code, and i don't have the time to figure out what it does and why.&lt;/P&gt;
&lt;P&gt;Ther's probably a reason&amp;nbsp;why you process one zip at the time...?&lt;/P&gt;
&lt;P&gt;If there's no logical problems, run all zipcodes in one go instead.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 14:47:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311707#M67446</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2016-11-15T14:47:55Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311714#M67449</link>
      <description>Yah, I can't run all ZIPs in one go due to the size of the data. The 2 ds combine for over 8 million records. It ends up gobbling up all our SAS temp space. &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;</description>
      <pubDate>Tue, 15 Nov 2016 14:53:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311714#M67449</guid>
      <dc:creator>buechler66</dc:creator>
      <dc:date>2016-11-15T14:53:47Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311730#M67453</link>
      <description>&lt;P&gt;Why don't you ask for advice on how to do what you're efficiently instead of how do I fix my SQL code.&amp;nbsp; Include sample data all relevant details.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 15:23:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311730#M67453</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2016-11-15T15:23:16Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311731#M67454</link>
      <description>&lt;P&gt;How are you planning on working with the data in this, and other processes - considering the fact that you can't where clause the data for a subset?&lt;/P&gt;
&lt;P&gt;At a guess, and this has many connotations, I would say create a table on the database (using pass through, and into a temp area) which contains the subset of data you want to work with, then bring that data across into SAS. &amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 15:25:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311731#M67454</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-11-15T15:25:08Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311732#M67455</link>
      <description>&lt;P&gt;I'm not the best SQL guy, but there are a couple of elephants in the room.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First, why is the pass-through logic using select * ?&amp;nbsp; It seems likely that you need only a handful of fields (but it's impossible to tell by looking at the program how many fields are actually being retrieved).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Second, if you want help from the more dyed-in-the-wool SQL experts, it would help to break down how much time each of the steps takes.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Good luck.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 15:25:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311732#M67455</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-11-15T15:25:52Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311750#M67459</link>
      <description>&lt;P&gt;It is difficult to follow such a long and complex code. Anyhow I have some hits:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;1) As the datasets are huge and you want to deal one zip code at a time,&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; add index to the datasets and compute IMB_CODE while importing data from oracle:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;create table ods_iv_recon_selected_mp&lt;STRONG&gt;(index=imb_dlvry_zip_5  imb_code)&lt;/STRONG&gt; as &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;create table ods_bi_recon_selected_mp&lt;STRONG&gt;(index=imb_dlvry_zip_5  imb_code)&lt;/STRONG&gt; as &lt;/PRE&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;adding index will need some more time and disk space but will save time laiter.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2) &amp;nbsp;If you computed imb_code already you don't need to compute it on next SQL steps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;3) Try to convert the sql step&amp;nbsp;&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;create &lt;SPAN class="token statement"&gt;table&lt;/SPAN&gt; QueryData as&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; into data step with merge, something like:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp;data QueryData;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; merge ods_bi_recon_selected_mp (in=inA &amp;nbsp;keep=... where=(excl_sts_code is null))&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ods_iv_recon_selected_mp (in=inB where=(excl_sts_code is not null));&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; by imb_code;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if inA and inB;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp;run;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp;&lt;/STRONG&gt;- check the logic, is the code fits your needs&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;- data step may be more efficient and faster, execpt if merge is many to many (check log messages).&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; If you got message of "... more than one ..." - you can't use data step.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;4) Finally you may try using SPDE engine, but this may be a long story to explain and it may need more disk space;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 15:56:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311750#M67459</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2016-11-15T15:56:42Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311766#M67469</link>
      <description>Thanks for the tips. Exactly what is meant by 'compute imb_code'?</description>
      <pubDate>Tue, 15 Nov 2016 16:42:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311766#M67469</guid>
      <dc:creator>buechler66</dc:creator>
      <dc:date>2016-11-15T16:42:10Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311768#M67471</link>
      <description>oh, and why do you recommend a SAS Merge over Proc SQL? Is it more efficient. I'd have guessed Proc SQL to be more efficient as it doesn't request the data be sorted first with a Proc Sort.</description>
      <pubDate>Tue, 15 Nov 2016 16:44:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311768#M67471</guid>
      <dc:creator>buechler66</dc:creator>
      <dc:date>2016-11-15T16:44:07Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311773#M67472</link>
      <description>A good suggestion, but not possible In my case because the tables reside on two different databases/servers and a Database Link is not allowed by one of the database/server owners.&lt;BR /&gt;&lt;BR /&gt;I'm not clear on what you mean by 'considering the fact that you can't where clause the data for a subset?' Each query does have a Where clause.</description>
      <pubDate>Tue, 15 Nov 2016 16:48:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311773#M67472</guid>
      <dc:creator>buechler66</dc:creator>
      <dc:date>2016-11-15T16:48:51Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311836#M67506</link>
      <description>&lt;P&gt;Here is your code, repeated several times, computing IMB_CODE&lt;/P&gt;
&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token function"&gt;subpad&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;imb_code&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;31&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; as IMB_CODE &lt;SPAN class="token function"&gt;length&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;31&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;You can do it once per oracle table, just add format $char31.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 19:37:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311836#M67506</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2016-11-15T19:37:41Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311837#M67507</link>
      <description>&lt;P&gt;In some cases merging with data step can be more efficient than sql with nested select;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In case, more than one tablee have same combination of BY group, you cannot use merge,&lt;/P&gt;
&lt;P&gt;then I use SQL with JOIN.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 19:43:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311837#M67507</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2016-11-15T19:43:52Z</dc:date>
    </item>
    <item>
      <title>Re: Efficiency Advice</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311839#M67508</link>
      <description>&lt;P&gt;Relating to&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding﻿&lt;/a&gt;&amp;nbsp;note:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want more efficient program: less memory and less disk space will run the program in less time.&lt;/P&gt;
&lt;P&gt;If you select from DB &lt;STRONG&gt;only&lt;/STRONG&gt; those variables you need, you save memory, disk and time.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Nov 2016 19:49:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Efficiency-Advice/m-p/311839#M67508</guid>
      <dc:creator>Shmuel</dc:creator>
      <dc:date>2016-11-15T19:49:56Z</dc:date>
    </item>
  </channel>
</rss>

