<?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: The memrc argument in the hash object definedone method in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621207#M182587</link>
    <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;:&lt;/P&gt;
&lt;P&gt;Thanks for drawing attention to this angle. &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13569"&gt;@DonH&lt;/a&gt;&amp;nbsp;and I had discussed whether to include MEMRC in the book (it was in "my" chapter and I originally did) but decided against it weighing on how to reduce the over-the-limit page count.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This argument tag gives the programmer the option to continue processing if a hash table is filled beyond the system memory limit rather than abending the step - and the program. Conceivably, it can be used to decide programmatically to resort to a different method of processing should the hash step overfill the memory. Sort of like "if the hash step should overfill the memory, detect the condition and use a different piece of code - e.g. some divide-and-conquer methodology - to process the data in a different manner to attain the same goal".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One problem with this approach is under certain scenarios, the hash step can run for hours before running out of hash memory - as &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13569"&gt;@DonH&lt;/a&gt;&amp;nbsp;and I have found the hard way in the real data processing world while (ab)using the hash object for data aggregation. When one aggregate was done with, the table would be voided via CLEAR and proceed to the next aggregate, and it could turn out that the aggregate that would overfill the table beyond the memory limits would be one of the last after hours of the job running.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, methinks it's better to have MEMRC just in case rather than not having it at all, however rare and exotic its usage might be.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kind regards&lt;/P&gt;
&lt;P&gt;Paul D. &amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 30 Jan 2020 16:35:50 GMT</pubDate>
    <dc:creator>hashman</dc:creator>
    <dc:date>2020-01-30T16:35:50Z</dc:date>
    <item>
      <title>The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621115#M182550</link>
      <description>&lt;P&gt;Hi all.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Recently, I stumbled upon the Memrc Option the the hash object &lt;A href="https://documentation.sas.com/?docsetId=lecompobjref&amp;amp;docsetTarget=n0sh4j47qo3k56n1epu5if7n4d0g.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en" target="_self"&gt;Definedone() Method&lt;/A&gt;. The documentation is sparse, but says that:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;"If a call fails because of insufficient memory to load a data set, a nonzero return code is returned. The hash object frees the principal memory in the underlying array. The only allowable operation after this type of failure is deletion via the DELETE method."&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So, if a data set is too big to fit in the hash object, the Definedone Method will simply return a nonzero value and will not terminate the data step. Like below.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data big;
   do x = 1 to 1e9;
      output;
   end;
run;

data _null_;

   declare hash h (dataset : 'big');
   h.definekey ('x');
   rc = h.definedone (memrc : 'y'); 

   put rc = ;

   x = .;

   /* More code ... */

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;According to the doc, the only thing, I am allowed to do with h now is to call the &lt;A href="https://documentation.sas.com/?docsetId=lecompobjref&amp;amp;docsetTarget=n0zpn08q544s48n15e50hf81h8me.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en" target="_self"&gt;Delete Method&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;What the documentation does not mention is that this is true only for that&amp;nbsp;&lt;EM&gt;instance&amp;nbsp;&lt;/EM&gt;of the hash object. I am allowed to create another instance of h and work with it as usual. Like below&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data big;
   do x = 1 to 1e9;
      output;
   end;
run;

data small;
   do x = 1 to 10;
      output;
   end;
run;

