<?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: Need help on substr and scan function in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144690#M28884</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since the format for the zip code and state code is given, I recommend to roll up the "address line 2" string from the back, starting with length()-x, where x is sufficent to place you at the start of zip/state. What's left is then the municipality name.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 28 Oct 2014 10:35:28 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2014-10-28T10:35:28Z</dc:date>
    <item>
      <title>Need help on substr and scan function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144686#M28880</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I'm importing .csv file to SAS and it holds thousands of records as below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;name&lt;/TD&gt;&lt;TD&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; Address Line 1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Address Line 2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;VALERIE C SANDMIRE&lt;/TD&gt;&lt;TD&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; 1302 ELLENWOOD DR&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MADISON WI 53714-1006&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;JONAH Z HAUGLEY&lt;/TD&gt;&lt;TD&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; 884 HUNTERS TRL&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUN PRAIRIE WI 53590-2585&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DOROTHY A GENSKE&lt;/TD&gt;&lt;TD&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; 700 DOUGLAS TRL&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MADISON WI 53716-2125&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I need to convert the SAS dataset as below after import. It means I need to derive 'state' and 'zip' variable from the variable 'address line 2'. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;name&lt;/TD&gt;&lt;TD&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; Address Line 1&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Address Line 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; State&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zip&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;VALERIE C SANDMIRE&lt;/TD&gt;&lt;TD&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; 1302 ELLENWOOD DR&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MADISON&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; WI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 53714&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;JONAH Z HAUGLEY&lt;/TD&gt;&lt;TD&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; 884 HUNTERS TRL&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUN PRAIRIE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 53590&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;DOROTHY A GENSKE&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 700 DOUGLAS TRL&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MADISON&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; WI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 53716&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt; I tried to implement this via substr (tried from right to left to extract only numbers substr(Address Line 2,-1,-10)) and scan function but could not succeed. Please advise.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help would be appreciated.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Oct 2014 07:06:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144686#M28880</guid>
      <dc:creator>RamKumar</dc:creator>
      <dc:date>2014-10-28T07:06:50Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on substr and scan function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144687#M28881</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Probably the key is, to find the position of the first digit/non-character. Perl-functions should be useful. This program probably needs some house-keeping, but in principle should work:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data Have;&lt;BR /&gt;&amp;nbsp; Input Address_Line_2 $50.;&lt;BR /&gt;&amp;nbsp; Datalines;&lt;BR /&gt;MADISON WI 53714-1006&lt;BR /&gt;SUN PRAIRIE WI 53590-2585&lt;BR /&gt;MADISON WI 53716-2125&lt;BR /&gt;;&lt;BR /&gt;Run;&lt;/P&gt;&lt;P&gt;Data Want;&lt;BR /&gt;&amp;nbsp; Set Have;&lt;BR /&gt;&amp;nbsp; Pos_of_first_digit=PRXMatch("/\d/",Address_line_2);&lt;BR /&gt;&amp;nbsp; Zip=Substr(Address_line_2,Pos_of_first_digit); * find Position of zip;&lt;BR /&gt;&amp;nbsp; State=(Substr(Address_line_2,Pos_of_first_digit-3,2)); * assumption: state is 2 characters long;&lt;BR /&gt;&amp;nbsp; Address_line_2=Substr(Address_line_2,1,Pos_of_first_digit-4); * drop zip and state;&lt;BR /&gt;Run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Oct 2014 08:40:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144687#M28881</guid>
      <dc:creator>user24feb</dc:creator>
      <dc:date>2014-10-28T08:40:46Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on substr and scan function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144688#M28882</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data abc;&lt;/P&gt;&lt;P&gt;input kk $30. ;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;MADISON WI 53714-1006&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;SUN PRAIRIE WI 53590-2585&lt;/P&gt;&lt;P&gt;MADISON WI 53716-2125&lt;/P&gt;&lt;P&gt;;&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;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data sub;&lt;/P&gt;&lt;P&gt;set abc;&lt;/P&gt;&lt;P&gt;Address_Line_2 = scan(kk,1);&lt;/P&gt;&lt;P&gt;state= scan(kk,2);&lt;/P&gt;&lt;P&gt;zip= substr(compress(kk, , 'kd'),1,5);/* to extract the numeric part */&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Oct 2014 09:04:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144688#M28882</guid>
      <dc:creator>Paari</dc:creator>
      <dc:date>2014-10-28T09:04:17Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on substr and scan function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144689#M28883</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;length Name $18&amp;nbsp; ALine1 $18&amp;nbsp; ALine2 $25;&lt;/P&gt;&lt;P&gt;input Name @24 ALine1 $18. @44 ALine2 $25.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;VALERIE C SANDMIRE&amp;nbsp; 1302 ELLENWOOD DR MADISON WI 53714-1006&lt;/P&gt;&lt;P&gt;JONAH Z HAUGLEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 884 HUNTERS TRL&amp;nbsp;&amp;nbsp;&amp;nbsp; SUN PRAIRIE WI 53590-2585&lt;/P&gt;&lt;P&gt;DOROTHY A GENSKE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 700 DOUGLAS TRL&amp;nbsp;&amp;nbsp;&amp;nbsp; MADISON WI 53716-2125&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This program depends on:&lt;/P&gt;&lt;P&gt;[1] count the number of words in ALine2.&lt;/P&gt;&lt;P&gt;[2]&amp;nbsp; Gets the Zip at the last word adjusting for '-'.&lt;/P&gt;&lt;P&gt;[3] State is last but one word.&lt;/P&gt;&lt;P&gt;[4] Taking the beginning location of State, Addr2 is found in the first location - 1 positions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;format Name ALine1 Addr2 State Zip;&lt;/P&gt;&lt;P&gt;keep Name ALine1 Addr2 State Zip;&lt;/P&gt;&lt;P&gt;length State $2 zip $5 Addr2 $12;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; num = countw(ALine2, ' ');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Zip = scan(ALine2, num, ' -');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; State = scan(ALine2, num - 1, ' ');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; loc = index(ALine2, State);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Addr2 = substr(ALine2,1, loc - 1);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Oct 2014 10:15:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144689#M28883</guid>
      <dc:creator>KachiM</dc:creator>
      <dc:date>2014-10-28T10:15:25Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on substr and scan function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144690#M28884</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since the format for the zip code and state code is given, I recommend to roll up the "address line 2" string from the back, starting with length()-x, where x is sufficent to place you at the start of zip/state. What's left is then the municipality name.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Oct 2014 10:35:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144690#M28884</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2014-10-28T10:35:28Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on substr and scan function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144691#M28885</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;How about this?;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ 1- 22&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; Address1 $ 23 -48&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Address2 $ 49 - 74;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;VALERIE C SANDMIRE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1302 ELLENWOOD DR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MADISON WI 53714-1006&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;JONAH Z HAUGLEY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 884 HUNTERS TRL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUN PRAIRIE WI 53590-2585&lt;/P&gt;&lt;P&gt;DOROTHY A GENSKE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 700 DOUGLAS TRL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MADISON WI 53716-2125&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; zipcode = substr(scan(address2,-1," "),1,5);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; state = scan(address2,-2, " ");&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope it helps,&lt;/P&gt;&lt;P&gt;good luck!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anca.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Oct 2014 11:00:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144691#M28885</guid>
      <dc:creator>AncaTilea</dc:creator>
      <dc:date>2014-10-28T11:00:17Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on substr and scan function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144692#M28886</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;no need for difficult constructions. Scan &lt;A href="http://support.sas.com/documentation/cdl/en/lefunctionsref/63354/HTML/default/viewer.htm#p0jshdjy2z9zdzn1h7k90u99lyq6.htm" title="http://support.sas.com/documentation/cdl/en/lefunctionsref/63354/HTML/default/viewer.htm#p0jshdjy2z9zdzn1h7k90u99lyq6.htm"&gt;SAS(R) 9.3 Functions and CALL Routines: Reference&lt;/A&gt; is having the left to right functionality&lt;/P&gt;&lt;P&gt;Use those negative values for that. (-1&amp;nbsp;&amp;nbsp; en -2 )&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;the call scan &lt;A href="http://support.sas.com/documentation/cdl/en/lefunctionsref/63354/HTML/default/viewer.htm#n0ecxfx00bn8i4n1vhh8up24ha6x.htm" title="http://support.sas.com/documentation/cdl/en/lefunctionsref/63354/HTML/default/viewer.htm#n0ecxfx00bn8i4n1vhh8up24ha6x.htm"&gt;SAS(R) 9.3 Functions and CALL Routines: Reference&lt;/A&gt; is giving the position in the string for that. An improvement could be made on datasp code with that one. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;format Name ALine1 Addr2 State Zip;&lt;/P&gt;&lt;P&gt;keep Name ALine1 Addr2 State Zip;&lt;/P&gt;&lt;P&gt;length State $2 zip $5 Addr2 $12;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Zip = scan(Addr2, -2,' -');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Call Scan(Addr2,-2,statpos,statlen) ;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; State = substr(Addr2,statpos,statlen);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Addr2 = substr(ALine2,1, statpos - 1);&lt;/P&gt;&lt;P&gt;drop statpos statlen;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Oct 2014 11:14:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144692#M28886</guid>
      <dc:creator>jakarman</dc:creator>
      <dc:date>2014-10-28T11:14:29Z</dc:date>
    </item>
    <item>
      <title>Re: Need help on substr and scan function</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144693#M28887</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If state is consistently the -2 blank delimited word then the position and length of that word is really all you need to know.&lt;/P&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt; &lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;Data&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; Have;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;Input&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; A2 &lt;/SPAN&gt;&lt;SPAN style="color: #008080; background-color: #ffffff;"&gt;$50.&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;call&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; scan(a2,-&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;2&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,p,l,&lt;/SPAN&gt;&lt;SPAN style="color: #800080; background-color: #ffffff;"&gt;' '&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;length&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; city $&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;32&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; state $&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;2&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt; zip5 $&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;5&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp; city&amp;nbsp; = substrn(a2,&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,p-&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; state = substrn(a2,p,l);&lt;BR /&gt;&amp;nbsp; zip5&amp;nbsp; = scan(left(substrn(a2,p+l)),&lt;/SPAN&gt;&lt;STRONG style="color: #008080; background-color: #ffffff;"&gt;1&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;,&lt;/SPAN&gt;&lt;SPAN style="color: #800080; background-color: #ffffff;"&gt;'-'&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; background-color: #ffffff;"&gt;Datalines&lt;/SPAN&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffc0;"&gt;MADISON WI 53714-1006&lt;BR /&gt;SUN PRAIRIE WI 53590-2585&lt;BR /&gt;MADISON WI 53716-2125&lt;BR /&gt;SUN PRAIRIE&amp;nbsp;&amp;nbsp;&amp;nbsp; WI&amp;nbsp;&amp;nbsp;&amp;nbsp; 53590-2585&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;;;;;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;proc&lt;/STRONG&gt; &lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;print&lt;/STRONG&gt;; &lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG style="color: #000080; background-color: #ffffff;"&gt;run&lt;/STRONG&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="font-family: Courier New; font-size: 11pt;"&gt;&lt;SPAN style="color: #000000; background-color: #ffffff;"&gt;&lt;IMG alt="10-28-2014 6-26-02 AM.png" class="jive-image-thumbnail jive-image" src="https://communities.sas.com/legacyfs/online/7743_10-28-2014 6-26-02 AM.png" width="450" /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Oct 2014 11:27:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-on-substr-and-scan-function/m-p/144693#M28887</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2014-10-28T11:27:34Z</dc:date>
    </item>
  </channel>
</rss>

