<?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: Count macro based on values in a table in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107330#M22378</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There you go! The key is applying strip() to remove blanks (mainly trailing blanks here):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data gafi_countries;&lt;/P&gt;&lt;P&gt;input gafi $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;bolivie&lt;/P&gt;&lt;P&gt;chypre&lt;/P&gt;&lt;P&gt;cyprus&lt;/P&gt;&lt;P&gt;équateur&lt;/P&gt;&lt;P&gt;equateur&lt;/P&gt;&lt;P&gt;éthiopie&lt;/P&gt;&lt;P&gt;ethiopie&lt;/P&gt;&lt;P&gt;indo&lt;/P&gt;&lt;P&gt;kenya&lt;/P&gt;&lt;P&gt;nigeria&lt;/P&gt;&lt;P&gt;nigéria&lt;/P&gt;&lt;P&gt;pakistan&lt;/P&gt;&lt;P&gt;sao&lt;/P&gt;&lt;P&gt;lanka&lt;/P&gt;&lt;P&gt;tanzanie&lt;/P&gt;&lt;P&gt;thai&lt;/P&gt;&lt;P&gt;tailand&lt;/P&gt;&lt;P&gt;turquie&lt;/P&gt;&lt;P&gt;viet&lt;/P&gt;&lt;P&gt;yemen&lt;/P&gt;&lt;P&gt;yémen&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data sanction_countries;&lt;/P&gt;&lt;P&gt;input sanction $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;bélarus&lt;/P&gt;&lt;P&gt;belarus&lt;/P&gt;&lt;P&gt;chine&lt;/P&gt;&lt;P&gt;congo&lt;/P&gt;&lt;P&gt;rpdc&lt;/P&gt;&lt;P&gt;rdc&lt;/P&gt;&lt;P&gt;coree&lt;/P&gt;&lt;P&gt;corée&lt;/P&gt;&lt;P&gt;ivoire&lt;/P&gt;&lt;P&gt;cuba&lt;/P&gt;&lt;P&gt;érythrée&lt;/P&gt;&lt;P&gt;erythree&lt;/P&gt;&lt;P&gt;iran&lt;/P&gt;&lt;P&gt;iraq&lt;/P&gt;&lt;P&gt;irak&lt;/P&gt;&lt;P&gt;liban&lt;/P&gt;&lt;P&gt;lebanon&lt;/P&gt;&lt;P&gt;liberia&lt;/P&gt;&lt;P&gt;libéria&lt;/P&gt;&lt;P&gt;libye&lt;/P&gt;&lt;P&gt;lybie&lt;/P&gt;&lt;P&gt;lybia&lt;/P&gt;&lt;P&gt;myanmar&lt;/P&gt;&lt;P&gt;birmanie&lt;/P&gt;&lt;P&gt;sierra&lt;/P&gt;&lt;P&gt;somalie&lt;/P&gt;&lt;P&gt;somalia&lt;/P&gt;&lt;P&gt;soudan&lt;/P&gt;&lt;P&gt;sudan&lt;/P&gt;&lt;P&gt;syrie&lt;/P&gt;&lt;P&gt;zimbabwe&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data mytest;&lt;/P&gt;&lt;P&gt;input objet $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;belarus acc&lt;/P&gt;&lt;P&gt;belarus refus&lt;/P&gt;&lt;P&gt;somalia acc&lt;/P&gt;&lt;P&gt;somalia refus&lt;/P&gt;&lt;P&gt;bolivie acc&lt;/P&gt;&lt;P&gt;bolivie refus&lt;/P&gt;&lt;P&gt;chypre acc&lt;/P&gt;&lt;P&gt;chypre refus&lt;/P&gt;&lt;P&gt;john&lt;/P&gt;&lt;P&gt;bob&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if _n_=1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if 0 then set gafi_countries sanction_countries;&lt;/P&gt;&lt;P&gt;declare hash g(dataset:'gafi_countries');&lt;/P&gt;&lt;P&gt;g.definekey('gafi');&lt;/P&gt;&lt;P&gt;g.definedone();&lt;/P&gt;&lt;P&gt;declare hiter hig('g');&lt;/P&gt;&lt;P&gt;declare hash s(dataset:'sanction_countries');&lt;/P&gt;&lt;P&gt;s.definekey('sanction');&lt;/P&gt;&lt;P&gt;s.definedone();&lt;/P&gt;&lt;P&gt;declare hiter his('s');&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set mytest end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp; _temp=sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus);&lt;/P&gt;&lt;P&gt;&amp;nbsp; do rc=hig.first() by 0 while (rc=0);&lt;/P&gt;&lt;P&gt;if find(objet, &lt;STRONG&gt;strip&lt;/STRONG&gt;(gafi), 'i') and find(objet, 'acc','i') then count_gafi_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, &lt;STRONG&gt;strip&lt;/STRONG&gt;(gafi), 'i') and find(objet, 'refus','i') then count_gafi_refus+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=hig.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do rc=his.first() by 0 while (rc=0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, &lt;STRONG&gt;strip&lt;/STRONG&gt;(sanction), 'i') and find(objet, 'acc','i') then count_sanction_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, &lt;STRONG&gt;strip&lt;/STRONG&gt;(sanction), 'i') and find(objet, 'refus','i') then count_sanction_refus+1;&lt;/P&gt;&lt;P&gt;rc=his.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if _temp &amp;gt;= sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus) then count_person+1;&lt;/P&gt;&lt;P&gt;if last then output;&lt;/P&gt;&lt;P&gt;keep count_gafi_acc count_gafi_refus count_sanction_acc count_sanction_refus count_person;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 15 Apr 2013 18:28:10 GMT</pubDate>
    <dc:creator>Haikuo</dc:creator>
    <dc:date>2013-04-15T18:28:10Z</dc:date>
    <item>
      <title>Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107315#M22363</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a table that contains a variable objet. I want to count the number of records that match certains parameters. Basically I have 5 groups with the following parameters :&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;count_gafi_acc : objet needs to contain a specific string (those strings are listed below) and the string 'acc' to be counted&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;count_gafi_ref : objet needs to contain a specific string and the string refus to be counted&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;count_sanction_acc :&amp;nbsp; objet needs to contain a specific string and the string 'acc' to be counted&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;count_saction_refus :&amp;nbsp; objet needs to contain a specific string and the string refus to be counted&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;count_person : all the records that weren't part of the 4 previous group need to be counted here (in order to achieve that I used switch = "n" and switch = "y" in my code below. I'm sure this isn't the most efficient way to do it.)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now instead of hard coding the specific string for each group in the code, I would like to create a table named myparameters with two columns. One column called gafi, that contains the specific strings related to the two specific gafi groups and one called sanction related to the two sanction groups.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would then want to write a sas macro that would count each objet records against each specific parameters in myparameters table and provide the count for each of the 5 groups.&lt;/P&gt;&lt;P&gt;Could you please help me write that macro code?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have written (with the help of some user of this forum) the following working code. Hope you understand what I am trying to achieve.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your help and time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data mcount;&lt;/P&gt;&lt;P&gt;set mytable;&lt;/P&gt;&lt;P&gt;by objet;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;switch = "n";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if _n_ eq 1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_gafi_acc=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_sanction_acc=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_gafi_refus=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_sanction_refus=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_person=0;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if index(lowcase(strip(objet)),'bolivie')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'chypre')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'cyprus')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'équateur')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'equateur')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'éthiopie')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'ethiopie')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'indo')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'kenya')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'nigeria')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'nigéria')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'pakistan')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'sao')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'sri lanka')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'tanzanie')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'thai')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'tailand')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'turquie')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'viet')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'yemen')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'yémen')&amp;gt;0&amp;nbsp; and index(lowcase(strip(objet)),'acc')&amp;gt;0 then do;&lt;/P&gt;&lt;P&gt;count_gafi_acc=count_gafi_acc+1;&lt;/P&gt;&lt;P&gt;switch = "y";&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if index(lowcase(strip(objet)),'bolivie')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'chypre')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'cyprus')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'équateur')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'equateur')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'éthiopie')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'ethiopie')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'indo')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'kenya')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'nigeria')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'nigéria')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'pakistan')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'sao')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'sri lanka')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'tanzanie')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'thai')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'tailand')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'turquie')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'viet')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'yemen')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'yémen')&amp;gt;0&amp;nbsp; and index(lowcase(strip(objet)),'refus')&amp;gt;0 then do;&lt;/P&gt;&lt;P&gt;count_gafi_refus=count_gafi_refus+1;&lt;/P&gt;&lt;P&gt;switch = "y";&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if index(lowcase(strip(objet)),'bélarus')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'belarus' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'chine' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'congo' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'rpdc' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'rdc' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'coree')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'corée')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'ivoire'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'cuba'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'érythrée' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'erythree')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'iran'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'iraq' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'irak' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'liban'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'lebanon'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'liberia'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'libéria' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'libye'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'lybie'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'lybia'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'myanmar' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'birmanie')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'sierra' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'somalie'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'somalia'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'soudan')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'sudan')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'syrie' )&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'zimbabwe')&amp;gt;0 and index(lowcase(strip(objet)),'acc')&amp;gt;0&lt;/P&gt;&lt;P&gt;then do;&lt;/P&gt;&lt;P&gt;count_sanction_acc=count_sanction_acc+1;&lt;/P&gt;&lt;P&gt;switch = "y";&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if index(lowcase(strip(objet)),'bélarus')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'belarus' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'chine' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'congo' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'rpdc' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'rdc' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'coree')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'corée')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'ivoire'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'cuba'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'érythrée' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'erythree')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'iran'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'iraq' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'irak' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'liban'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'lebanon'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'liberia'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'libéria' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'libye'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'lybie'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'lybia'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'myanmar' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'birmanie')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'sierra' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'somalie'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'somalia'&amp;nbsp; )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'soudan')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'sudan')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)), 'syrie' )&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0 or&lt;/P&gt;&lt;P&gt;index(lowcase(strip(objet)),'zimbabwe')&amp;gt;0 and index(lowcase(strip(objet)),'refus')&amp;gt;0&lt;/P&gt;&lt;P&gt;then do;&lt;/P&gt;&lt;P&gt;count_sanction_refus=count_sanction_refus+1;&lt;/P&gt;&lt;P&gt;switch = "y";&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if switch ="n" then do;&lt;/P&gt;&lt;P&gt;count_person = count_person + 1; /* If the record is not part of count_gafi_acc, count_gafi_refus, count_sanction_acc or count_sanction_refus , I want it to be part of count_person */&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if eof;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 18:51:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107315#M22363</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-12T18:51:54Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107316#M22364</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your code can be made more readable by consolidating the multiple function calls:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;if (&lt;/TD&gt;&lt;TD&gt;index(lowcase(strip(objet)),'bolivie')&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'chypre')&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'cyprus')&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'équateur') &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'equateur') &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'éthiopie') &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'ethiopie') &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'indo')&lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'kenya')&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'nigeria')&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'nigéria')&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'pakistan') &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'sao') &lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'sri lanka')&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'tanzanie') &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'thai')&lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'tailand')&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'turquie')&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'viet')&lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'yemen')&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),'yémen')&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ) then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if index(lowcase(strip(objet)),'acc') then do;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;count_gafi_acc=count_gafi_acc+1;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;switch = "y";&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;end;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if index(lowcase(strip(objet)),'refus') then do;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;count_gafi_refus=count_gafi_refus+1;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;switch = "y";&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;end;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ron Fehd&amp;nbsp; logical simplicity: know redundancy maven&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 19:41:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107316#M22364</guid>
      <dc:creator>Ron_MacroMaven</dc:creator>
      <dc:date>2013-04-12T19:41:04Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107317#M22365</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Repace INDEX with FIND it has options to ignore case and trim the arguments.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 20:01:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107317#M22365</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2013-04-12T20:01:24Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107318#M22366</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I believe this will do what you want:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro is_in(category=&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,list=&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,two_words=&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,testing=0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/P&gt;&lt;P&gt;%let testing = %eval(&amp;amp;Testing or %sysfunc(getoption(mprint)) eq MPRINT);&lt;/P&gt;&lt;P&gt;%local I;&lt;/P&gt;&lt;P&gt;if 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %do I = 1 %to %sysfunc(countw(&amp;amp;List,%str( )));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %let item = %scan(&amp;amp;List,&amp;amp;I,%str( ));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %if &amp;amp;Testing %then %put note: item:&amp;amp;Item;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or index(lowcase(strip(objet)),"&amp;amp;Item")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; %if %length(&amp;amp;Two_Words) %then %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; or index(lowcase(strip(objet)),"&amp;amp;Two_Words")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if index(lowcase(strip(objet)),"&amp;amp;Category") then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_sanction_&amp;amp;Category=count_sanction_&amp;amp;Category+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch = "y";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&amp;nbsp; &lt;/P&gt;&lt;P&gt;%mend;&amp;nbsp; &lt;/P&gt;&lt;P&gt;%is_in(category=acc&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,list=&lt;/P&gt;&lt;P&gt;bolivie&amp;nbsp; &lt;/P&gt;&lt;P&gt;chypre&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;cyprus&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;équateur &lt;/P&gt;&lt;P&gt;equateur &lt;/P&gt;&lt;P&gt;éthiopie &lt;/P&gt;&lt;P&gt;ethiopie &lt;/P&gt;&lt;P&gt;indo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;kenya&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;nigeria&amp;nbsp; &lt;/P&gt;&lt;P&gt;nigéria&amp;nbsp; &lt;/P&gt;&lt;P&gt;pakistan &lt;/P&gt;&lt;P&gt;sao&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;tanzanie &lt;/P&gt;&lt;P&gt;thai&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;tailand&amp;nbsp; &lt;/P&gt;&lt;P&gt;turquie&amp;nbsp; &lt;/P&gt;&lt;P&gt;viet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;yemen&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;yémen &lt;/P&gt;&lt;P&gt;,two_words=srilanka&lt;/P&gt;&lt;P&gt;)&lt;/P&gt;&lt;P&gt;%is_in(category=refus&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,list=&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This technique of scanning a list for each item&lt;/P&gt;&lt;P&gt;is shown in&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="active_link" href="http://www.sascommunity.org/wiki/List_Processing_Basics_Creating_and_Using_Lists_of_Macro_Variables" title="http://www.sascommunity.org/wiki/List_Processing_Basics_Creating_and_Using_Lists_of_Macro_Variables"&gt;http://www.sascommunity.org/wiki/List_Processing_Basics_Creating_and_Using_Lists_of_Macro_Variables&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ron Fehd&amp;nbsp; list processing maven&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 20:15:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107318#M22366</guid>
      <dc:creator>Ron_MacroMaven</dc:creator>
      <dc:date>2013-04-12T20:15:35Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107319#M22367</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you both for your replies.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This will help me make my code more efficient, but what I really want to achieve is to create two tables and search whitin those table, so that my parameters won't be hardcoded in my code and I will be able to modify the table with ease. Can you please help me write that macro code?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The two tables would be the following :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The first row in bold is the header (name of the variable). The table could be named mygafi and mysanction&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 80px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="80"&gt;&lt;STRONG&gt;GAFI&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;bolivie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;chypre&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;cyprus&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;équateur&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;equateur&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;éthiopie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;ethiopie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;indo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;kenya&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;nigeria&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;nigéria&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;pakistan&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;sao&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;lanka&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;tanzanie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;thai&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;tailand&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;turquie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;viet&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;yemen&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;yémen&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 80px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl65" height="20" width="80"&gt;&lt;STRONG&gt;SANCTION&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;bélarus&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;belarus&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;chine&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;congo&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;rpdc&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;rdc&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;coree&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;corée&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;ivoire&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;cuba&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;érythrée&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;erythree&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;iran&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;iraq&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;irak&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;liban&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;lebanon&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;liberia&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;libéria&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;libye&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;lybie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;lybia&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;myanmar&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;birmanie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;sierra&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;somalie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;somalia&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;soudan&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;sudan&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;syrie&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;zimbabwe&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 20:16:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107319#M22367</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-12T20:16:07Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107320#M22368</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oops. I posted my reply at the same time you replied.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think this achieves what I want to do. I will give it a try a let know.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your help and time!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 20:19:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107320#M22368</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-12T20:19:31Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107321#M22369</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Your list==control data set does not contain values that are matched as parameter pairs&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" style="border: 0px solid black;" width="80"&gt;&lt;STRONG&gt;GAFI&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20" style="border: 0px solid black;"&gt;bolivie&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;SANCTION&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;bélarus&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;in other words for list processing &lt;/P&gt;&lt;P&gt;the values in row.1 are the parameters to a macro call&lt;/P&gt;&lt;P&gt;the values in row.2 are the parameters to a macro call&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;the values in row.N are the parameters to a macro call&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if you create two control data sets&lt;/P&gt;&lt;P&gt;MyGafi&lt;/P&gt;&lt;P&gt;and&lt;/P&gt;&lt;P&gt;MySantion(s)&lt;/P&gt;&lt;P&gt;then you can modify my macros above to the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" style="border: 0px solid black;" width="80"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20" style="border: 0px solid black;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;%is_in(category=refus&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,data=MyGafi&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;&lt;P&gt;%CallText(data = &amp;amp;Data&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ,MacroText =&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;or index(lowcase(strip(objet)),"&amp;amp;Gafi")&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is the page with the Macro CallText:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sascommunity.org/wiki/Macro_CallText" title="http://www.sascommunity.org/wiki/Macro_CallText"&gt;http://www.sascommunity.org/wiki/Macro_CallText&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ron Fehd&amp;nbsp; list processing maven&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 20:27:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107321#M22369</guid>
      <dc:creator>Ron_MacroMaven</dc:creator>
      <dc:date>2013-04-12T20:27:17Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107322#M22370</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for your replies.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm kind of lost right now. Sorry I'm a real beginner with SAS coding.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Let me describe what I want to do.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#1&lt;/STRONG&gt; I create two tables containing a list of different countries :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data bkm.gafi_countries;&lt;/P&gt;&lt;P&gt;input gafi $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;bolivie&lt;/P&gt;&lt;P&gt;chypre&lt;/P&gt;&lt;P&gt;cyprus&lt;/P&gt;&lt;P&gt;équateur&lt;/P&gt;&lt;P&gt;equateur&lt;/P&gt;&lt;P&gt;éthiopie&lt;/P&gt;&lt;P&gt;ethiopie&lt;/P&gt;&lt;P&gt;indo&lt;/P&gt;&lt;P&gt;kenya&lt;/P&gt;&lt;P&gt;nigeria&lt;/P&gt;&lt;P&gt;nigéria&lt;/P&gt;&lt;P&gt;pakistan&lt;/P&gt;&lt;P&gt;sao&lt;/P&gt;&lt;P&gt;lanka&lt;/P&gt;&lt;P&gt;tanzanie&lt;/P&gt;&lt;P&gt;thai&lt;/P&gt;&lt;P&gt;tailand&lt;/P&gt;&lt;P&gt;turquie&lt;/P&gt;&lt;P&gt;viet&lt;/P&gt;&lt;P&gt;yemen&lt;/P&gt;&lt;P&gt;yémen&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 bkm.sanction_countries;&lt;/P&gt;&lt;P&gt;input sanction $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;bélarus&lt;/P&gt;&lt;P&gt;belarus&lt;/P&gt;&lt;P&gt;chine&lt;/P&gt;&lt;P&gt;congo&lt;/P&gt;&lt;P&gt;rpdc&lt;/P&gt;&lt;P&gt;rdc&lt;/P&gt;&lt;P&gt;coree&lt;/P&gt;&lt;P&gt;corée&lt;/P&gt;&lt;P&gt;ivoire&lt;/P&gt;&lt;P&gt;cuba&lt;/P&gt;&lt;P&gt;érythrée&lt;/P&gt;&lt;P&gt;erythree&lt;/P&gt;&lt;P&gt;iran&lt;/P&gt;&lt;P&gt;iraq&lt;/P&gt;&lt;P&gt;irak&lt;/P&gt;&lt;P&gt;liban&lt;/P&gt;&lt;P&gt;lebanon&lt;/P&gt;&lt;P&gt;liberia&lt;/P&gt;&lt;P&gt;libéria&lt;/P&gt;&lt;P&gt;libye&lt;/P&gt;&lt;P&gt;lybie&lt;/P&gt;&lt;P&gt;lybia&lt;/P&gt;&lt;P&gt;myanmar&lt;/P&gt;&lt;P&gt;birmanie&lt;/P&gt;&lt;P&gt;sierra&lt;/P&gt;&lt;P&gt;somalie&lt;/P&gt;&lt;P&gt;somalia&lt;/P&gt;&lt;P&gt;soudan&lt;/P&gt;&lt;P&gt;sudan&lt;/P&gt;&lt;P&gt;syrie&lt;/P&gt;&lt;P&gt;zimbabwe&lt;/P&gt;&lt;P&gt;;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#2 &lt;/STRONG&gt;I have an existing table called alertes_pays in which there is a variable called objet. I want to go through each observation in the table alertes_pays and make the 5 following counts. Those counts divided in 3 categories.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Match the variable objet for each record in the table alertes_pays with the table gafi_countries&lt;UL&gt;&lt;LI&gt;If the variable objet contains a string from the table gafi_countries and the string 'acc' then count_gafi_acc = count_gafi_acc + 1&lt;/LI&gt;&lt;LI&gt;If the variable objet contains a string from the table gafi_countries and the string 'refus' then count_gafi_refus = count_gafi_refus + 1&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Match the variable objet for each record in the table alertes_pays with the table gafi_countries&lt;UL&gt;&lt;LI&gt;If the variable objet contains a string from the table sanction_countries and the string 'acc' then count_sanction_acc =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count_sanction_acc + 1&lt;/LI&gt;&lt;LI&gt;If the variable objet contains a string from the table sanction_countries and the string 'refus' then count_sanction_refus = count_sanction_refus + 1&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;If the variable objet for each record in the table alertes_pays was not matched in the two previous categories then count_person = count_person + 1&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;#3&lt;/STRONG&gt; The end result sould be a table with 1 row and 5 columns where each of the column represent the value of the count variable created above.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I know your previous replies were quite close to this, but I am unable to get there even when reading the %calltext and list help file...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm really thankful for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;nicnad&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 21:06:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107322#M22370</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-12T21:06:04Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107323#M22371</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;To make this more clear, this is how I would write it in VBA if each tables were defined as range in an Excel sheet, The thing is I don't quite understand the loop For each in SAS. Hope the following makes it clearer for you guys :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sub test()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dim checkcountry As Boolean&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Set alertes_pays = Range("Alertes_pays")&lt;/P&gt;&lt;P&gt;Set gafi_countries = Range("Gafi_countries")&lt;/P&gt;&lt;P&gt;Set sanction_countries = Range("Sanction_countries")&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each records In alertes_pays ' *** represent the table alertes_pays which contains objet variable&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; records = Trim(LCase(records))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkcountry = False&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each countries In gafi_countries ' *** represent the table gafi_countries&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If InStr(records, countries) &amp;gt; 0 Then&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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; checkcountry = True&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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; If InStr(records, "acc") &amp;gt; 0 Then count_gafi_acc = count_gafi_acc + 1&lt;/P&gt;&lt;P&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; If InStr(records, "refus") &amp;gt; 0 Then count_gafi_refus = count_gafi_refus + 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next countries&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Each countries In sanction_countries ' *** represent the table sanction_countries&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If InStr(records, countries) &amp;gt; 0 Then&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; checkcountry = True&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&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; If InStr(records, "acc") &amp;gt; 0 Then count_sanction_acc = count_sanction_acc + 1&lt;/P&gt;&lt;P&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; If InStr(records, "refus") &amp;gt; 0 Then count_sanction_refus = count_sanction_refus + 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next countries&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If checkcountry = False Then count_person = count_person + 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next records&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sheets("RESULT").Cells(1, 1) = count_gafi_acc&lt;/P&gt;&lt;P&gt;Sheets("RESULT").Cells(1, 2) = count_gafi_refus&lt;/P&gt;&lt;P&gt;Sheets("RESULT").Cells(1, 3) = count_sanction_acc&lt;/P&gt;&lt;P&gt;Sheets("RESULT").Cells(1, 4) = count_sanction_refus&lt;/P&gt;&lt;P&gt;Sheets("RESULT").Cells(1, 5) = count_person&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;End Sub&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 21:57:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107323#M22371</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-12T21:57:44Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107324#M22372</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you could post some sample piece of your dataset 'alertes_pays', I would have tested the following code for you.&amp;nbsp; two lookup table have been loaded into memory by hash, and for each record in&amp;nbsp; ' alertes_pays', it will loop through both of them, check if the conditions met.&lt;/P&gt;&lt;P&gt;You can also choose to use temporary array(), then do the same loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if _n_=1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if 0 then set bkm.gafi_countries bkm.sanction_countries;&lt;/P&gt;&lt;P&gt;declare hash g(dataset:'bkm.gafi_countries');&lt;/P&gt;&lt;P&gt;g.definekey('gafi');&lt;/P&gt;&lt;P&gt;g.definedone();&lt;/P&gt;&lt;P&gt;declare hiter hig('g');&lt;/P&gt;&lt;P&gt;declare hash s(dataset:'bkm.sanction_countries');&lt;/P&gt;&lt;P&gt;&amp;nbsp; s.definekey('sanction');&lt;/P&gt;&lt;P&gt;s.definedone();&lt;/P&gt;&lt;P&gt;declare hiter his('s');&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set bkm.alertes_pays end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp; _temp=sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus);&lt;/P&gt;&lt;P&gt;&amp;nbsp; do rc=hig.first() by 0 while (rc=0);&lt;/P&gt;&lt;P&gt;if find(objet, gafi, 'i') and find(objet, 'acc','i') then count_gafi_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, gafi, 'i') and find(objet, 'refus','i') then count_gafi_refus+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=hig.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do rc=his.first() by 0 while (rc=0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, sanction, 'i') and find(objet, 'acc','i') then count_sanction_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, sanction, 'i') and find(objet, 'refus','i') then count_sanction_refus+1;&lt;/P&gt;&lt;P&gt;rc=his.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if _temp &amp;gt;= &lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus) &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;then count_person+1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;if last then output;&lt;/P&gt;&lt;P&gt;keep count_gafi_acc count_gafi_refus count_sanction_acc count_sanction_refus count_person;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 22:09:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107324#M22372</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-04-12T22:09:04Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107325#M22373</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Works like a charm thank you very much.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 12 Apr 2013 22:24:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107325#M22373</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-12T22:24:49Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107326#M22374</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;sleeping on a problem always help me realize easier ways to do things&lt;/P&gt;&lt;P&gt;keyword: wallpaper code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my this.morning's version of a solution using temporary arrays to replace the wallpaper&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;array Country{*}$10 _temporary_&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ('bolivie'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'chypre'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'cyprus'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'équateur'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'equateur'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'éthiopie'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'ethiopie'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'indo'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'kenya'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'nigeria'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'nigéria'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'pakistan'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'sao'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'sri lanka'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'tanzanie'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'thai'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'tailand'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'turquie'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'viet'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'yemen'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'yémen'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/P&gt;&lt;P&gt;Have_Country = 0;&lt;/P&gt;&lt;P&gt;do I = 1 to dim(Country);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Have_Country = Have_Country&lt;/P&gt;&lt;P&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; or index(lowcase(strip(objet)),Have_Country(I));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;if Have_Country&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; and index(lowcase(strip(objet)),'acc') then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; count_gafi_acc=count_gafi_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; switch = "y";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 13 Apr 2013 13:56:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107326#M22374</guid>
      <dc:creator>Ron_MacroMaven</dc:creator>
      <dc:date>2013-04-13T13:56:46Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107327#M22375</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;After review the count I am getting is 0 for &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It seems like the part where we use the variable gafi here :&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;if find(objet, gafi, 'i') and find(objet, 'acc','i') then count_gafi_acc+1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;or variable sanction here :&lt;/P&gt;&lt;P&gt;&lt;SPAN style="background-color: #ffffff; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 10pt; line-height: 1.5em;"&gt;if find(objet, sanction, 'i') and find(objet, 'acc','i') then count_sanction_acc+1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is wrong. I don't know much about hash key. Could you please help me solve this?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Apr 2013 17:42:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107327#M22375</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-15T17:42:59Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107328#M22376</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You gotta give some sample data (preferably with some positive hits) for me to work on. To trouble shoot, I need to see the data and the log. I can't guess it all the way through.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Apr 2013 17:52:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107328#M22376</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-04-15T17:52:21Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107329#M22377</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is an exemple : &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data gafi_countries;&lt;/P&gt;&lt;P&gt;input gafi $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;bolivie&lt;/P&gt;&lt;P&gt;chypre&lt;/P&gt;&lt;P&gt;cyprus&lt;/P&gt;&lt;P&gt;équateur&lt;/P&gt;&lt;P&gt;equateur&lt;/P&gt;&lt;P&gt;éthiopie&lt;/P&gt;&lt;P&gt;ethiopie&lt;/P&gt;&lt;P&gt;indo&lt;/P&gt;&lt;P&gt;kenya&lt;/P&gt;&lt;P&gt;nigeria&lt;/P&gt;&lt;P&gt;nigéria&lt;/P&gt;&lt;P&gt;pakistan&lt;/P&gt;&lt;P&gt;sao&lt;/P&gt;&lt;P&gt;lanka&lt;/P&gt;&lt;P&gt;tanzanie&lt;/P&gt;&lt;P&gt;thai&lt;/P&gt;&lt;P&gt;tailand&lt;/P&gt;&lt;P&gt;turquie&lt;/P&gt;&lt;P&gt;viet&lt;/P&gt;&lt;P&gt;yemen&lt;/P&gt;&lt;P&gt;yémen&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 sanction_countries;&lt;/P&gt;&lt;P&gt;input sanction $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;bélarus&lt;/P&gt;&lt;P&gt;belarus&lt;/P&gt;&lt;P&gt;chine&lt;/P&gt;&lt;P&gt;congo&lt;/P&gt;&lt;P&gt;rpdc&lt;/P&gt;&lt;P&gt;rdc&lt;/P&gt;&lt;P&gt;coree&lt;/P&gt;&lt;P&gt;corée&lt;/P&gt;&lt;P&gt;ivoire&lt;/P&gt;&lt;P&gt;cuba&lt;/P&gt;&lt;P&gt;érythrée&lt;/P&gt;&lt;P&gt;erythree&lt;/P&gt;&lt;P&gt;iran&lt;/P&gt;&lt;P&gt;iraq&lt;/P&gt;&lt;P&gt;irak&lt;/P&gt;&lt;P&gt;liban&lt;/P&gt;&lt;P&gt;lebanon&lt;/P&gt;&lt;P&gt;liberia&lt;/P&gt;&lt;P&gt;libéria&lt;/P&gt;&lt;P&gt;libye&lt;/P&gt;&lt;P&gt;lybie&lt;/P&gt;&lt;P&gt;lybia&lt;/P&gt;&lt;P&gt;myanmar&lt;/P&gt;&lt;P&gt;birmanie&lt;/P&gt;&lt;P&gt;sierra&lt;/P&gt;&lt;P&gt;somalie&lt;/P&gt;&lt;P&gt;somalia&lt;/P&gt;&lt;P&gt;soudan&lt;/P&gt;&lt;P&gt;sudan&lt;/P&gt;&lt;P&gt;syrie&lt;/P&gt;&lt;P&gt;zimbabwe&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 mytest;&lt;/P&gt;&lt;P&gt;input objet $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;belarus acc&lt;/P&gt;&lt;P&gt;belarus refus&lt;/P&gt;&lt;P&gt;somalia acc&lt;/P&gt;&lt;P&gt;somalia refus&lt;/P&gt;&lt;P&gt;bolivie acc&lt;/P&gt;&lt;P&gt;bolivie refus&lt;/P&gt;&lt;P&gt;chypre acc&lt;/P&gt;&lt;P&gt;chypre refus&lt;/P&gt;&lt;P&gt;john&lt;/P&gt;&lt;P&gt;bob&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if _n_=1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if 0 then set bkm.gafi_countries bkm.sanction_countries;&lt;/P&gt;&lt;P&gt;declare hash g(dataset:'bkm.gafi_countries');&lt;/P&gt;&lt;P&gt;g.definekey('gafi');&lt;/P&gt;&lt;P&gt;g.definedone();&lt;/P&gt;&lt;P&gt;declare hiter hig('g');&lt;/P&gt;&lt;P&gt;declare hash s(dataset:'bkm.sanction_countries');&lt;/P&gt;&lt;P&gt;&amp;nbsp; s.definekey('sanction');&lt;/P&gt;&lt;P&gt;s.definedone();&lt;/P&gt;&lt;P&gt;declare hiter his('s');&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set mytest end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp; _temp=sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus);&lt;/P&gt;&lt;P&gt;&amp;nbsp; do rc=hig.first() by 0 while (rc=0);&lt;/P&gt;&lt;P&gt;if find(objet, gafi, 'i') and find(objet, 'acc','i') then count_gafi_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, gafi, 'i') and find(objet, 'refus','i') then count_gafi_refus+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=hig.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do rc=his.first() by 0 while (rc=0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, sanction, 'i') and find(objet, 'acc','i') then count_sanction_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, sanction, 'i') and find(objet, 'refus','i') then count_sanction_refus+1;&lt;/P&gt;&lt;P&gt;rc=his.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if _temp &amp;gt;= sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus) then count_person+1;&lt;/P&gt;&lt;P&gt;if last then output;&lt;/P&gt;&lt;P&gt;keep count_gafi_acc count_gafi_refus count_sanction_acc count_sanction_refus count_person;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This gives count_person = 10 all other variables = 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and should give count_gafi acc = 2 count_gafi_refus = 2 count_sanction_acc = 2 count_sanction_refus = 2 count_person = 2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your help and time with this&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Apr 2013 18:04:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107329#M22377</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-15T18:04:09Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107330#M22378</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There you go! The key is applying strip() to remove blanks (mainly trailing blanks here):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data gafi_countries;&lt;/P&gt;&lt;P&gt;input gafi $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;bolivie&lt;/P&gt;&lt;P&gt;chypre&lt;/P&gt;&lt;P&gt;cyprus&lt;/P&gt;&lt;P&gt;équateur&lt;/P&gt;&lt;P&gt;equateur&lt;/P&gt;&lt;P&gt;éthiopie&lt;/P&gt;&lt;P&gt;ethiopie&lt;/P&gt;&lt;P&gt;indo&lt;/P&gt;&lt;P&gt;kenya&lt;/P&gt;&lt;P&gt;nigeria&lt;/P&gt;&lt;P&gt;nigéria&lt;/P&gt;&lt;P&gt;pakistan&lt;/P&gt;&lt;P&gt;sao&lt;/P&gt;&lt;P&gt;lanka&lt;/P&gt;&lt;P&gt;tanzanie&lt;/P&gt;&lt;P&gt;thai&lt;/P&gt;&lt;P&gt;tailand&lt;/P&gt;&lt;P&gt;turquie&lt;/P&gt;&lt;P&gt;viet&lt;/P&gt;&lt;P&gt;yemen&lt;/P&gt;&lt;P&gt;yémen&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data sanction_countries;&lt;/P&gt;&lt;P&gt;input sanction $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;bélarus&lt;/P&gt;&lt;P&gt;belarus&lt;/P&gt;&lt;P&gt;chine&lt;/P&gt;&lt;P&gt;congo&lt;/P&gt;&lt;P&gt;rpdc&lt;/P&gt;&lt;P&gt;rdc&lt;/P&gt;&lt;P&gt;coree&lt;/P&gt;&lt;P&gt;corée&lt;/P&gt;&lt;P&gt;ivoire&lt;/P&gt;&lt;P&gt;cuba&lt;/P&gt;&lt;P&gt;érythrée&lt;/P&gt;&lt;P&gt;erythree&lt;/P&gt;&lt;P&gt;iran&lt;/P&gt;&lt;P&gt;iraq&lt;/P&gt;&lt;P&gt;irak&lt;/P&gt;&lt;P&gt;liban&lt;/P&gt;&lt;P&gt;lebanon&lt;/P&gt;&lt;P&gt;liberia&lt;/P&gt;&lt;P&gt;libéria&lt;/P&gt;&lt;P&gt;libye&lt;/P&gt;&lt;P&gt;lybie&lt;/P&gt;&lt;P&gt;lybia&lt;/P&gt;&lt;P&gt;myanmar&lt;/P&gt;&lt;P&gt;birmanie&lt;/P&gt;&lt;P&gt;sierra&lt;/P&gt;&lt;P&gt;somalie&lt;/P&gt;&lt;P&gt;somalia&lt;/P&gt;&lt;P&gt;soudan&lt;/P&gt;&lt;P&gt;sudan&lt;/P&gt;&lt;P&gt;syrie&lt;/P&gt;&lt;P&gt;zimbabwe&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data mytest;&lt;/P&gt;&lt;P&gt;input objet $20.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;belarus acc&lt;/P&gt;&lt;P&gt;belarus refus&lt;/P&gt;&lt;P&gt;somalia acc&lt;/P&gt;&lt;P&gt;somalia refus&lt;/P&gt;&lt;P&gt;bolivie acc&lt;/P&gt;&lt;P&gt;bolivie refus&lt;/P&gt;&lt;P&gt;chypre acc&lt;/P&gt;&lt;P&gt;chypre refus&lt;/P&gt;&lt;P&gt;john&lt;/P&gt;&lt;P&gt;bob&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if _n_=1 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if 0 then set gafi_countries sanction_countries;&lt;/P&gt;&lt;P&gt;declare hash g(dataset:'gafi_countries');&lt;/P&gt;&lt;P&gt;g.definekey('gafi');&lt;/P&gt;&lt;P&gt;g.definedone();&lt;/P&gt;&lt;P&gt;declare hiter hig('g');&lt;/P&gt;&lt;P&gt;declare hash s(dataset:'sanction_countries');&lt;/P&gt;&lt;P&gt;s.definekey('sanction');&lt;/P&gt;&lt;P&gt;s.definedone();&lt;/P&gt;&lt;P&gt;declare hiter his('s');&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;set mytest end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp; _temp=sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus);&lt;/P&gt;&lt;P&gt;&amp;nbsp; do rc=hig.first() by 0 while (rc=0);&lt;/P&gt;&lt;P&gt;if find(objet, &lt;STRONG&gt;strip&lt;/STRONG&gt;(gafi), 'i') and find(objet, 'acc','i') then count_gafi_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, &lt;STRONG&gt;strip&lt;/STRONG&gt;(gafi), 'i') and find(objet, 'refus','i') then count_gafi_refus+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; rc=hig.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do rc=his.first() by 0 while (rc=0);&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, &lt;STRONG&gt;strip&lt;/STRONG&gt;(sanction), 'i') and find(objet, 'acc','i') then count_sanction_acc+1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if find(objet, &lt;STRONG&gt;strip&lt;/STRONG&gt;(sanction), 'i') and find(objet, 'refus','i') then count_sanction_refus+1;&lt;/P&gt;&lt;P&gt;rc=his.next();&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;if _temp &amp;gt;= sum(count_gafi_acc,count_gafi_refus, count_sanction_acc, count_sanction_refus) then count_person+1;&lt;/P&gt;&lt;P&gt;if last then output;&lt;/P&gt;&lt;P&gt;keep count_gafi_acc count_gafi_refus count_sanction_acc count_sanction_refus count_person;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Haikuo &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Apr 2013 18:28:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107330#M22378</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2013-04-15T18:28:10Z</dc:date>
    </item>
    <item>
      <title>Re: Count macro based on values in a table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107331#M22379</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This works perfectly!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for your help and time.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 15 Apr 2013 18:40:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Count-macro-based-on-values-in-a-table/m-p/107331#M22379</guid>
      <dc:creator>nicnad</dc:creator>
      <dc:date>2013-04-15T18:40:15Z</dc:date>
    </item>
  </channel>
</rss>

