<?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 FCMP for removing missing values in array and OF operators in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235785#M55147</link>
    <description>The difference is that an Array in SAS is not an object. It's a shortcut reference to variables. The concept of data object don't exist at least within traditional SAS. If you go down IML and/or DS2 then that differs. &lt;BR /&gt;&lt;BR /&gt;Its better to sometimes learn the best way to do things in a new language rather than to shoehorn a different method into the language.</description>
    <pubDate>Fri, 20 Nov 2015 21:13:39 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2015-11-20T21:13:39Z</dc:date>
    <item>
      <title>PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235761#M55138</link>
      <description>&lt;P&gt;Hi everyone,&amp;nbsp;&lt;/P&gt;&lt;P&gt;First post. Just began learning SAS about a couple weeks ago and am finding some things unbelievably infuriating. I'm used to stackoverflow handing me answers on a platter but this doesn't seem to be the case with SAS so here I am....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My requirements are very straightforward. I am writing a user defined functions using PROC FCMP, passing it an array. I want to create a new array without missing values and calculate a median. I realize that I don't need a UDF for this but this answer will generalize to many other things I'd like to do. I'd also like to know how to have a function variable assigned to a macro variable.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is my current function.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;proc fcmp outlib=work.functions.sample;
	function remove_missing(t[*]);
		array n[100] /nosymbols;
		array n_new[100] / nosymbols;
		do i = 1 to dim(t);
			n[i] = t[i];
		end;
		num_missing = cmiss(of n[*]);
		kept = 100 - num_missing;

		call dynamic_array(n_new, kept);
		olddim = dim(n);
		newdim = dim(n_new);
		put olddim= newdim=;
		do i = 1 to dim(n_new);
			n_new[i]=n[i];
		end;
		m = median(of n_new[*]); *error here. Index out of bounds.;
		return(m);
	endsub;
run;
quit;&lt;/PRE&gt;&lt;P&gt;And Data step&lt;/P&gt;&lt;PRE&gt;options cmplib=work.functions;
data _null_;
	array prices[*] t1-t55;
	do i = 1 to 10;
		prices[i] = i*2;
	end;
	med = remove_missing(prices);
run;&lt;/PRE&gt;&lt;P&gt;After dynamically altering the new array, running &lt;STRONG&gt;median(of n_new[*])&lt;/STRONG&gt; attempts to use all 100 of the previously defined array than the 10 for the new dimension. And the reason I must make a new array inside my function is that the OF operator needs a contiguous (or temporary) array for it to work.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, I would absolutely love to know to the following in a function. Have a macro variable assigned to a function variable. %SYSFUNC somehow doesn not work with the&amp;nbsp;&lt;STRONG&gt;dim&amp;nbsp;&lt;/STRONG&gt;function.&lt;/P&gt;&lt;PRE&gt;variable = dim(array);
%let macrovar = variable;&lt;/PRE&gt;</description>
      <pubDate>Fri, 20 Nov 2015 19:28:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235761#M55138</guid>
      <dc:creator>TedP</dc:creator>
      <dc:date>2015-11-20T19:28:10Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235764#M55139</link>
      <description>&lt;P&gt;What is the purpose of the proposed function?&lt;/P&gt;
