<?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: issue with dropping leading zeros in a string in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639244#M190115</link>
    <description>My SAS EG gave me error when I tried this. But, Thanks for your help</description>
    <pubDate>Sun, 12 Apr 2020 01:31:54 GMT</pubDate>
    <dc:creator>buddha_d</dc:creator>
    <dc:date>2020-04-12T01:31:54Z</dc:date>
    <item>
      <title>issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639108#M190056</link>
      <description>&lt;P&gt;Dear community,&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I want to drop the leading zeros in a string which looks like the below dataset. I am trying to match these numbers in another table (which has the same numbers but no leading zeros).&amp;nbsp; Could you please help me do this. I tried this way, but all zero numbers are throwing error in my sas. Could you please help me. Thanks !!&lt;/P&gt;&lt;PRE&gt;data leadingzero;
input number $;
new_num1=substr(number, indexc(number,'123456789'));
cards;
0123
123
124-487
007_0k
000033y
00000
;
run;&lt;/PRE&gt;&lt;P&gt;The log for error is&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;1 data leadingzero;&lt;BR /&gt;2 input number $;&lt;BR /&gt;3 new_num1=substr(number, indexc(number,'123456789'));&lt;BR /&gt;4 cards;&lt;/P&gt;&lt;P&gt;NOTE: Invalid second argument to function SUBSTR at line 3 column 10.&lt;BR /&gt;RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+&lt;BR /&gt;10 00000&lt;BR /&gt;number=00000 new_num1= _ERROR_=1 _N_=6&lt;BR /&gt;NOTE: The data set WORK.LEADINGZERO has 6 observations and 2 variables.&lt;BR /&gt;NOTE: DATA statement used (Total process time):&lt;BR /&gt;real time 0.32 seconds&lt;BR /&gt;cpu time 0.04 seconds&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 11 Apr 2020 03:26:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639108#M190056</guid>
      <dc:creator>buddha_d</dc:creator>
      <dc:date>2020-04-11T03:26:43Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639110#M190057</link>
      <description>&lt;P&gt;Depends what you want for those cases. One solution is:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;new_num1=substr(number, max(1, indexc(number,'123456789')));&lt;/P&gt;</description>
      <pubDate>Sat, 11 Apr 2020 03:48:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639110#M190057</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2020-04-11T03:48:14Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639111#M190058</link>
      <description>&lt;P&gt;Another solution would be:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;new_num2=prxChange("s/^0+//", 1, number);&lt;/P&gt;</description>
      <pubDate>Sat, 11 Apr 2020 03:52:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639111#M190058</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2020-04-11T03:52:07Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639112#M190059</link>
      <description>&lt;P&gt;Or maybe:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;new_num3=prxChange("s/^0+(\S)/\1/", 1, number);&lt;/P&gt;</description>
      <pubDate>Sat, 11 Apr 2020 03:55:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639112#M190059</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2020-04-11T03:55:08Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639113#M190060</link>
      <description>&lt;P&gt;Use &lt;CODE&gt;VERIFY&lt;/CODE&gt; to determine position of first leading character that is not a &lt;CODE&gt;0&lt;/CODE&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;string = substr(string, VERIFY(string,'0'));
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 11 Apr 2020 04:06:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639113#M190060</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-04-11T04:06:00Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639160#M190081</link>
      <description>&lt;P&gt;I assume that what you want to do when the number part is all zeros is not to return an empty string, but to have a single zero, as that is the normal numeric representation of the number zero.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In which case I assume you want '00x' to become '0x' and '000000' to become '0'.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PRX expressions seem a good way of accomplishing that: What you want to do is to delete any zeros that come before a digit (including zero):&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;new_num1=prxChange('s/^0*(?=\d)//', 1, number);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;The PRX expression:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"^" means the beginning of the input string.&lt;/P&gt;
&lt;P&gt;"0*" is any number of zeros.&lt;/P&gt;
&lt;P&gt;"(?=\d)" is a look-ahead assertion, saying that after the string found there must be a single digit (including a zero).&lt;/P&gt;</description>
      <pubDate>Sat, 11 Apr 2020 16:45:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639160#M190081</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2020-04-11T16:45:49Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639187#M190086</link>
      <description>&lt;P&gt;Yes, all zeros throw an error because indexc(number,'123456789') returns 0, but 0 cannot be a value for the second argument of SUBSTR. Here is a solution that should work:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data leadingzero;
   input number $;
   new_num1 = substr(number,findc(number,'0','k'));
   cards;
0123
123
124-487
007_0k
000033y
00000
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;It creates the following data table:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.JPG" style="width: 223px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/38216i23E4F14AF8D55362/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.JPG" alt="Capture.JPG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Hope, this helps.&lt;/P&gt;
&lt;P&gt;Also, I would recommend not to rely on the default column length and assign it explicitly:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data leadingzero;
   length number $10;
   input number $;
   new_num1 = substr(number,findc(number,'0','k'));
   cards;
0123
123
124-487
007_0k
000033y
00000
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Otherwise, you may run in a situation of truncated variable values. The length must be large enough to accommodate all zeros plus one.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But even more robust solution would be this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data leadingzero;
   length number $10;
   input number $;
   cards;
0123
123
124-487
007_0k
000033y
0000000000 
;

data noleadingzero (drop=pos);
   set leadingzero;
   length new_num1 $10;
   pos = findc(number,'0','k');
   if pos=0 then new_num1='';
            else new_num1=substr(number,pos);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This way, your stripping leading zeros will not depend on possible errors in your input data set: you create your input data set first, make sure it is correct, and then use it in the next data step which takes care of stripping the leading zeros.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 11 Apr 2020 22:36:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639187#M190086</guid>
      <dc:creator>LeonidBatkhan</dc:creator>
      <dc:date>2020-04-11T22:36:53Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639242#M190113</link>
      <description>thanks for the explanation and solution</description>
      <pubDate>Sun, 12 Apr 2020 01:30:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639242#M190113</guid>
      <dc:creator>buddha_d</dc:creator>
      <dc:date>2020-04-12T01:30:42Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639243#M190114</link>
      <description>Thanks S_lassen for helping me</description>
      <pubDate>Sun, 12 Apr 2020 01:31:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639243#M190114</guid>
      <dc:creator>buddha_d</dc:creator>
      <dc:date>2020-04-12T01:31:14Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639244#M190115</link>
      <description>My SAS EG gave me error when I tried this. But, Thanks for your help</description>
      <pubDate>Sun, 12 Apr 2020 01:31:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639244#M190115</guid>
      <dc:creator>buddha_d</dc:creator>
      <dc:date>2020-04-12T01:31:54Z</dc:date>
    </item>
    <item>
      <title>Re: issue with dropping leading zeros in a string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639245#M190116</link>
      <description>Thanks PGStats. This worked well in my query.</description>
      <pubDate>Sun, 12 Apr 2020 01:32:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/issue-with-dropping-leading-zeros-in-a-string/m-p/639245#M190116</guid>
      <dc:creator>buddha_d</dc:creator>
      <dc:date>2020-04-12T01:32:33Z</dc:date>
    </item>
  </channel>
</rss>

