<?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 Hash Question in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238287#M43763</link>
    <description>&lt;P&gt;The following script selects the first payment that meets the criteria of the given promise record by using a hash table.&amp;nbsp; I need to modify this to render ALL records in the payment table that meet the promise criteria.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So for the first record in promise (acctnum = 100 dated 3/15) - i would see two payments (dated 3/21 and 3/25) for that promise record in the output.&amp;nbsp;no records would be output for the second observation (acctnum = 100 dated 3/21).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can the below script modified to accomplish this?&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;data Promise ;&lt;BR /&gt;input acctnum&amp;nbsp; promisedate : mmddyy12. promiseamt (bwindow&amp;nbsp; ewindow ) (: mmddyy12.);&lt;BR /&gt;format promisedate bwindow ewindow mmddyy10.;&lt;BR /&gt;cards;&lt;BR /&gt;100&amp;nbsp; 3/15/2015 100&amp;nbsp; 3/15/2015 3/28/2015&lt;BR /&gt;100&amp;nbsp; 3/21/2015 150&amp;nbsp; 3/21/2015 4/1/2015&lt;BR /&gt;200&amp;nbsp; 3/15/2015 100&amp;nbsp; 3/15/2015 3/28/2015&lt;BR /&gt;200&amp;nbsp; 3/21/2015 150&amp;nbsp; 3/21/2015 4/1/2015&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data Payments ;&lt;BR /&gt;input acctnum&amp;nbsp; paydate&amp;nbsp; : mmddyy12. payamt ;&lt;BR /&gt;format&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paydate&amp;nbsp;&amp;nbsp; mmddyy10.;&lt;BR /&gt;cards;&lt;BR /&gt;100&amp;nbsp; 3/21/2015 100&lt;BR /&gt;100&amp;nbsp; 3/25/2015 150&lt;BR /&gt;100&amp;nbsp; 5/25/2015 150&lt;BR /&gt;200&amp;nbsp; 3/21/2015 100&lt;BR /&gt;200&amp;nbsp; 3/25/2015 150&lt;BR /&gt;200&amp;nbsp; 3/28/2015 150&lt;BR /&gt;200&amp;nbsp; 5/25/2015 150&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;data want;&lt;BR /&gt;&amp;nbsp;if _n_ eq 1 then do;&lt;BR /&gt;&amp;nbsp; if 0 then set Promise(keep=acctnum&amp;nbsp; bwindow ewindow); &lt;BR /&gt;&amp;nbsp; declare hash h(dataset:'Promise(keep=acctnum&amp;nbsp; bwindow ewindow)',multidata&amp;amp;colon;'y');&lt;BR /&gt;&amp;nbsp; h.definekey('acctnum');&lt;BR /&gt;&amp;nbsp; h.definedata('bwindow','ewindow');&lt;BR /&gt;&amp;nbsp; h.definedone();&lt;BR /&gt;&amp;nbsp;end;&lt;BR /&gt;set&amp;nbsp; Payments;&lt;BR /&gt;rc=h.find();&lt;BR /&gt;do while(rc=0);&lt;BR /&gt;&amp;nbsp;if bwindow le paydate le ewindow then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ​&amp;nbsp; h.removedup();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; leave;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;rc=h.find_next();&lt;BR /&gt;end;&lt;BR /&gt;drop rc;&lt;BR /&gt;run;&lt;/P&gt;</description>
    <pubDate>Tue, 08 Dec 2015 15:21:37 GMT</pubDate>
    <dc:creator>redfishJAX</dc:creator>
    <dc:date>2015-12-08T15:21:37Z</dc:date>
    <item>
      <title>Hash Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238287#M43763</link>
      <description>&lt;P&gt;The following script selects the first payment that meets the criteria of the given promise record by using a hash table.&amp;nbsp; I need to modify this to render ALL records in the payment table that meet the promise criteria.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So for the first record in promise (acctnum = 100 dated 3/15) - i would see two payments (dated 3/21 and 3/25) for that promise record in the output.&amp;nbsp;no records would be output for the second observation (acctnum = 100 dated 3/21).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can the below script modified to accomplish this?&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;data Promise ;&lt;BR /&gt;input acctnum&amp;nbsp; promisedate : mmddyy12. promiseamt (bwindow&amp;nbsp; ewindow ) (: mmddyy12.);&lt;BR /&gt;format promisedate bwindow ewindow mmddyy10.;&lt;BR /&gt;cards;&lt;BR /&gt;100&amp;nbsp; 3/15/2015 100&amp;nbsp; 3/15/2015 3/28/2015&lt;BR /&gt;100&amp;nbsp; 3/21/2015 150&amp;nbsp; 3/21/2015 4/1/2015&lt;BR /&gt;200&amp;nbsp; 3/15/2015 100&amp;nbsp; 3/15/2015 3/28/2015&lt;BR /&gt;200&amp;nbsp; 3/21/2015 150&amp;nbsp; 3/21/2015 4/1/2015&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data Payments ;&lt;BR /&gt;input acctnum&amp;nbsp; paydate&amp;nbsp; : mmddyy12. payamt ;&lt;BR /&gt;format&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paydate&amp;nbsp;&amp;nbsp; mmddyy10.;&lt;BR /&gt;cards;&lt;BR /&gt;100&amp;nbsp; 3/21/2015 100&lt;BR /&gt;100&amp;nbsp; 3/25/2015 150&lt;BR /&gt;100&amp;nbsp; 5/25/2015 150&lt;BR /&gt;200&amp;nbsp; 3/21/2015 100&lt;BR /&gt;200&amp;nbsp; 3/25/2015 150&lt;BR /&gt;200&amp;nbsp; 3/28/2015 150&lt;BR /&gt;200&amp;nbsp; 5/25/2015 150&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;data want;&lt;BR /&gt;&amp;nbsp;if _n_ eq 1 then do;&lt;BR /&gt;&amp;nbsp; if 0 then set Promise(keep=acctnum&amp;nbsp; bwindow ewindow); &lt;BR /&gt;&amp;nbsp; declare hash h(dataset:'Promise(keep=acctnum&amp;nbsp; bwindow ewindow)',multidata&amp;amp;colon;'y');&lt;BR /&gt;&amp;nbsp; h.definekey('acctnum');&lt;BR /&gt;&amp;nbsp; h.definedata('bwindow','ewindow');&lt;BR /&gt;&amp;nbsp; h.definedone();&lt;BR /&gt;&amp;nbsp;end;&lt;BR /&gt;set&amp;nbsp; Payments;&lt;BR /&gt;rc=h.find();&lt;BR /&gt;do while(rc=0);&lt;BR /&gt;&amp;nbsp;if bwindow le paydate le ewindow then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ​&amp;nbsp; h.removedup();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; leave;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;rc=h.find_next();&lt;BR /&gt;end;&lt;BR /&gt;drop rc;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Dec 2015 15:21:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238287#M43763</guid>
      <dc:creator>redfishJAX</dc:creator>
      <dc:date>2015-12-08T15:21:37Z</dc:date>
    </item>
    <item>
      <title>Re: Hash Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238298#M43771</link>
      <description>&lt;P&gt;I am missing something, can you explain why the second record does not fall into the criteria?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Dec 2015 15:42:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238298#M43771</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2015-12-08T15:42:10Z</dc:date>
    </item>
    <item>
      <title>Re: Hash Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238306#M43777</link>
      <description>&lt;P&gt;Once a payment record/observation has been used..&amp;nbsp; i dont want to use it again for any further observation in the promise dataset.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The first two obs of the payment dataset would go witht the first observation in the promise dataset.&amp;nbsp;The second observation in the promise dataset would get no&amp;nbsp;matches.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Dec 2015 15:49:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238306#M43777</guid>
      <dc:creator>redfishJAX</dc:creator>
      <dc:date>2015-12-08T15:49:16Z</dc:date>
    </item>
    <item>
      <title>Re: Hash Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238356#M43793</link>
      <description>&lt;P&gt;I was hoping someone else answered so I can see the solution.&amp;nbsp; I'm not the best person to answer this question but see if this gets the desired results, with the test data it works:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;BR /&gt;length acctnum 8. promisedate 8. promiseamt 8. bwindow 8. ewindow 8.;&lt;BR /&gt;if _N_ = 1 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;declare hash e(dataset:'promise');&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.definekey('acctnum');&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.definedata('promisedate','promiseamt','bwindow','ewindow');&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;e.definedone();&lt;BR /&gt;end;&lt;BR /&gt;set Payments;&lt;BR /&gt;drop rc;&lt;BR /&gt;rc = e.find();&lt;BR /&gt;if rc = 0 and bwindow &amp;lt;= paydate &amp;lt;= ewindow;&lt;BR /&gt;format promisedate bwindow ewindow mmddyy10.;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Tue, 08 Dec 2015 18:27:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238356#M43793</guid>
      <dc:creator>Steelers_In_DC</dc:creator>
      <dc:date>2015-12-08T18:27:31Z</dc:date>
    </item>
    <item>
      <title>Re: Hash Question</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238711#M43864</link>
      <description>&lt;P&gt;Thanks for your help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I will give this a try and see how it works.&lt;/P&gt;</description>
      <pubDate>Thu, 10 Dec 2015 15:48:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Hash-Question/m-p/238711#M43864</guid>
      <dc:creator>redfishJAX</dc:creator>
      <dc:date>2015-12-10T15:48:36Z</dc:date>
    </item>
  </channel>
</rss>

