<?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: Truncate in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299821#M63285</link>
    <description>&lt;P&gt;Hi Kurt&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if it is numeric couldn't you just use&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; want&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;new_column &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; substr&lt;SPAN class="token punctuation"&gt;(compress&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;phone_number)&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;4&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 21 Sep 2016 13:07:06 GMT</pubDate>
    <dc:creator>Tom_C_Mortensen</dc:creator>
    <dc:date>2016-09-21T13:07:06Z</dc:date>
    <item>
      <title>Truncate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299763#M63266</link>
      <description>&lt;P&gt;Hi all, I need help to truncate the length of all the content of a column to 4.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;e.g. &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; name &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;phone number&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Joe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;54478955&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Jill &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;35467889&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Kane &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 78542661&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to get the first first four digits of all phone numbers in a new column. Thanks for anticipated help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 06:59:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299763#M63266</guid>
      <dc:creator>Kayomole</dc:creator>
      <dc:date>2016-09-21T06:59:07Z</dc:date>
    </item>
    <item>
      <title>Re: Truncate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299766#M63268</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
length new_column $4;
new_column = substr(strip(phone_number),1,4);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;strip() removes leading and trailing blanks.&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 07:22:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299766#M63268</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2016-09-21T07:22:09Z</dc:date>
    </item>
    <item>
      <title>Re: Truncate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299767#M63269</link>
      <description>&lt;P&gt;Oh, and if phone_number is numeric:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;
new_column = input(substr(left(put(phone_number,best.)),1,4),4.);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If new_column is to be character, omit the input() function and define new_column as $4, as in my previous post.&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 07:24:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299767#M63269</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2016-09-21T07:24:48Z</dc:date>
    </item>
    <item>
      <title>Re: Truncate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299821#M63285</link>
      <description>&lt;P&gt;Hi Kurt&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if it is numeric couldn't you just use&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; want&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;new_column &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; substr&lt;SPAN class="token punctuation"&gt;(compress&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;phone_number)&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;4&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 13:07:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299821#M63285</guid>
      <dc:creator>Tom_C_Mortensen</dc:creator>
      <dc:date>2016-09-21T13:07:06Z</dc:date>
    </item>
    <item>
      <title>Re: Truncate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299828#M63287</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12563"&gt;@Tom_C_Mortensen&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Hi Kurt&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;if it is numeric couldn't you just use&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; want&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token keyword"&gt;set&lt;/SPAN&gt; have&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;new_column &lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt; substr&lt;SPAN class="token punctuation"&gt;(compress&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;phone_number)&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;4&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token procnames"&gt;run&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;You &lt;U&gt;can&lt;/U&gt; do this, but you shouldn't.&lt;/P&gt;
&lt;P&gt;The log looks like this:&lt;/P&gt;
&lt;PRE&gt;23         data want;
24         set have;
25         new_column = substr(compress(phone_number),1,4);
26         run;

NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).
      25:30   
&lt;/PRE&gt;
&lt;P&gt;NOTEs about type conversions done on the fly always raise red flags with me, as sooner or later the result of such a conversion will bite you in the ass, and sometimes big-time.&lt;/P&gt;
&lt;P&gt;I consider that sloppy programming, and always make sure that my type-casts are forced by program code and leave nothing to guess for the computer.&lt;/P&gt;
&lt;P&gt;Computers are dumb.&lt;/P&gt;
&lt;P&gt;If I have written clean code, and such a NOTE appears, I know immediately that a variable has changed from numeric to character or vice-versa, and I need to check why this happened. Or it is my first clue that I misspelled a variable name somewhere.&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 13:26:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299828#M63287</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2016-09-21T13:26:02Z</dc:date>
    </item>
    <item>
      <title>Re: Truncate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299829#M63288</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser﻿&lt;/a&gt;, If the new_column is setup as length of 4, then SUBSTR() seems redundant in this context.&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 13:26:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299829#M63288</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2016-09-21T13:26:15Z</dc:date>
    </item>
    <item>
      <title>Re: Truncate</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299833#M63291</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4877"&gt;@Haikuo&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/11562"&gt;@Kurt_Bremser&lt;/a&gt;, If the new_column is setup as length of 4, then SUBSTR() seems redundant in this context.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Until, for some reason, you need your target variable to be longer to also hold values from somewhere else, but the requirement for the first 4 digits HERE did not change. Then you suddenly get more than 4 characters, and your results go bonkers just because you wanted to avoid some typing.&lt;/P&gt;
&lt;P&gt;Keep in mind that the length statement might be pages away from the place where you use the variable(s). Always make your code explicit so the intention is clearly visible right on the spot.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Been there, done that, and had to spend days to debug it.&lt;/P&gt;</description>
      <pubDate>Wed, 21 Sep 2016 13:34:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Truncate/m-p/299833#M63291</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2016-09-21T13:34:07Z</dc:date>
    </item>
  </channel>
</rss>