&lt;P&gt;What does it mean to remove the missing values?&lt;/P&gt;
&lt;P&gt;How is the median going to be any different once you have removed the missing values?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Nov 2015 19:42:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235764#M55139</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-11-20T19:42:41Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235767#M55140</link>
      <description>&lt;P&gt;The above problem is just a dummy version of a much larger function where I compute the mode of an array of numbers using a hash table. If there is no mode (each number appars once) or the frequency of the most common number of the array is less than 30% of the length of the data, then the function returns the median. Else it returns the mode.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My main issue is that I cannot compute&amp;nbsp;&lt;STRONG&gt;median(of array[*])&lt;/STRONG&gt; and&amp;nbsp;&lt;STRONG&gt;cmiss(of array[*])&lt;/STRONG&gt; in the udf because for whatever reason&amp;nbsp;&lt;STRONG&gt;proc fcmp&lt;/STRONG&gt; needs a contiguous or temporary array. My current solution is to compute the median and missing count outside of the udf and just pass those values as parameters into my function.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is my real function&lt;/P&gt;&lt;PRE&gt;proc fcmp outlib=work.functions.sample;
	function find_mode(prices[*], num_missing, the_median);
		length price 8;
		length count 8;
		declare hash hash_initial();
		rc = hash_initial.defineKey('price');
		rc = hash_initial.defineData('price', 'count');
		rc = hash_initial.defineDone();
		declare hash hash_ordered(ordered:'d');
		rc = hash_ordered.defineKey('count');
		rc = hash_ordered.defineData('price', 'count');
		rc = hash_ordered.defineDone();
		declare hiter hash_initial_iter('hash_initial');
		declare hiter hash_ordered_iter('hash_ordered');

	do i = 1 to dim(prices);
		price = prices[i];
		rc = hash_initial.find();
		if rc ^= 0 then
			do;
				if price = . then count = 0;
				else count = 1;
				rc = hash_initial.add();
			end;
		else
			do;
				if price ^= . then count = count + 1;
				rc = hash_initial.replace();
			end;
	end;
		
	rc = hash_initial_iter.first();
	do while (rc=0);
     	rc = hash_ordered.replace();
        rc=hash_initial_iter.next();
  	end;

	rc = hash_ordered_iter.first();
	num_non_missing = dim(prices) - num_missing;
	if num_non_missing &amp;gt; 0 then
		do;
		if count = 1 or count / num_non_missing &amp;lt; .3 then price = the_median;
		end;
	else price = .;

	rc = hash_initial_iter.delete(); 
	rc = hash_ordered_iter.delete();
	rc = hash_initial.clear();
	rc = hash_ordered.clear();
	
	return(price);
	endsub;
run;
quit;&lt;/PRE&gt;</description>
      <pubDate>Fri, 20 Nov 2015 19:58:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235767#M55140</guid>
      <dc:creator>TedP</dc:creator>
      <dc:date>2015-11-20T19:58:59Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235776#M55142</link>
      <description>&lt;P&gt;Consider transposing your data, using BY processing within a PROC MEANS instead.&lt;/P&gt;
&lt;P&gt;PROC STDIZE can be used for filling in missing values.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Nov 2015 20:31:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235776#M55142</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-11-20T20:31:58Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235778#M55143</link>
      <description>&lt;P&gt;Reeza, I'd rather not get derailed going down a path other than the answer to my question. It seems there should be a simple solution. Pass an array to a function. Make it a contiguous array. Compute summary statistics using the&amp;nbsp;&lt;STRONG&gt;of&amp;nbsp;&lt;/STRONG&gt;operator. What also would work is&amp;nbsp;&lt;STRONG&gt;%let arraydim = %sysfunc(dim(oldarray)); newarray array[&amp;amp;arraydim];&amp;nbsp;&lt;/STRONG&gt;But there are two issues.&amp;nbsp;&lt;STRONG&gt;%sysfunc&lt;/STRONG&gt; doesn't allow&amp;nbsp;&lt;STRONG&gt;dim&amp;nbsp;&lt;/STRONG&gt; and even if it did it wouldn't be able calculate&amp;nbsp;&lt;STRONG&gt;dim(oldarray)&lt;/STRONG&gt; because&amp;nbsp;&lt;STRONG&gt;oldarray&amp;nbsp;&lt;/STRONG&gt;is not a macro variable.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And to give more background. I am taking the leading and lagging 7 values by&amp;nbsp;group during the datastep and stuffing them into an array to calculate the mode so proc means wouldn't work here. Here is the code that use my my main udf&amp;nbsp;&lt;STRONG&gt;find_mode&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It works fine the way it is. I just want to move the&amp;nbsp;&lt;STRONG&gt;num_missing&amp;nbsp;&lt;/STRONG&gt;and&amp;nbsp;&lt;STRONG&gt;the_median&amp;nbsp;&lt;/STRONG&gt;statements into my udf, which should be very easy...but &amp;nbsp;I can't figure it out.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;%macro short_mode(dataset, new_dataset, price_col, output_col, lastcol, num_lags);
