<?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 EQ Resolves to 1 in CATS FUNCTION? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744158#M233089</link>
    <description>&lt;P&gt;How do I get EQ, NE etc... to not resolve to their 1 and 0 values in the Cats function?&lt;BR /&gt;See the log of my testing below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;35         %LET TEST1=%SYSFUNC(CATS(WordOne, WordTwo));
36         %PUT TEST1=&amp;amp;TEST1.;
TEST1=WordOneWordTwo
37         
38         %LET TEST2=%SYSFUNC(CATS(WordOne,EQ,%STR(EQ),'NE'));
39         %PUT TEST2=&amp;amp;TEST2.;
TEST2=WordOne11'NE'
40         
41         %LET TEST3=%SYSFUNC(CATS(WordOne,%BQUOTE(EQ),%BQUOTE(NE)));
42         %PUT TEST3=&amp;amp;TEST3.;
TEST3=WordOne10
43         
44         %LET TEST4=%SYSFUNC(CATS(WordOne,GE));
45         %PUT TEST4=&amp;amp;TEST4.;
TEST4=WordOne1
46         
47         %LET TEST5=%SYSFUNC(CATS(WordOne,GT));
48         %PUT TEST5=&amp;amp;TEST5.;
TEST5=WordOne0
49         
50         %LET TEST6=%SYSFUNC(CATS(WordOne,%NRBQUOTE(EQ)));
51         %PUT TEST6=&amp;amp;TEST6.;
TEST6=WordOne1
52         
53         %LET TEST7=%SYSFUNC(CATS(WordOne,"EQ"));
54         %PUT TEST7=&amp;amp;TEST7.;
TEST7=WordOne"EQ"
55         
56         %LET TEST8=%SYSFUNC(CATS(WordOne,%QUOTE(EQ)));
57         %PUT TEST8=&amp;amp;TEST8.;
TEST8=WordOne1
58         
59         %LET TEST9=%SYSFUNC(CATS(WordOne,%NRQUOTE(EQ)));
60         %PUT TEST9=&amp;amp;TEST9.;
TEST9=WordOne1
61         
62         %LET TEST10=%SYSFUNC(CATS(WordOne,%NRSTR(EQ)));
63         %PUT TEST10=&amp;amp;TEST10.;
TEST10=WordOne1&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 27 May 2021 14:22:13 GMT</pubDate>
    <dc:creator>mcook</dc:creator>
    <dc:date>2021-05-27T14:22:13Z</dc:date>
    <item>
      <title>EQ Resolves to 1 in CATS FUNCTION?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744158#M233089</link>
      <description>&lt;P&gt;How do I get EQ, NE etc... to not resolve to their 1 and 0 values in the Cats function?&lt;BR /&gt;See the log of my testing below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;35         %LET TEST1=%SYSFUNC(CATS(WordOne, WordTwo));
36         %PUT TEST1=&amp;amp;TEST1.;
TEST1=WordOneWordTwo
37         
38         %LET TEST2=%SYSFUNC(CATS(WordOne,EQ,%STR(EQ),'NE'));
39         %PUT TEST2=&amp;amp;TEST2.;
TEST2=WordOne11'NE'
40         
41         %LET TEST3=%SYSFUNC(CATS(WordOne,%BQUOTE(EQ),%BQUOTE(NE)));
42         %PUT TEST3=&amp;amp;TEST3.;
TEST3=WordOne10
43         
44         %LET TEST4=%SYSFUNC(CATS(WordOne,GE));
45         %PUT TEST4=&amp;amp;TEST4.;
TEST4=WordOne1
46         
47         %LET TEST5=%SYSFUNC(CATS(WordOne,GT));
48         %PUT TEST5=&amp;amp;TEST5.;
TEST5=WordOne0
49         
50         %LET TEST6=%SYSFUNC(CATS(WordOne,%NRBQUOTE(EQ)));
51         %PUT TEST6=&amp;amp;TEST6.;
TEST6=WordOne1
52         
53         %LET TEST7=%SYSFUNC(CATS(WordOne,"EQ"));
54         %PUT TEST7=&amp;amp;TEST7.;
TEST7=WordOne"EQ"
55         
56         %LET TEST8=%SYSFUNC(CATS(WordOne,%QUOTE(EQ)));
57         %PUT TEST8=&amp;amp;TEST8.;
TEST8=WordOne1
58         
59         %LET TEST9=%SYSFUNC(CATS(WordOne,%NRQUOTE(EQ)));
60         %PUT TEST9=&amp;amp;TEST9.;
TEST9=WordOne1
61         
62         %LET TEST10=%SYSFUNC(CATS(WordOne,%NRSTR(EQ)));
63         %PUT TEST10=&amp;amp;TEST10.;
TEST10=WordOne1&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 27 May 2021 14:22:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744158#M233089</guid>
      <dc:creator>mcook</dc:creator>
      <dc:date>2021-05-27T14:22:13Z</dc:date>
    </item>
    <item>
      <title>Re: EQ Resolves to 1 in CATS FUNCTION?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744161#M233092</link>
      <description>&lt;P&gt;That is because %eval( EQ ) is 1 and %eval( NE ) is 0.&amp;nbsp; The CATS() function allows either numeric or character arguments, so %SYSFUNC() has to decide which one to tell it your call is providing.&amp;nbsp; So that is why the boolean expression EQ is being evaluated as TRUE.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But why would you use CATS() function with %SYSFUNC()?&amp;nbsp; To place strings next to each other in macro code just type them where you want them.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%LET TEST1=WordOneWordTwo;
