<?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: Using the Index Function with macro variables in a macro loop in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178898#M45671</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Just one Suggestion, you can check if the data is upper case or lower case...&lt;/P&gt;&lt;P&gt;If its because of the case of the string, the you can use upcase....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 20 Nov 2014 09:52:41 GMT</pubDate>
    <dc:creator>DMoovendhan</dc:creator>
    <dc:date>2014-11-20T09:52:41Z</dc:date>
    <item>
      <title>Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178889#M45662</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;To keep it simple, I have two macro variables &amp;amp;T1 which equates to 'PTY', and &amp;amp;T2 which equates to 'LTD'.&amp;nbsp; When I run the below code, I get T1 as the output, not 'PTY'.&amp;nbsp; Please help&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro Company;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%do i = 1 %to &amp;amp;n;&lt;/P&gt;&lt;P&gt;%put t&amp;amp;i;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%Company;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 07:52:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178889#M45662</guid>
      <dc:creator>alan0101</dc:creator>
      <dc:date>2014-11-20T07:52:38Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178890#M45663</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Here you are resolving only &amp;amp;i&amp;nbsp; ie you are resolving the value to be t1 and t2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if you need to resolve t1 and t2, you need to add &amp;amp;&amp;amp; before t. the code will be&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro Company;&lt;/P&gt;&lt;P&gt; %do i = 1 %to &amp;amp;n;&lt;/P&gt;&lt;P&gt;%put &amp;amp;&amp;amp;t&amp;amp;i;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%Company;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 07:58:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178890#M45663</guid>
      <dc:creator>DMoovendhan</dc:creator>
      <dc:date>2014-11-20T07:58:43Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178891#M45664</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;beloow links will help you for better understanding,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www2.sas.com/proceedings/sugi22/CODERS/PAPER77.PDF" title="http://www2.sas.com/proceedings/sugi22/CODERS/PAPER77.PDF"&gt;http://www2.sas.com/proceedings/sugi22/CODERS/PAPER77.PDF&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="active_link" href="http://www.ats.ucla.edu/stat/sas/library/nesug98/p086.pdf" title="http://www.ats.ucla.edu/stat/sas/library/nesug98/p086.pdf"&gt;http://www.ats.ucla.edu/stat/sas/library/nesug98/p086.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.wuss.org/proceedings09/09WUSSProceedings/papers/cod/COD-Rosson.pdf" title="http://www.wuss.org/proceedings09/09WUSSProceedings/papers/cod/COD-Rosson.pdf"&gt;http://www.wuss.org/proceedings09/09WUSSProceedings/papers/cod/COD-Rosson.pdf&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 08:01:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178891#M45664</guid>
      <dc:creator>DMoovendhan</dc:creator>
      <dc:date>2014-11-20T08:01:00Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178892#M45665</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks !! Much appreciated&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 08:03:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178892#M45665</guid>
      <dc:creator>alan0101</dc:creator>
      <dc:date>2014-11-20T08:03:10Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178893#M45666</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok, so I still can'y get it to work in it's full context.&amp;nbsp; Below is the code and the log - can you see what the issue is ? :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;351&amp;nbsp; options mlogic symbolgen;&lt;/P&gt;&lt;P&gt;352&lt;/P&gt;&lt;P&gt;353&amp;nbsp; %macro Company;&lt;/P&gt;&lt;P&gt;354&amp;nbsp; %do i = 1 %to &amp;amp;n;&lt;/P&gt;&lt;P&gt;355&amp;nbsp;&amp;nbsp;&amp;nbsp; data lib.set02;&lt;/P&gt;&lt;P&gt;356&amp;nbsp;&amp;nbsp;&amp;nbsp; Length Flag $20.;&lt;/P&gt;&lt;P&gt;357&amp;nbsp;&amp;nbsp;&amp;nbsp; Length Var1 $20.;&lt;/P&gt;&lt;P&gt;358&amp;nbsp;&amp;nbsp;&amp;nbsp; set lib.set01;&lt;/P&gt;&lt;P&gt;359&amp;nbsp;&amp;nbsp;&amp;nbsp; %if %index(%upcase(Surname),trim(&amp;amp;&amp;amp;t&amp;amp;i)) &amp;gt; 0 %then&lt;/P&gt;&lt;P&gt;360&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do;&lt;/P&gt;&lt;P&gt;361&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Flag='Company';&lt;/P&gt;&lt;P&gt;362&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Var1=t&amp;amp;i;&lt;/P&gt;&lt;P&gt;363&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output lib.set02;&lt;/P&gt;&lt;P&gt;364&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;365&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;366&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;367&amp;nbsp; %mend;&lt;/P&gt;&lt;P&gt;368&lt;/P&gt;&lt;P&gt;369&amp;nbsp; %Company;&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; Beginning execution.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable N resolves to 2&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; %DO loop beginning; index variable I; start value is 1; stop value is 2; by&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value is 1.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; &amp;amp;&amp;amp; resolves to &amp;amp;.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable I resolves to 1&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable T1 resolves to PTY&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; %IF condition %index(%upcase(Surname),trim(&amp;amp;&amp;amp;t&amp;amp;i)) &amp;gt; 0 is FALSE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: Variable Flag is uninitialized.&lt;/P&gt;&lt;P&gt;NOTE: Variable Var1 is uninitialized.&lt;/P&gt;&lt;P&gt;NOTE: There were 11554 observations read from the data set LIB.SET01.&lt;/P&gt;&lt;P&gt;NOTE: The data set LIB.SET02 has 11554 observations and 52 variables.&lt;/P&gt;&lt;P&gt;NOTE: DATA statement used (Total process time):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&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;MLOGIC(COMPANY):&amp;nbsp; %DO loop index variable I is now 2; loop will iterate again.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; &amp;amp;&amp;amp; resolves to &amp;amp;.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable I resolves to 2&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable T2 resolves to LTD&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; %IF condition %index(%upcase(Surname),trim(&amp;amp;&amp;amp;t&amp;amp;i)) &amp;gt; 0 is FALSE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;NOTE: Variable Flag is uninitialized.&lt;/P&gt;&lt;P&gt;NOTE: Variable Var1 is uninitialized.&lt;/P&gt;&lt;P&gt;NOTE: There were 11554 observations read from the data set LIB.SET01.&lt;/P&gt;&lt;P&gt;NOTE: The data set LIB.SET02 has 11554 observations and 52 variables.&lt;/P&gt;&lt;P&gt;NOTE: DATA statement used (Total process time):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; real time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpu time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.01 seconds&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;MLOGIC(COMPANY):&amp;nbsp; %DO loop index variable I is now 3; loop will not iterate again.&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; Ending execution.&lt;/P&gt;&lt;P&gt;370&lt;/P&gt;&lt;P&gt;371&amp;nbsp; %macro Company;&lt;/P&gt;&lt;P&gt;372&lt;/P&gt;&lt;P&gt;373&amp;nbsp; %do i = 1 %to &amp;amp;n;&lt;/P&gt;&lt;P&gt;374&amp;nbsp; %put &amp;amp;&amp;amp;t&amp;amp;i;&lt;/P&gt;&lt;P&gt;375&amp;nbsp; %end;&lt;/P&gt;&lt;P&gt;376&amp;nbsp; %mend;&lt;/P&gt;&lt;P&gt;377&lt;/P&gt;&lt;P&gt;378&amp;nbsp; %Company;&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; Beginning execution.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable N resolves to 2&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; %DO loop beginning; index variable I; start value is 1; stop value is 2; by&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value is 1.&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; %PUT &amp;amp;&amp;amp;t&amp;amp;i&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; &amp;amp;&amp;amp; resolves to &amp;amp;.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable I resolves to 1&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable T1 resolves to PTY&lt;/P&gt;&lt;P&gt;PTY&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; %DO loop index variable I is now 2; loop will iterate again.&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; %PUT &amp;amp;&amp;amp;t&amp;amp;i&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; &amp;amp;&amp;amp; resolves to &amp;amp;.&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable I resolves to 2&lt;/P&gt;&lt;P&gt;SYMBOLGEN:&amp;nbsp; Macro variable T2 resolves to LTD&lt;/P&gt;&lt;P&gt;LTD&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; %DO loop index variable I is now 3; loop will not iterate again.&lt;/P&gt;&lt;P&gt;MLOGIC(COMPANY):&amp;nbsp; Ending execution.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 08:11:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178893#M45666</guid>
      <dc:creator>alan0101</dc:creator>
      <dc:date>2014-11-20T08:11:17Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178894#M45667</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here the loop is outside the data step and each of the time youn execute this above program you&amp;nbsp; are looping the whole data step, I beleive you need to check the surname in each of the observation&amp;nbsp; for this you wouldn't have to loop the whole datastep.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If the loop is within the datastep that would help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro Company;&lt;/P&gt;&lt;P&gt;data lib.set02;&lt;BR /&gt;Length Flag $20.;&lt;BR /&gt;Length Var1 $20.;&lt;BR /&gt;set lib.set01;&lt;BR /&gt;%do i = 1 %to &amp;amp;n;&lt;BR /&gt;%if %index(%upcase(Surname),trim(&amp;amp;&amp;amp;t&amp;amp;i)) &amp;gt; 0 %then&lt;BR /&gt;%do;&lt;BR /&gt;Flag='Company';&lt;BR /&gt;Var1=t&amp;amp;i;&lt;BR /&gt;Output lib.set02;&lt;BR /&gt;%end;&lt;BR /&gt;%end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;%Company;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 08:21:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178894#M45667</guid>
      <dc:creator>DMoovendhan</dc:creator>
      <dc:date>2014-11-20T08:21:13Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178895#M45668</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Also the variables Flag and Var1 will get initialised only when the condition satisfies.&lt;/P&gt;&lt;P&gt;For this check instead of macro statements you could have used the normal IF Then statements.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 08:22:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178895#M45668</guid>
      <dc:creator>DMoovendhan</dc:creator>
      <dc:date>2014-11-20T08:22:48Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178896#M45669</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks, at least the loop is working correctly now.&amp;nbsp; However, I know that the condition is satisfied when &amp;amp;t1 = 'PTY' and &amp;amp;t2='LTD', but for some reason the IF condition is still evaluating to FALSE, so Flag and var1 are not being populated.&amp;nbsp; I'll try some more text functions on the macro variable to see of that sorts it out e.g. LEFT, TRIM etc, unless you can think of anything else ?&amp;nbsp; By the way, the reason I'm using a macro is because the values for &amp;amp;t1 to &amp;amp;tn are populated from a text file with hundreds of different values, so the traditional if then statements would become way too cumbersome to manage.&amp;nbsp; Thanks for your help so far.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 08:42:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178896#M45669</guid>
      <dc:creator>alan0101</dc:creator>
      <dc:date>2014-11-20T08:42:13Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178897#M45670</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;To be frank, I don't understand the need for any of the macro code in your example.&amp;nbsp; Its not doing anything except obfuscating what you are trying to do.&amp;nbsp; Post some test data and required output, as I am sure your code could be simplified right down to one array and one loop.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 09:29:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178897#M45670</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-11-20T09:29:43Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178898#M45671</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Just one Suggestion, you can check if the data is upper case or lower case...&lt;/P&gt;&lt;P&gt;If its because of the case of the string, the you can use upcase....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 09:52:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178898#M45671</guid>
      <dc:creator>DMoovendhan</dc:creator>
      <dc:date>2014-11-20T09:52:41Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178899#M45672</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks, I used the upcase function, but to no avail.&amp;nbsp; I will attach the relevant datasets and files&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;Here is the code that works before I put it in a macro :&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA lib.CompInd;&lt;/P&gt;&lt;P&gt;&amp;nbsp; INFILE "&amp;amp;ProjPath\CompInd.txt" DLM='09'X DSD TRUNCOVER lrecl=1000 recfm=v;&lt;/P&gt;&lt;P&gt;&amp;nbsp; INPUT&lt;/P&gt;&lt;P&gt;&amp;nbsp; CompInd :$20.;&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 sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select count(*) into :n&lt;/P&gt;&lt;P&gt;&amp;nbsp; from lib.CompInd;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let n = &amp;amp;n;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;n;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select CompInd into :t1-:t&amp;amp;n from lib.CompInd;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;t1;&lt;/P&gt;&lt;P&gt;%put &amp;amp;t2;&lt;/P&gt;&lt;P&gt;%put &amp;amp;t3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; data lib.set02;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Length Flag $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Length Var1 $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set lib.set01;&lt;/P&gt;&lt;P&gt;&amp;nbsp; do i = 1 to &amp;amp;n;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if index(upcase(Surname),'PTY') &amp;gt; 0 then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Flag='Company';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Var1='PTY';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output lib.set02;&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;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;This is the macro version of the above :&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA lib.CompInd;&lt;/P&gt;&lt;P&gt;&amp;nbsp; INFILE "&amp;amp;ProjPath\CompInd.txt" DLM='09'X DSD TRUNCOVER lrecl=1000 recfm=v;&lt;/P&gt;&lt;P&gt;&amp;nbsp; INPUT&lt;/P&gt;&lt;P&gt;&amp;nbsp; CompInd :$20.;&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 sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select count(*) into :n&lt;/P&gt;&lt;P&gt;&amp;nbsp; from lib.CompInd;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let n = &amp;amp;n;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;n;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql noprint;&lt;/P&gt;&lt;P&gt;&amp;nbsp; select CompInd into :t1-:t&amp;amp;n from lib.CompInd;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%put &amp;amp;t1;&lt;/P&gt;&lt;P&gt;%put &amp;amp;t2;&lt;/P&gt;&lt;P&gt;%put &amp;amp;t3;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;options mlogic symbolgen;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro Company;&lt;/P&gt;&lt;P&gt;&amp;nbsp; data lib.set02;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Length Flag $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Length Var1 $20.;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set lib.set01;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %do i = 1 %to &amp;amp;n;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %let test=&amp;amp;&amp;amp;t&amp;amp;i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %put &amp;amp;test;&lt;/P&gt;&lt;P&gt;&amp;nbsp; %if %index(upcase(Surname),trim(&amp;amp;test)) &amp;gt; 0 %then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; %do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Flag='Company';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Var1=&amp;amp;&amp;amp;t&amp;amp;i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Output lib.set02;&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;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%Company;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now I just have to figure out how to attach the datasets ....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 10:27:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178899#M45672</guid>
      <dc:creator>alan0101</dc:creator>
      <dc:date>2014-11-20T10:27:34Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178900#M45673</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;Well here are four options which avoid all macro code (note option 4 has number hardcoded, but you could replace with a proc sql select count, as you did above.&lt;/P&gt;&lt;P&gt;---&amp;nbsp; This generatea a new datastep with the options&lt;/P&gt;&lt;P&gt;data _null_;&lt;BR /&gt;&amp;nbsp; set temp.compind end=last;&lt;BR /&gt;&amp;nbsp; if _n_=1 then call execute('data temp.want; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set temp.set01; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length flag var1 $20;');&lt;BR /&gt;&amp;nbsp; call execute(' if index(surname,"'||strip(compind)||'") &amp;gt; 0 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag="Company";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var1="'||strip(compind)||'";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;');&lt;BR /&gt;&amp;nbsp; if last then call execute(';run;');&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;---&amp;nbsp; This uses SQL update to actually change the existing dataset based on condition&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create table TEMP.WANT as&lt;BR /&gt;&amp;nbsp; select&amp;nbsp; SURNAME,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "" as FLAG length=20,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "" as VAR1 length=20&lt;BR /&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; TEMP.SET01;&lt;BR /&gt;&amp;nbsp; update TEMP.WANT A&lt;BR /&gt;&amp;nbsp; set FLAG="Company",&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VAR1=(select distinct THIS.COMPIND from TEMP.COMPIND THIS where index(A.SURNAME,THIS.COMPIND) &amp;gt; 0);&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;---&amp;nbsp; This use joining tables based on the condition&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create table TEMP.WANT as&lt;BR /&gt;&amp;nbsp; select&amp;nbsp; A.SURNAME,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B.FLAG,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B.COMPIND&lt;BR /&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; TEMP.SET01 A&lt;BR /&gt;&amp;nbsp; left join (select *,"Company" as FLAG from TEMP.COMPIND) B&lt;BR /&gt;&amp;nbsp; on&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index(A.SURNAME,B.COMPIND) &amp;gt; 0;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;--- This transposes you options so they can be iterated using an array and loop&lt;/P&gt;&lt;P&gt;proc transpose data=temp.compind out=compind2;&lt;BR /&gt;&amp;nbsp; var compind;&lt;BR /&gt;run;&lt;BR /&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create table TEMP.WANT as&lt;BR /&gt;&amp;nbsp; select&amp;nbsp; A.*,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B.*&lt;BR /&gt;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp; TEMP.SET01 A&lt;BR /&gt;&amp;nbsp; left join TEMP.COMPIND2 B&lt;BR /&gt;&amp;nbsp; on 1=1;&lt;BR /&gt;quit;&lt;BR /&gt;data temp.want (keep=surname flag var1);&lt;BR /&gt;&amp;nbsp; set temp.want;&lt;BR /&gt;&amp;nbsp; length flag var1 $20;&lt;BR /&gt;&amp;nbsp; array col{3};&lt;BR /&gt;&amp;nbsp; do i=1 to 3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if index(surname,col{i}) &amp;gt; 0 then do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag="Company";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var1=col{i};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are other options, hash, for instance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 11:22:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178900#M45673</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-11-20T11:22:38Z</dc:date>
    </item>
    <item>
      <title>Re: Using the Index Function with macro variables in a macro loop</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178901#M45674</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks RW9 - I'm sure I'll find something in there that works !&amp;nbsp; Off to a strategy workshop now - will try the proc sql options first.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Nov 2014 11:28:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Using-the-Index-Function-with-macro-variables-in-a-macro-loop/m-p/178901#M45674</guid>
      <dc:creator>alan0101</dc:creator>
      <dc:date>2014-11-20T11:28:18Z</dc:date>
    </item>
  </channel>
</rss>

