<?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: Whitespace woes in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459135#M116583</link>
    <description>&lt;P&gt;For normal operations what would you do with a zero length character string?&amp;nbsp; &amp;nbsp;If you assign it to an actual variable it will result in at least one space anyway.&amp;nbsp; &amp;nbsp;SAS stores character variables as fixed length and fills (pads) with spaces.&amp;nbsp; It ignores trailing spaces when comparing strings.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want to eliminate trailing/leading characters other than spaces then you will need to use regex.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or convert them to spaces and then use strip().&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
  length var1 var2 $10 ;
  var1='XYZ';
  var2=cat(' ','09'x,'XYZ','09'x,' ','A0'x);
  put (2*var1 2*var2) (=$quote. / =$hex./);
  if var1 ne var2 then put 'NOT EQUAL';
  if var1  = strip(translate(var2,' ','090A0D00A0'x)) then put 'EQUAL';
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 01 May 2018 22:32:00 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2018-05-01T22:32:00Z</dc:date>
    <item>
      <title>Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459082#M116562</link>
      <description>&lt;P&gt;From my understanding these three statements should be equivalent&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;CATX('', COL1, COL2, COL3)
TRIM(COL1) || TRIM(COL2) || TRIM(COL3)
PRXCHANGE('s/\s+//', -1, COL1) || PRXCHANGE('s/\s+//', -1, COL2) || PRXCHANGE('s/\s+//', -1, COL3)&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;COL1, COL2, and COL3 are characters.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I check for whitespace with:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PRXCHANGE('s/\s/X/', -1, CONCATENATED_COLUMN) &lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1 and 3 produce equivalent columns but 2 does not.&amp;nbsp; All three produce trailing whitespace.&amp;nbsp; I would like to check this column for characters like:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;CASE WHEN PRXMATCH('/^0+$/', CONCATENATED_COLUMN) THEN 1 ELSE 0 END AS FOO&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;But can't because of the whitespace that still appears.&amp;nbsp; Must I always account for whitespace whenever I do any operation like this?&amp;nbsp; Something like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;CASE WHEN PRXMATCH('/^0+(?:\s*)$/', CONCATENATED_COLUMN) THEN 1 ELSE 0 END AS FOO&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Or:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;JOIN ON PRXCHANGE('s/\s+//', -1, TABLE_A.ID) = PRXCHANGE('s/\s+//', -1, TABLE_B.ID)&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Because I can never be sure CATX or TRIM did their job?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 20:04:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459082#M116562</guid>
      <dc:creator>tomcmacdonald</dc:creator>
      <dc:date>2018-05-01T20:04:41Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459085#M116565</link>
      <description>&lt;P&gt;Replace TRIM with STRIP and what does that do?&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 20:08:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459085#M116565</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-05-01T20:08:59Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459090#M116567</link>
      <description>&lt;P&gt;Same result as TRIM.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 20:14:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459090#M116567</guid>
      <dc:creator>tomcmacdonald</dc:creator>
      <dc:date>2018-05-01T20:14:05Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459095#M116570</link>
      <description>&lt;P&gt;Hi: I don't understand why you are even using CATX. That function assumes you want to introduce some character between every argument. Personally, if you want there NOT to be ANY whitespace or blank between the arguments, I would use CATT instead of CATX.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="no_blank.png" style="width: 545px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/20297iD6C0D3CBA94828F8/image-size/large?v=v2&amp;amp;px=999" role="button" title="no_blank.png" alt="no_blank.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;Cynthia&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 20:23:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459095#M116570</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2018-05-01T20:23:04Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459097#M116571</link>
      <description>&lt;P&gt;CATT eliminates only trailing whitespace according to:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://documentation.sas.com/?docsetId=lefunctionsref&amp;amp;docsetTarget=n16y1vyi397p84n19dpvzw0pemsa.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en" target="_blank"&gt;http://documentation.sas.com/?docsetId=lefunctionsref&amp;amp;docsetTarget=n16y1vyi397p84n19dpvzw0pemsa.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;CATX eliminates trailing &lt;EM&gt;and&lt;/EM&gt; leading whitespace according to:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="http://documentation.sas.com/?docsetId=lefunctionsref&amp;amp;docsetTarget=n0p7wxtk0hvn83n1pveisbcp2ae9.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en" target="_blank"&gt;http://documentation.sas.com/?docsetId=lefunctionsref&amp;amp;docsetTarget=n0p7wxtk0hvn83n1pveisbcp2ae9.htm&amp;amp;docsetVersion=9.4&amp;amp;locale=en&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;That was my rationale for choosing CATX with a blank delimiter.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My tentative solution to this is:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;PRXCHANGE('s/\s+//', -1, (COL1 || COL2 || COL3))&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 01 May 2018 20:38:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459097#M116571</guid>
      <dc:creator>tomcmacdonald</dc:creator>
      <dc:date>2018-05-01T20:38:27Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459099#M116573</link>
      <description>&lt;P&gt;You told CATX() to insert a space between the values.&amp;nbsp; If you just place two quotes next to each other then you are telling SAS you want a blank string of length one.&amp;nbsp;&amp;nbsp;You can generate an empty string using the TRIMN() function.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Don't use a function, catx(), designed to insert something between the values when you don't actually want something inserted. Use CATT() or CATS().&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Also what does \s mean in regular expressions?&amp;nbsp; Is it only spaces? or does it include other "white space"?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 20:43:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459099#M116573</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-05-01T20:43:44Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459106#M116574</link>
      <description>&lt;P&gt;A 0-length character does not exist in SAS?&amp;nbsp; '' actually means ' '?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;According to the PERL regular expression manual:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;&lt;CODE class="inline"&gt;\s&lt;/CODE&gt; means the five characters &lt;CODE class="inline"&gt;&lt;SPAN class="s"&gt;[&lt;/SPAN&gt; \&lt;SPAN class="w"&gt;f&lt;/SPAN&gt;\&lt;SPAN class="w"&gt;n&lt;/SPAN&gt;\&lt;SPAN class="w"&gt;r&lt;/SPAN&gt;\&lt;SPAN class="w"&gt;t&lt;/SPAN&gt;&lt;SPAN class="s"&gt;]&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://perldoc.perl.org/perlre.html" target="_blank"&gt;https://perldoc.perl.org/perlre.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 20:56:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459106#M116574</guid>
      <dc:creator>tomcmacdonald</dc:creator>
      <dc:date>2018-05-01T20:56:16Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459109#M116575</link>
      <description>&lt;P&gt;It never hurts to provide a concrete example involving actual values and what the result is supposed to be at the end.&lt;/P&gt;
