<?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: find non-matching data in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158280#M30906</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you datasp for showing two diff methods to resolve. I learn new concept of Hash. &lt;/P&gt;&lt;P&gt;Thank you Arthur very much. Nicely explained. &lt;/P&gt;&lt;P&gt;My issue resolved.&lt;/P&gt;&lt;P&gt;Thanks once again.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 09 Feb 2015 16:05:58 GMT</pubDate>
    <dc:creator>Abraham</dc:creator>
    <dc:date>2015-02-09T16:05:58Z</dc:date>
    <item>
      <title>find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158272#M30898</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Everyone I have two table master (master_grossery) and child (grossery). I want to find the items from grosssery table which are not matcing with master_grossery table&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem is that all items in child table separated by exclamatory mark.&lt;/P&gt;&lt;P&gt;How can I take single item from it and then match with master table to see whether present or not.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data grossery;&lt;/P&gt;&lt;P&gt;input name $ item $;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;fruit_name&amp;nbsp;&amp;nbsp; apple&lt;/P&gt;&lt;P&gt;fruit-veg orange!onion!potato&lt;/P&gt;&lt;P&gt;vegetable tomato!cashew!drumstick&lt;/P&gt;&lt;P&gt;name_of_veg garlic!ginger!sapota&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data master_grossery;&lt;/P&gt;&lt;P&gt;input id mitem $ price;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;101 orange 23&lt;/P&gt;&lt;P&gt;102 apple 34&lt;/P&gt;&lt;P&gt;103 garlic 21&lt;/P&gt;&lt;P&gt;104 sapota 45&lt;/P&gt;&lt;P&gt;105 custardapple 32&lt;/P&gt;&lt;P&gt;106 bittergourd 12&lt;/P&gt;&lt;P&gt;107 sugar 45&lt;/P&gt;&lt;P&gt;108 onion 43&lt;/P&gt;&lt;P&gt;109 sapota 102&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;create table item_not_found as&lt;/P&gt;&lt;P&gt;select * from grossery&lt;/P&gt;&lt;P&gt;where item not in (select mitem from master_grossery)&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--&amp;gt; The output should be displayed like &lt;/P&gt;&lt;P&gt;Potato under column fruit-veg is not available&lt;/P&gt;&lt;P&gt;Tomato under column vegetable is not available&lt;/P&gt;&lt;P&gt;Cashew under column vegetable is not available&lt;/P&gt;&lt;P&gt;Drumstick under column vegetable is not available&lt;/P&gt;&lt;P&gt;Ginger under column name_of_veg is not available&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Feb 2015 15:23:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158272#M30898</guid>
      <dc:creator>Abraham</dc:creator>
      <dc:date>2015-02-08T15:23:03Z</dc:date>
    </item>
    <item>
      <title>Re: find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158273#M30899</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="812728" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;: I think it would be a lot easier if you first include a datastep to expand the grossery dataset. e.g.:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data grossery (keep=name item);&lt;/P&gt;&lt;P&gt;&amp;nbsp; informat name $50.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; informat items $100.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length item $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input name $ items $;&lt;/P&gt;&lt;P&gt;&amp;nbsp; i=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do while (scan(items,i,'!') ne '');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; item=scan(items,i,'!');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;fruit_name&amp;nbsp;&amp;nbsp; apple&lt;/P&gt;&lt;P&gt;fruit-veg orange!onion!potato&lt;/P&gt;&lt;P&gt;vegetable tomato!cashew!drumstick&lt;/P&gt;&lt;P&gt;name_of_veg garlic!ginger!sapota&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data master_grossery;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length mitem $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input id mitem price;&lt;/P&gt;&lt;P&gt;&amp;nbsp; cards;&lt;/P&gt;&lt;P&gt;101 orange 23&lt;/P&gt;&lt;P&gt;102 apple 34&lt;/P&gt;&lt;P&gt;103 garlic 21&lt;/P&gt;&lt;P&gt;104 sapota 45&lt;/P&gt;&lt;P&gt;105 custardapple 32&lt;/P&gt;&lt;P&gt;106 bittergourd 12&lt;/P&gt;&lt;P&gt;107 sugar 45&lt;/P&gt;&lt;P&gt;108 onion 43&lt;/P&gt;&lt;P&gt;109 sapota 102&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt; select catx(' ',item,'from column',name,'is not available')&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; from grossery&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where item not in (select mitem from master_grossery)&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Feb 2015 16:29:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158273#M30899</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2015-02-08T16:29:22Z</dc:date>
    </item>
    <item>
      <title>Re: find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158274#M30900</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Arthur for your help.&lt;/P&gt;&lt;P&gt;Suppose I change the data slightly. then the word is not splitted properly.&lt;/P&gt;&lt;P&gt;Could you please help whether I made any mistake in the program as the dataset contain exclamatory mark for 4 columns. Is it possible that a single loop can split the word in a single dataset.&lt;/P&gt;&lt;P&gt;Thank you very much in advance&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data grossery (keep=id name item);&lt;/P&gt;&lt;P&gt;&amp;nbsp; informat name $100.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; informat items $200.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length item $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input id name $ items $;&lt;/P&gt;&lt;P&gt;&amp;nbsp; i=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do while (scan(items,i,'!') ne '');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name=scan(name,i,'!');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; item=scan(items,i,'!');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;101 fruit_name!fruit_na1&amp;nbsp;&amp;nbsp; apple&lt;/P&gt;&lt;P&gt;102 fruit-veg!fruit1!fruit2 orange!onion!potato&lt;/P&gt;&lt;P&gt;103 vegetable tomato!cashew!drumstick&lt;/P&gt;&lt;P&gt;104 name_of_veg garlic!ginger!sapota&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Feb 2015 18:42:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158274#M30900</guid>
      <dc:creator>Abraham</dc:creator>
      <dc:date>2015-02-08T18:42:55Z</dc:date>
    </item>
    <item>
      <title>Re: find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158275#M30901</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="812728" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;: I would have used:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data grossery (keep=id name item);&lt;/P&gt;&lt;P&gt;&amp;nbsp; length id $8.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length name $50.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length item $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input;&lt;/P&gt;&lt;P&gt;&amp;nbsp; id=scan(_infile_,1,'! ');&lt;/P&gt;&lt;P&gt;&amp;nbsp; name=scan(_infile_,2,'! ');&lt;/P&gt;&lt;P&gt;&amp;nbsp; i=3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do while (scan(_infile_,i,'! ') ne '');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; item=scan(_infile_,i,'! ');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;101 fruit_name!fruit_na1&amp;nbsp;&amp;nbsp; apple&lt;/P&gt;&lt;P&gt;102 fruit-veg!fruit1!fruit2 orange!onion!potato&lt;/P&gt;&lt;P&gt;103 vegetable tomato!cashew!drumstick&lt;/P&gt;&lt;P&gt;104 name_of_veg garlic!ginger!sapota&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Feb 2015 19:34:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158275#M30901</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2015-02-08T19:34:58Z</dc:date>
    </item>
    <item>
      <title>Re: find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158276#M30902</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you Arthur once again. But I am not getting correct output. &lt;/P&gt;&lt;P&gt;The value "fruit_na1" is wrongly populated in variable 'name'. In stead, it is captured by other variable 'Item' like below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;101&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fruit_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;fruit_na1&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;101&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fruit_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; apple&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The output for that row should be &lt;/P&gt;&lt;P&gt;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;101&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fruit_name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; apple&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;101&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fruit_na&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; apple&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Feb 2015 04:07:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158276#M30902</guid>
      <dc:creator>Abraham</dc:creator>
      <dc:date>2015-02-09T04:07:15Z</dc:date>
    </item>
    <item>
      <title>Re: find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158277#M30903</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;How about using Proc Format?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Create a Format for the Master data set. The read your CHILD data set and while you read, parse it to get the individual name and apply the format. If it does not give 'Y' the output the obsevation with the flag having your label.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data master_grossery;&lt;/P&gt;&lt;P&gt;input id mitem $12. price;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;101 orange&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 23&lt;/P&gt;&lt;P&gt;102 apple&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 34&lt;/P&gt;&lt;P&gt;103 garlic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 21&lt;/P&gt;&lt;P&gt;104 sapota&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45&lt;/P&gt;&lt;P&gt;105 custardapple 32&lt;/P&gt;&lt;P&gt;106 bittergourd&amp;nbsp; 12&lt;/P&gt;&lt;P&gt;107 sugar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45&lt;/P&gt;&lt;P&gt;108 onion&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 43&lt;/P&gt;&lt;P&gt;109 sapota&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 102&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data cnt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set master_grossery(keep = mitem rename = (mitem=start)) end = eof;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; retain fmtname 'mitem' type 'C' Label 'Y';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if eof then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HLO = 'O';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = ' ';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; label = 'N';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data = cnt nodupkey;&lt;/P&gt;&lt;P&gt;by start;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc format cntlin = cnt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data grossery(keep=i_name name flag);&lt;/P&gt;&lt;P&gt;length i_name $10;&lt;/P&gt;&lt;P&gt;input name $11.&amp;nbsp; item $25.;&lt;/P&gt;&lt;P&gt;nw = countw(item, '!');&lt;/P&gt;&lt;P&gt;do i = 1 to nw;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; i_name = scan(item, i, '!');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if put(i_name, mitem.) ^= 'Y' then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag = 'Not available';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;fruit_name&amp;nbsp;&amp;nbsp; apple&lt;/P&gt;&lt;P&gt;fruit-veg&amp;nbsp;&amp;nbsp;&amp;nbsp; orange!onion!potato&lt;/P&gt;&lt;P&gt;vegetable&amp;nbsp;&amp;nbsp;&amp;nbsp; tomato!cashew!drumstick&lt;/P&gt;&lt;P&gt;name_of_veg&amp;nbsp; garlic!ginger!sapota&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead of Proc Format, we can use Hash Table to search for the item and when&lt;/P&gt;&lt;P&gt;the name is not in the hash table, the &lt;/P&gt;&lt;P&gt;flag will be "Not available".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data master_grossery;&lt;/P&gt;&lt;P&gt;input id mitem $12. price;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;101 orange 23&lt;/P&gt;&lt;P&gt;102 apple 34&lt;/P&gt;&lt;P&gt;103 garlic 21&lt;/P&gt;&lt;P&gt;104 sapota 45&lt;/P&gt;&lt;P&gt;105 custardapple 32&lt;/P&gt;&lt;P&gt;106 bittergourd 12&lt;/P&gt;&lt;P&gt;107 sugar 45&lt;/P&gt;&lt;P&gt;108 onion 43&lt;/P&gt;&lt;P&gt;109 sapota 102&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want(keep=i_name name flag);&lt;/P&gt;&lt;P&gt;if _n_ = 1 then do;&lt;/P&gt;&lt;P&gt;if 0 then set master_grossery(keep=mitem);&lt;/P&gt;&lt;P&gt;declare hash h();&lt;/P&gt;&lt;P&gt;h.definekey('mitem');&lt;/P&gt;&lt;P&gt;h.definedone();&lt;/P&gt;&lt;P&gt;do until(eof);&lt;/P&gt;&lt;P&gt;set master_grossery(keep=mitem) end = eof;&lt;/P&gt;&lt;P&gt;if h.find() ^= 0 then h.add();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;length i_name $10;&lt;/P&gt;&lt;P&gt;input name $11. item $25.;&lt;/P&gt;&lt;P&gt;nw = countw(item, '!');&lt;/P&gt;&lt;P&gt;do i = 1 to nw;&lt;/P&gt;&lt;P&gt;i_name = scan(item, i, '!');&lt;/P&gt;&lt;P&gt;if h.find(key:i_name) ^= 0 then do;&lt;/P&gt;&lt;P&gt;flag = 'Not available';&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;fruit_name apple&lt;/P&gt;&lt;P&gt;fruit-veg orange!onion!potato&lt;/P&gt;&lt;P&gt;vegetable tomato!cashew!drumstick&lt;/P&gt;&lt;P&gt;name_of_veg garlic!ginger!sapota&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Feb 2015 06:40:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158277#M30903</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2015-02-09T06:40:10Z</dc:date>
    </item>
    <item>
      <title>Re: find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158278#M30904</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="812728" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;: Then I don't understand what you are trying to extract. Given your example dataset, please show what the desired output file should look like.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Feb 2015 14:54:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158278#M30904</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2015-02-09T14:54:15Z</dc:date>
    </item>
    <item>
      <title>Re: find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158279#M30905</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A __default_attr="812728" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;: Is the following what you are trying to get?:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data grossery (keep=id name item);&lt;/P&gt;&lt;P&gt;&amp;nbsp; length id $8.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length name $50.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length item $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length name_part $80.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; length item_part $80.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; input;&lt;/P&gt;&lt;P&gt;&amp;nbsp; id=scan(_infile_,1,' ');&lt;/P&gt;&lt;P&gt;&amp;nbsp; name_part=scan(_infile_,2,' ');&lt;/P&gt;&lt;P&gt;&amp;nbsp; item_part=scan(_infile_,3,' ');&lt;/P&gt;&lt;P&gt;&amp;nbsp; i=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do while (scan(name_part,i,'!') ne '');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; name=scan(name_part,i,'!');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; j=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do while (scan(item_part,j,'!') ne '');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; item=scan(item_part,j,'!');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;101 fruit_name!fruit_na1&amp;nbsp;&amp;nbsp; apple&lt;/P&gt;&lt;P&gt;102 fruit-veg!fruit1!fruit2 orange!onion!potato&lt;/P&gt;&lt;P&gt;103 vegetable tomato!cashew!drumstick&lt;/P&gt;&lt;P&gt;104 name_of_veg garlic!ginger!sapota&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Feb 2015 15:14:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158279#M30905</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2015-02-09T15:14:43Z</dc:date>
    </item>
    <item>
      <title>Re: find non-matching data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158280#M30906</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you datasp for showing two diff methods to resolve. I learn new concept of Hash. &lt;/P&gt;&lt;P&gt;Thank you Arthur very much. Nicely explained. &lt;/P&gt;&lt;P&gt;My issue resolved.&lt;/P&gt;&lt;P&gt;Thanks once again.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Feb 2015 16:05:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/find-non-matching-data/m-p/158280#M30906</guid>
      <dc:creator>Abraham</dc:creator>
      <dc:date>2015-02-09T16:05:58Z</dc:date>
    </item>
  </channel>
</rss>