data _null_;

   declare hash h (dataset : 'big');
   h.definekey ('x');
   rc = h.definedone (memrc : 'y');

   put rc =;

   h = _new_ hash (dataset:'small');
   h.definekey ('x');
   rc = h.definedone (memrc:'y');

   put rc =;

   x = 1;

   rc = h.find ();

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do any of you have experience with the Memrc Option? Or has opinions on it? Or maybe you know something that the documentation missed?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I simply messed around with it on my own as I could hardly find it mentioned anywhere but the few lines in the documentation&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I tagged a few hash people below, but anyone is more than welcome to chime in &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21262"&gt;@hashman&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13569"&gt;@DonH&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31461"&gt;@mkeintz&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 12:30:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621115#M182550</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-01-30T12:30:21Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621120#M182552</link>
      <description>&lt;P&gt;Good morning&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;&amp;nbsp; Thank you for the mention and so pleasing and needless to mention your kindness and altruism is obvious. This piece is something I haven't really tested nor I know much about it.&amp;nbsp; Since, I am not a documentation believer and have been privileged to have a paid subscription on O'Reilly/Safari media, I tend to use, search and find stuff in the books. Consequent to which, I just checked a moment ago and it appears&amp;nbsp; Guru&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21262"&gt;@hashman&lt;/a&gt;&amp;nbsp; /&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13569"&gt;@DonH&lt;/a&gt;&amp;nbsp; haven't covered that piece in the book yet and perhaps that is for the next edition.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I will look forward to Guru PD/DH chiming in on the topic and will take notes like any other audience. Thank you for bringing such interesting questions. Have a great day! Ciao!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PS The 2nd edition(&lt;EM&gt;if yes&lt;/EM&gt;) hopefully will also have Q&amp;amp;A as my college mates/Professors of BI/Stats department at DePaul really were asking for it.&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 12:58:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621120#M182552</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-01-30T12:58:19Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621128#M182554</link>
      <description>&lt;P&gt;Thanks for the question and the tag draycut. A couple of thoughts on this (I have not tried your code yet).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First,&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21262"&gt;@hashman&lt;/a&gt;&amp;nbsp;and I discovered quite a few things in the documentation that were less than clear. So add this to the list.&lt;BR /&gt;&lt;BR /&gt;Next, your observation that you could use the hash object later in your code is not surprising. The non-scalar object h in your example, is actually a pointer to a memory location. It is not a physical structure. So if the load of the data fails, and SAS properly cleaned up on that failure (more on this later), there is no reason why that hash object can't be re-used as long as the structure of the keys and data portion are the same (in your example, X is the only key and the only data item). There are numerous examples in the documentation and the book&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21262"&gt;@hashman&lt;/a&gt;&amp;nbsp;and I wrote (as well as here in the community) of such re-use after using the CLEAR method.&lt;BR /&gt;&lt;BR /&gt;Given this and returning to the issue of the documentation, it would not surprise me if cleaning up after such a failed load was fixed in a later release and this nuance of the documentation was just missed.&lt;BR /&gt;&lt;BR /&gt;And to respond to&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;, there is not an explicit example of this in our book. So if there is a second edition, we could certainly include this. And WRT a Q&amp;amp;A, we can do that right here in the community (note that I tagged this reply using DMHashBook which is a tag &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21262"&gt;@hashman&lt;/a&gt;&amp;nbsp;and I use in articles we post here).&lt;BR /&gt;&lt;BR /&gt;The issue of reusing hash object pointers is covered in a few places in the book - most notably in the memory management chapter. And creating multiple instances of hash object in the hash of hash chapter.&lt;BR /&gt;&lt;BR /&gt;Hope this helps.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 13:32:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621128#M182554</guid>
      <dc:creator>DonH</dc:creator>
      <dc:date>2020-01-30T13:32:47Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621152#M182564</link>
      <description>The 2nd edition of the HashBook - I second that!&lt;BR /&gt;&lt;BR /&gt;all the best&lt;BR /&gt;Bart</description>
      <pubDate>Thu, 30 Jan 2020 14:21:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621152#M182564</guid>
      <dc:creator>yabwon</dc:creator>
      <dc:date>2020-01-30T14:21:41Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621181#M182575</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt; &amp;nbsp; Interesting question. &amp;nbsp;I've never had reason to learn about the memrc argument.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And it made me wonder whether a non-zero return from the definedone() method would release the otherwise useless memory.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Answer:it does. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I ran the following program while monitoring memory use by SAS on my windows machine (a technique I recently learned from&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21262"&gt;@hashman&lt;/a&gt;&amp;nbsp;in the SAS-L listserve group. &amp;nbsp; It showed memory for SAS bumping up from 64MB to 1400MB.&amp;nbsp; But when the definedone method returned a 160030, it dropped back to 64MB long before the data step ended.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data big /view=big;
  i=1; 
  length ch1-ch20 $1000;
  array _ch ch: ;
  do over _ch;   _ch=repeat('x',999); end;
  do i=1 to 1e6; output; end;
run;
   
data _null_;
   if 0 then set big;
   call sleep(5,1);
   declare hash h (dataset:'big');
      h.definekey('i');
      h.definedata(all:'Y');
      rc=h.definedone(memrc:'y');
   put rc=;
   call sleep(5,1);
   stop;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 15:44:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621181#M182575</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2020-01-30T15:44:33Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621207#M182587</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;:&lt;/P&gt;
&lt;P&gt;Thanks for drawing attention to this angle. &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13569"&gt;@DonH&lt;/a&gt;&amp;nbsp;and I had discussed whether to include MEMRC in the book (it was in "my" chapter and I originally did) but decided against it weighing on how to reduce the over-the-limit page count.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This argument tag gives the programmer the option to continue processing if a hash table is filled beyond the system memory limit rather than abending the step - and the program. Conceivably, it can be used to decide programmatically to resort to a different method of processing should the hash step overfill the memory. Sort of like "if the hash step should overfill the memory, detect the condition and use a different piece of code - e.g. some divide-and-conquer methodology - to process the data in a different manner to attain the same goal".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One problem with this approach is under certain scenarios, the hash step can run for hours before running out of hash memory - as &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13569"&gt;@DonH&lt;/a&gt;&amp;nbsp;and I have found the hard way in the real data processing world while (ab)using the hash object for data aggregation. When one aggregate was done with, the table would be voided via CLEAR and proceed to the next aggregate, and it could turn out that the aggregate that would overfill the table beyond the memory limits would be one of the last after hours of the job running.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, methinks it's better to have MEMRC just in case rather than not having it at all, however rare and exotic its usage might be.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kind regards&lt;/P&gt;
&lt;P&gt;Paul D. &amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 16:35:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621207#M182587</guid>
      <dc:creator>hashman</dc:creator>
      <dc:date>2020-01-30T16:35:50Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621209#M182588</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/35763"&gt;@yabwon&lt;/a&gt;&amp;nbsp;:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With your fabulous errata sheet taken in to account!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kind regards&lt;/P&gt;
&lt;P&gt;Paul D.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 16:37:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621209#M182588</guid>
      <dc:creator>hashman</dc:creator>
      <dc:date>2020-01-30T16:37:03Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621214#M182592</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31461"&gt;@mkeintz&lt;/a&gt;:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Mark, whenever I had to resort to this SLEEP+Windows Task Manager subterfuge, it always made me internally swear at not having a SAS function that would return the amount of memory being currently used by the step or at least the SAS session. Methiinks it wouldn't be too hard to implement in the underlying software.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Kind regards&lt;/P&gt;
&lt;P&gt;Paul D.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 16:45:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621214#M182592</guid>
      <dc:creator>hashman</dc:creator>
      <dc:date>2020-01-30T16:45:05Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621229#M182605</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21262"&gt;@hashman&lt;/a&gt;&amp;nbsp;for the reminder about that having to get pulled. I’ll find it and post it as article.&lt;/P&gt;</description>
      <pubDate>Thu, 30 Jan 2020 17:01:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621229#M182605</guid>
      <dc:creator>DonH</dc:creator>
      <dc:date>2020-01-30T17:01:53Z</dc:date>
    </item>
    <item>
      <title>Re: The memrc argument in the hash object definedone method</title>
      <link>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621521#M182698</link>
      <description>&lt;P&gt;Thank you all for chiming in. Makes more sense now. Though, I am not sure I will ever need the option in a real-world situation, it is nice to know it is there.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I can only accept one of the answers as a solution. I picked&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13569"&gt;@DonH&lt;/a&gt;s because I found it well-crafted. And because he mentioned a second edition of his and&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/21262"&gt;@hashman&lt;/a&gt;s book. Which I look very much forward to &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Again, thank you.&lt;/P&gt;</description>
      <pubDate>Fri, 31 Jan 2020 18:46:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/The-memrc-argument-in-the-hash-object-definedone-method/m-p/621521#M182698</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2020-01-31T18:46:59Z</dc:date>
    </item>
  </channel>
</rss>