options cmplib=sp.functions;
data &amp;amp;new_dataset;
	%let lastcol1 = %sysfunc(catx(,&amp;amp;lastcol,1));
  	set &amp;amp;dataset;
  	by geomarket segment CURR_OPER_NAME HL_LL_Desc &amp;amp;lastcol;
	
	%do i = 1 %to &amp;amp;num_lags;
		%let obs = %eval(&amp;amp;i + 1);
		if eof&amp;amp;i=0 then
			set &amp;amp;dataset (firstobs=&amp;amp;obs keep=geomarket segment CURR_OPER_NAME HL_LL_Desc &amp;amp;lastcol &amp;amp;price_col 
							rename=(&amp;amp;price_col=lead&amp;amp;i HL_LL_Desc=HL_LL_Desc1 CURR_OPER_NAME=CURR_OPER_NAME1
								segment=segment1 geomarket=geomarket1 &amp;amp;lastcol=&amp;amp;lastcol1)) end=eof&amp;amp;i;
	  	if HL_LL_Desc1 ^= HL_LL_Desc or CURR_OPER_NAME1 ^= CURR_OPER_NAME or segment1 ^= segment or geomarket1 ^= geomarket or &amp;amp;lastcol1 ^= &amp;amp;lastcol
			then lead&amp;amp;i=.;

		lag&amp;amp;i = lag&amp;amp;i(&amp;amp;price_col);
		if lag&amp;amp;i(geomarket) ^= geomarket or lag&amp;amp;i(segment) ^= segment or lag&amp;amp;i(CURR_OPER_NAME) ^= CURR_OPER_NAME or 
			lag&amp;amp;i(HL_LL_Desc) ^= HL_LL_Desc or lag&amp;amp;i(&amp;amp;lastcol) ^= &amp;amp;lastcol then	
  		lag&amp;amp;i=.;
	%end;

	array prices[*] lead1-lead&amp;amp;num_lags &amp;amp;price_col lag1-lag&amp;amp;num_lags;
	%let array_dim = %eval(&amp;amp;num_lags * 2 + 1);
	array prices_temp(&amp;amp;array_dim) _temporary_;
	do i = 1 to dim(prices);
		prices_temp[i]=prices[i];
	end;
	num_missing = cmiss(of prices_temp[*]);
	the_median = median(of prices_temp[*]);
	mode = find_mode(prices_temp, num_missing, the_median);
	&amp;amp;keepdrop;
	rename mode = &amp;amp;output_col;
run;
%mend;

%let keepdrop = drop i rc num_non_missing lag1-lag7 lead1-lead7 
					count num_missing the_median;
%short_mode(ftl_rolling, ftl_rolling_mode, Actual_Price_per_Unit,
			RollingModeCat, UOM_PPU_Type, 7);&lt;/PRE&gt;</description>
      <pubDate>Fri, 20 Nov 2015 20:38:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235778#M55143</guid>
      <dc:creator>TedP</dc:creator>
      <dc:date>2015-11-20T20:38:21Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235779#M55144</link>
      <description>&lt;P&gt;Why do you need to calculate the mode using a function instead of running the code in the data step? &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Couldn't you generate the needed code using a macro if it was too cumberson to re-type?&lt;/P&gt;
