<?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: Help with Hash Has_next &amp; Find_next in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/Help-with-Hash-Has-next-Find-next/m-p/182408#M3699</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If I understand your request correctly, you have made your code more complicated than it needs by involving Has_next method, besides, your call missing statement would never be executed if H.Find() fails. So it is easy to fix your code by just moving the call missing statement:&lt;/P&gt;&lt;P&gt;Data C (Drop=r:) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Declare Hash H(Dataset:'B',Multidata:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definekey('Nr');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definedata(All:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definedone();&lt;/P&gt;&lt;P&gt;&amp;nbsp; If 0 Then Set B;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Do Until (Eof_A);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Set A End=Eof_A;&lt;/P&gt;&lt;P&gt;rc=H.Find();&lt;/P&gt;&lt;P&gt;If (rc eq 0) Then Do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Has_next(result:r);&lt;/P&gt;&lt;P&gt;&amp;nbsp; If (r ne 0) or (rc ne 0) Then Do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=H.Find_next();&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Has_next(result:r);&lt;/P&gt;&lt;P&gt;&amp;nbsp; If r eq 0 Then Call Missing (B_Bom_ID); * this line doesn't work;&lt;/P&gt;&lt;P&gt;&amp;nbsp; End;&lt;/P&gt;&lt;P&gt;End;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline; font-size: 14pt;"&gt;&lt;STRONG&gt;else call missing(of b_:);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Output; * I think I have to keep the output here;&lt;/P&gt;&lt;P&gt;&amp;nbsp; End;&lt;/P&gt;&lt;P&gt;Run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Or not using Has_next at all:&lt;/P&gt;&lt;P&gt;Data D;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Declare Hash H(Dataset:'B',Multidata:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definekey('Nr');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definedata(All:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definedone();&lt;/P&gt;&lt;P&gt;&amp;nbsp; If 0 Then Set B;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Do Until (Eof_A);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Set A End=Eof_A;&lt;/P&gt;&lt;P&gt; rc=H.Find();&lt;/P&gt;&lt;P&gt; if rc ne 0 then do;&lt;/P&gt;&lt;P&gt;Call Missing ( of B_:);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else do rc=0 by 0 while (rc eq 0); &lt;/P&gt;&lt;P&gt;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=H.Find_next();&lt;/P&gt;&lt;P&gt; End;&lt;/P&gt;&lt;P&gt; end;&lt;/P&gt;&lt;P&gt;Run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 14 Jan 2015 21:44:49 GMT</pubDate>
    <dc:creator>Haikuo</dc:creator>
    <dc:date>2015-01-14T21:44:49Z</dc:date>
    <item>
      <title>Help with Hash Has_next &amp; Find_next</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Help-with-Hash-Has-next-Find-next/m-p/182407#M3698</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am trying to merge records which have multiple observations (sorry, I couldn't put this clearer). For example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Base file&lt;/STRONG&gt;&amp;nbsp; --&amp;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; &lt;STRONG&gt;&amp;nbsp; Lookup file&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;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; Result&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;A_ID1 A_ID2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A_Value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B_ID1&amp;nbsp;&amp;nbsp; B_ID2 B_Value&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A_ID1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A_ID2 A_Value&amp;nbsp;&amp;nbsp;&amp;nbsp; B_ID1 B_ID2 B_Value&lt;/P&gt;&lt;P&gt;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 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; MMM&amp;nbsp;&amp;nbsp; 0.4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMM 0.4&lt;/P&gt;&lt;P&gt;A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LLL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KKK&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 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; LLL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KKK&amp;nbsp;&amp;nbsp; 0.6&lt;/P&gt;&lt;P&gt;B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMM&amp;nbsp;&amp;nbsp; 0.9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMM 0.4&lt;/P&gt;&lt;P&gt;B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QQQ&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QQQ&amp;nbsp;&amp;nbsp; 0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KKK&amp;nbsp;&amp;nbsp; 0.6&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is, in a sense I merge by ID_1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The following code uses a hash object and works almost, but it keeps the predecessor of the lookup file, if the number of observations in the lookup file is smaller than the number of observations in the base file. If you run this code, line 10 gets the B_: variables of line 9, but they should be missing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data A;&lt;BR /&gt;&amp;nbsp; Input @1 A_BoM_ID $20. @22 A_Mid $3. A_Qty;&lt;BR /&gt;&amp;nbsp; Length A_Upper $3.;&lt;BR /&gt;&amp;nbsp; A_Upper=Substr(A_BoM_ID,1,3);&lt;BR /&gt;&amp;nbsp; Datalines;&lt;BR /&gt;460_01_462_01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.5&lt;BR /&gt;460_01_462_01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 401 0.5&lt;BR /&gt;460_01_462_02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.7&lt;BR /&gt;460_01_462_02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 498 0.3&lt;BR /&gt;460_01_462_03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 499 0.8&lt;BR /&gt;460_01_462_03&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 401 0.2&lt;BR /&gt;460_01_462_04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 1&lt;BR /&gt;460_01_462_05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.6&lt;BR /&gt;460_01_462_05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 401 0.3&lt;BR /&gt;460_01_462_05&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402 0.1&lt;BR /&gt;460_01_462_06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.7&lt;BR /&gt;460_01_462_06&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 498 0.3&lt;BR /&gt;463_01_462_01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.9&lt;BR /&gt;463_01_462_01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 401 0.1&lt;BR /&gt;463_01_462_02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 498 0.6&lt;BR /&gt;463_01_462_02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 499 0.4&lt;BR /&gt;467_01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.5&lt;BR /&gt;467_01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 401 0.5&lt;BR /&gt;467_02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.5&lt;BR /&gt;467_02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402 0.5&lt;BR /&gt;468_02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.5&lt;BR /&gt;468_02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402 0.5&lt;BR /&gt;468_04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 400 0.7&lt;BR /&gt;468_04&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 402 0.3&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;Data A;&lt;BR /&gt;&amp;nbsp; Set A;&lt;BR /&gt;&amp;nbsp; Retain Nr;&lt;BR /&gt;&amp;nbsp; By A_BoM_ID;&lt;BR /&gt;&amp;nbsp; If First.A_BoM_ID Then Nr=0;&lt;BR /&gt;&amp;nbsp; Nr+1;&lt;/P&gt;&lt;P&gt;%Let BoM_ID=460_01_462_02;&lt;BR /&gt;Data B;&lt;BR /&gt;&amp;nbsp; Set A (Where=(B_Bom_ID eq "&amp;amp;BoM_ID.") Rename=(A_Bom_ID=B_Bom_ID A_Upper=B_Upper A_Mid=B_Mid A_Qty=B_Qty));&lt;BR /&gt;Run;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;Data C (Drop=r:) ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp; Declare Hash H(Dataset:'B',Multidata:'y');&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp; H.Definekey('Nr');&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp; H.Definedata(All:'y');&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp; H.Definedone();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp; If 0 Then Set B;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp; Do Until (Eof_A);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set A End=Eof_A;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt; rc=H.Find();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt; If (rc eq 0) Then Do;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; H.Has_next(result:r);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp; If (r ne 0) or (rc ne 0) Then Do;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc=H.Find_next();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; H.Has_next(result:r);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If r eq 0 Then Call Missing (B_Bom_ID); * this line doesn't work;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp; End;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt; End;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff0000;"&gt; Output; * I think I have to keep the output here;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&amp;nbsp; End;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;Run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My question is, how can I modify the code in such a way that the predecessors of the lookup data aren't passed on?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&amp;amp;kind regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Jan 2015 14:54:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Help-with-Hash-Has-next-Find-next/m-p/182407#M3698</guid>
      <dc:creator>user24feb</dc:creator>
      <dc:date>2015-01-14T14:54:02Z</dc:date>
    </item>
    <item>
      <title>Re: Help with Hash Has_next &amp; Find_next</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Help-with-Hash-Has-next-Find-next/m-p/182408#M3699</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If I understand your request correctly, you have made your code more complicated than it needs by involving Has_next method, besides, your call missing statement would never be executed if H.Find() fails. So it is easy to fix your code by just moving the call missing statement:&lt;/P&gt;&lt;P&gt;Data C (Drop=r:) ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Declare Hash H(Dataset:'B',Multidata:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definekey('Nr');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definedata(All:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definedone();&lt;/P&gt;&lt;P&gt;&amp;nbsp; If 0 Then Set B;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Do Until (Eof_A);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Set A End=Eof_A;&lt;/P&gt;&lt;P&gt;rc=H.Find();&lt;/P&gt;&lt;P&gt;If (rc eq 0) Then Do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Has_next(result:r);&lt;/P&gt;&lt;P&gt;&amp;nbsp; If (r ne 0) or (rc ne 0) Then Do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=H.Find_next();&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Has_next(result:r);&lt;/P&gt;&lt;P&gt;&amp;nbsp; If r eq 0 Then Call Missing (B_Bom_ID); * this line doesn't work;&lt;/P&gt;&lt;P&gt;&amp;nbsp; End;&lt;/P&gt;&lt;P&gt;End;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline; font-size: 14pt;"&gt;&lt;STRONG&gt;else call missing(of b_:);&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Output; * I think I have to keep the output here;&lt;/P&gt;&lt;P&gt;&amp;nbsp; End;&lt;/P&gt;&lt;P&gt;Run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Or not using Has_next at all:&lt;/P&gt;&lt;P&gt;Data D;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Declare Hash H(Dataset:'B',Multidata:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definekey('Nr');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definedata(All:'y');&lt;/P&gt;&lt;P&gt;&amp;nbsp; H.Definedone();&lt;/P&gt;&lt;P&gt;&amp;nbsp; If 0 Then Set B;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Do Until (Eof_A);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Set A End=Eof_A;&lt;/P&gt;&lt;P&gt; rc=H.Find();&lt;/P&gt;&lt;P&gt; if rc ne 0 then do;&lt;/P&gt;&lt;P&gt;Call Missing ( of B_:);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else do rc=0 by 0 while (rc eq 0); &lt;/P&gt;&lt;P&gt;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=H.Find_next();&lt;/P&gt;&lt;P&gt; End;&lt;/P&gt;&lt;P&gt; end;&lt;/P&gt;&lt;P&gt;Run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 14 Jan 2015 21:44:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Help-with-Hash-Has-next-Find-next/m-p/182408#M3699</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2015-01-14T21:44:49Z</dc:date>
    </item>
  </channel>
</rss>