%LET TEST2=WordOneEQ%str(EQ)'NE';
%LET TEST3=WordOne%BQUOTE(EQ)%BQUOTE(NE);
%LET TEST4=WordOneGE;
...&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 27 May 2021 14:33:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744161#M233092</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-05-27T14:33:52Z</dc:date>
    </item>
    <item>
      <title>Re: EQ Resolves to 1 in CATS FUNCTION?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744201#M233121</link>
      <description>&lt;P&gt;First, let's get rid of the CATS function.&amp;nbsp; Macro language doesn't need it to concatenate text strings.&amp;nbsp; You could simply code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let test1 = WordOne eq WordTwo;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you would like this to resolve to a 0 or 1, surround it in %sysevalf:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let test1 = %sysevalf(WordOne eq WordTwo);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;However, note that you are comparing the text "WordOne" to the text "WordTwo".&amp;nbsp; Macro language does not look at the value of variables within a data set.&lt;/P&gt;</description>
      <pubDate>Thu, 27 May 2021 15:53:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744201#M233121</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2021-05-27T15:53:00Z</dc:date>
    </item>
    <item>
      <title>Re: EQ Resolves to 1 in CATS FUNCTION?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744207#M233125</link>
      <description>&lt;P&gt;Because I am a dolt who likes to do things the most difficult way possible.&amp;nbsp;&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":face_with_rolling_eyes:"&gt;🙄&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 27 May 2021 16:04:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744207#M233125</guid>
      <dc:creator>mcook</dc:creator>
      <dc:date>2021-05-27T16:04:09Z</dc:date>
    </item>
    <item>
      <title>Re: EQ Resolves to 1 in CATS FUNCTION?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744263#M233151</link>
      <description>&lt;P&gt;Obviously, as others have stated, EQ and NE are evaluated to numeric values within CATS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One way to avoid that: split them in pieces:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; 73         %LET TEST2=%SYSFUNC(CATS(WordOne,E,Q,E,Q,'NE'));
 74         %put &amp;amp;=test2;
 TEST2=WordOneEQEQ'NE'
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 27 May 2021 18:23:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744263#M233151</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2021-05-27T18:23:32Z</dc:date>
    </item>
    <item>
      <title>Re: EQ Resolves to 1 in CATS FUNCTION?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744265#M233153</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/76464"&gt;@s_lassen&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Obviously, as others have stated, EQ and NE are evaluated to numeric values within CATS.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;One way to avoid that: split them in pieces:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt; 73         %LET TEST2=%SYSFUNC(CATS(WordOne,E,Q,E,Q,'NE'));
 74         %put &amp;amp;=test2;
 TEST2=WordOneEQEQ'NE'
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;That introduces a different concern.&amp;nbsp; Depending on what letters you have included in the MISSING statement some single letter values will still be convert to numeric, resulting them coming out as uppercase.&lt;/P&gt;
&lt;PRE&gt;632   missing e q ;
633   %LET TEST2=%SYSFUNC(CATS(WordOne,e,q,'NE'));
634   %put &amp;amp;=test2;
TEST2=WordOneEQ'NE'
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 27 May 2021 18:31:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744265#M233153</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-05-27T18:31:38Z</dc:date>
    </item>
    <item>
      <title>Re: EQ Resolves to 1 in CATS FUNCTION?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744326#M233188</link>
      <description>&lt;P&gt;One more tiny pebble to add the the cairn of explanation you got so far.&lt;/P&gt;
&lt;P&gt;%sysfunc must decide how to parse the code: is it macro code or is it text (that could be be passed to the sas language parser)? For EQ, it decides it's macro code.&lt;/P&gt;
&lt;P&gt;I couldn't find a way to force the macro parser to see this as a simple string in this case.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 28 May 2021 04:33:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/EQ-Resolves-to-1-in-CATS-FUNCTION/m-p/744326#M233188</guid>
      <dc:creator>ChrisNZ</dc:creator>
      <dc:date>2021-05-28T04:33:07Z</dc:date>
    </item>
  </channel>
</rss>