&lt;P&gt;Showing what does not work does not really tell us what you want to accomplish.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/142145"&gt;@tomcmacdonald&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;From my understanding these three statements should be equivalent&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;CATX('', COL1, COL2, COL3)
TRIM(COL1) || TRIM(COL2) || TRIM(COL3)
PRXCHANGE('s/\s+//', -1, COL1) || PRXCHANGE('s/\s+//', -1, COL2) || PRXCHANGE('s/\s+//', -1, COL3)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;What makes you think they should be equivalent?&lt;/P&gt;
&lt;P&gt;For one thing you can get different default lengths.&lt;/P&gt;
&lt;P&gt;From the documentation in CATX:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;In a DATA step, if the &lt;FONT style="background-color: rgb(252, 222, 192);"&gt;CATX&lt;/FONT&gt; function returns a value to a variable that has not previously been assigned a length, then that variable is given a length of &lt;FONT color="#0000ff"&gt;&lt;STRONG&gt;200 bytes&lt;/STRONG&gt;&lt;/FONT&gt;. If the concatenation operator (||) returns a value to a variable that has not previously been assigned a length, then that variable is given a length that is the &lt;FONT color="#0000ff"&gt;&lt;STRONG&gt;sum of the lengths of the values that are being conc&lt;/STRONG&gt;&lt;/FONT&gt;atenated.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Throw Prxchange in with || and I am not going to guess what the overall default length for the result would be.&lt;/P&gt;
&lt;P&gt;Strip or Trim(left(var)) would be much closer to cats.&lt;/P&gt;
&lt;P&gt;Trim removes trailing blanks and returns one blank if the string is missing. So not the equivalent of using Cats or catx in either form.&lt;/P&gt;
&lt;PRE&gt;data example;
   a='a ';
   b='  ';
   c=' c';
   abc = trim(a)||trim(b)||trim(c);
   hij = strip(a)||strip(b)||strip(c);
   xyz = cats(a,b,c);
   pdq = catx('',a,b,c);