&lt;P&gt;What value is being added by the function that out ways its added complexity to implemen, especially given the limits that SAS has imposed on the flexibilty of&amp;nbsp;passing values to the function?&lt;/P&gt;</description>
      <pubDate>Fri, 20 Nov 2015 20:47:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235779#M55144</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-11-20T20:47:56Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235781#M55145</link>
      <description>&lt;P&gt;Just to super clarify. My code works well and runs quite fast. Even on a million rows of data it only takes a minute to calculate a rolling mode and its doing an absurd amount of calculations. I just want to tidy it up a bit more with something that is dead easy in other languages.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"&lt;EM&gt;Why do you need to calculate the mode using a function instead of running the code in the data step?&lt;/EM&gt; &amp;nbsp;"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A udf&amp;nbsp;is necessary (unless you can otherwise tell me so) to return a single value. I don't know how to declare a hash table in a macro and don't know how to return a single value from a macro or from a data step. A function (in my mind and just like all other languages I've ever programmed in) takes in values, does a calculation and spits out a single value.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"&lt;EM&gt;Couldn't you generate the needed code using a macro if it was too cumberson to re-type?&lt;/EM&gt;"&lt;/P&gt;&lt;P&gt;I wish I knew how to declare hash tables in macros and return a single value. I thought this was what functions were for.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"&lt;EM&gt;What value is being added by the function that out ways its added complexity to implemen, especially given the limits that SAS has imposed on the flexibilty of&amp;nbsp;passing values to the function?&lt;/EM&gt;"&lt;/P&gt;&lt;P&gt;Just like any other function in any language. Reusability, modular code. But I'm new to SAS so perhaps there are better solutions but it seems incredibly simple&amp;nbsp;what I am asking.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Nov 2015 20:59:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235781#M55145</guid>
      <dc:creator>TedP</dc:creator>
      <dc:date>2015-11-20T20:59:15Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235785#M55147</link>
      <description>The difference is that an Array in SAS is not an object. It's a shortcut reference to variables. The concept of data object don't exist at least within traditional SAS. If you go down IML and/or DS2 then that differs. &lt;BR /&gt;&lt;BR /&gt;Its better to sometimes learn the best way to do things in a new language rather than to shoehorn a different method into the language.</description>
      <pubDate>Fri, 20 Nov 2015 21:13:39 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235785#M55147</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-11-20T21:13:39Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235801#M55153</link>
      <description>&lt;P&gt;Are you calculating something that the existing time series procedures cannot do?&lt;/P&gt;
&lt;P&gt;Are you calculating something that PROC MEANS cannot calculate?&lt;/P&gt;
&lt;P&gt;It looks to me like you are just calculating the MEDIAN and the MODE over the set of values that are a fixed number of observations before or after a value? &amp;nbsp;Why not just output those as multiple records and let PROC MEANS do the work?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;* Get some sample data ;
data sample;
  set sashelp.iris (keep=species petalwidth);
  rename petalwidth=price ;
run;

* Set macro variables so it will be easy to convert to macro ;
%let lag=3 ;
%let dsn=sample;
%let byvars=species;
%let var=price ;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;P&gt;First expand the data to add your lead and lag observations. You can do this as a data step view to save permanent disk space if you data is large.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data lead_lag / view=lead_lag ;
  keep rowno &amp;amp;var;
  do until (last.%scan(&amp;amp;byvars,-1)) ;
    set &amp;amp;dsn;
    by &amp;amp;byvars ;
    _stop+1;
    if first.species then _start=_stop ;
  end;
  do until (last.%scan(&amp;amp;byvars,-1)) ;
    set &amp;amp;dsn;
    by &amp;amp;byvars;
    rowno+1;
    do p=max(_start,rowno-&amp;amp;lag) to min(rowno+&amp;amp;lag,_stop);
      set &amp;amp;dsn point=p;
      output;
    end;
  end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then calculate the statistic for each of the original rows.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc summary data=lead_lag nway;
  by rowno ;
  var &amp;amp;var ;
  output out=want(drop=_type_ _freq_) mode=mode mean=mean median=median ;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Then combine the new statistic columns back with the source data.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want ;
  merge &amp;amp;dsn want ;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;Results look like this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Obs    Species    price    rowno    mode      mean     median

  1    Setosa       2         1       2     3.00000      2.5
  2    Setosa       3         2       2     2.80000      2.0
  3    Setosa       2         3       2     2.66667      2.0
  4    Setosa       5         4       2     2.57143      2.0
  5    Setosa       2         5       2     2.42857      2.0
  6    Setosa       2         6       2     2.28571      2.0
  7    Setosa       2         7       2     2.85714      2.0
  8    Setosa       1         8       2     2.42857      2.0
  9    Setosa       2         9       2     2.42857      2.0
 10    Setosa       6        10       2     2.57143      2.0
 11    Setosa       2        11       2     2.57143      2.0
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Nov 2015 23:30:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235801#M55153</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2015-11-20T23:30:22Z</dc:date>
    </item>
    <item>
      <title>Re: PROC FCMP for removing missing values in array and OF operators</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235805#M55154</link>
      <description>&lt;P&gt;Very nice. Thats extremely good and very fast. Thanks a lot! I'll have to tweak just a bit to add my logic for when choosing the median but I won't have to use arrays now.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Nov 2015 23:48:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/PROC-FCMP-for-removing-missing-values-in-array-and-OF-operators/m-p/235805#M55154</guid>
      <dc:creator>TedP</dc:creator>
      <dc:date>2015-11-20T23:48:36Z</dc:date>
    </item>
  </channel>
</rss>