run;&lt;/PRE&gt;</description>
      <pubDate>Tue, 01 May 2018 21:12:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459109#M116575</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-05-01T21:12:53Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459135#M116583</link>
      <description>&lt;P&gt;For normal operations what would you do with a zero length character string?&amp;nbsp; &amp;nbsp;If you assign it to an actual variable it will result in at least one space anyway.&amp;nbsp; &amp;nbsp;SAS stores character variables as fixed length and fills (pads) with spaces.&amp;nbsp; It ignores trailing spaces when comparing strings.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want to eliminate trailing/leading characters other than spaces then you will need to use regex.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or convert them to spaces and then use strip().&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data _null_;
  length var1 var2 $10 ;
  var1='XYZ';
  var2=cat(' ','09'x,'XYZ','09'x,' ','A0'x);
  put (2*var1 2*var2) (=$quote. / =$hex./);
  if var1 ne var2 then put 'NOT EQUAL';
  if var1  = strip(translate(var2,' ','090A0D00A0'x)) then put 'EQUAL';
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 22:32:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459135#M116583</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-05-01T22:32:00Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459139#M116584</link>
      <description>&lt;P&gt;The first 6 look like normal control characters. Not sure what the others are used for.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;The set of characters that are deemed whitespace are those that Unicode calls "Pattern White Space", namely:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;0009&lt;/SPAN&gt; &lt;SPAN class="w"&gt;CHARACTER&lt;/SPAN&gt; &lt;SPAN class="w"&gt;TABULATION&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;000&lt;/SPAN&gt;&lt;SPAN class="w"&gt;A&lt;/SPAN&gt; &lt;SPAN class="w"&gt;LINE&lt;/SPAN&gt; &lt;SPAN class="w"&gt;FEED&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;000&lt;/SPAN&gt;&lt;SPAN class="w"&gt;B&lt;/SPAN&gt; &lt;SPAN class="w"&gt;LINE&lt;/SPAN&gt; &lt;SPAN class="w"&gt;TABULATION&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;000&lt;/SPAN&gt;&lt;SPAN class="w"&gt;C&lt;/SPAN&gt; &lt;SPAN class="w"&gt;FORM&lt;/SPAN&gt; &lt;SPAN class="w"&gt;FEED&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;000&lt;/SPAN&gt;&lt;SPAN class="w"&gt;D&lt;/SPAN&gt; &lt;SPAN class="w"&gt;CARRIAGE&lt;/SPAN&gt; &lt;SPAN class="w"&gt;RETURN&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;0020&lt;/SPAN&gt; &lt;SPAN class="w"&gt;SPACE&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;0085&lt;/SPAN&gt; &lt;SPAN class="w"&gt;NEXT&lt;/SPAN&gt; &lt;SPAN class="w"&gt;LINE&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;200&lt;/SPAN&gt;&lt;SPAN class="w"&gt;E&lt;/SPAN&gt; &lt;SPAN class="w"&gt;LEFT&lt;/SPAN&gt;-&lt;SPAN class="w"&gt;TO&lt;/SPAN&gt;-&lt;SPAN class="w"&gt;RIGHT&lt;/SPAN&gt; &lt;SPAN class="w"&gt;MARK&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;200&lt;/SPAN&gt;&lt;SPAN class="w"&gt;F&lt;/SPAN&gt; &lt;SPAN class="w"&gt;RIGHT&lt;/SPAN&gt;-&lt;SPAN class="w"&gt;TO&lt;/SPAN&gt;-&lt;SPAN class="w"&gt;LEFT&lt;/SPAN&gt; &lt;SPAN class="w"&gt;MARK&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;2028&lt;/SPAN&gt; &lt;SPAN class="w"&gt;LINE&lt;/SPAN&gt; &lt;SPAN class="w"&gt;SEPARATOR&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN class="w"&gt;U&lt;/SPAN&gt;+&lt;SPAN class="n"&gt;2029&lt;/SPAN&gt; &lt;SPAN class="w"&gt;PARAGRAPH&lt;/SPAN&gt; &lt;SPAN class="w"&gt;SEPARATOR&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;LI-WRAPPER&gt;&lt;/LI-WRAPPER&gt;&lt;/P&gt;
&lt;PRE class="verbatim"&gt;&amp;nbsp;&lt;/PRE&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 22:39:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459139#M116584</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-05-01T22:39:51Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459147#M116585</link>
      <description>&lt;P&gt;Well, if you are worried about leading blanks, then use CATS...or, just do what we used to do before the CAT family of functions -- the original way is shown below --&amp;nbsp; using TRIM(LEFT(varname)) with the || operator or just using LEFT with CATT:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="no_blank2.png" style="width: 575px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/20299i4EDA728582A9B6F7/image-size/large?v=v2&amp;amp;px=999" role="button" title="no_blank2.png" alt="no_blank2.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cynthia&lt;/P&gt;</description>
      <pubDate>Tue, 01 May 2018 23:38:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/459147#M116585</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2018-05-01T23:38:03Z</dc:date>
    </item>
    <item>
      <title>Re: Whitespace woes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/463705#M118183</link>
      <description>&lt;P&gt;Any two of the three expressions are not equivalent to each other.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The CATX function is equivalent to strip(COL1)||" "||strip(COL2)||" "||strip(COL3), provided that a single blank character was defined to be the delimiter in the original example.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;There are no functions equivalent to the second expression, although the closest one whould be CATT function, which is actually equivalent to trim&lt;FONT color="#ff0000"&gt;n&lt;/FONT&gt;(COL1)||trim&lt;FONT color="#ff0000"&gt;n&lt;/FONT&gt;(COL2)||trim&lt;FONT color="#ff0000"&gt;n&lt;/FONT&gt;(COL3).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The third expression is equivalent to compress(COL1)||compress(COL2)||compress(COL3), resulting that all the space characters are removed, not just leading and trailing blanks.&lt;/P&gt;</description>
      <pubDate>Mon, 21 May 2018 05:45:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Whitespace-woes/m-p/463705#M118183</guid>
      <dc:creator>jim_cai</dc:creator>
      <dc:date>2018-05-21T05:45:28Z</dc:date>
    </item>
  </channel>
</rss>

