<?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: Parsing problem in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290513#M270027</link>
    <description>&lt;P&gt;Perfect case for regular expressions matching:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
do timeStr = "14h 20min. 2sec.", "0h 5min. 50sec.";
    output;
    end;
run;

data want;
if not prx1 then prx1 + prxParse("/(\d{1,2})h\s(\d{1,2})min\.\s(\d{1,2})sec\./");
set have;
if prxMatch(prx1, timeStr) then do;
    hour = input(prxPosn(prx1,1,timeStr), best.); 
    minute = input(prxPosn(prx1,2,timeStr), best.);
    second = input(prxPosn(prx1,3,timeStr), best.);
    output;
    end;
drop prx1;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Tue, 09 Aug 2016 16:34:16 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2016-08-09T16:34:16Z</dc:date>
    <item>
      <title>Parsing problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290496#M270023</link>
      <description>&lt;P&gt;I have a character variable specifying a duration of time by the number of hours, minutes and seconds. It looks something like"xh ymin. zsec.", where x, y and z can be single or double digits, for example "14h 20min. 2sec.", or "0h 5min. 50sec.". There is a dot after min and sec, but not after h. How can I create 3 numeric variables, hour, minute and second, filled by values of x, y and z? Thanks.&lt;/P&gt;</description>
      <pubDate>Tue, 09 Aug 2016 15:33:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290496#M270023</guid>
      <dc:creator>apolitical</dc:creator>
      <dc:date>2016-08-09T15:33:31Z</dc:date>
    </item>
    <item>
      <title>Re: Parsing problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290502#M270024</link>
      <description>&lt;P&gt;If you think of the markers h, min., etc. as delimiters, you can use the FIND function to locate them, then the SUBSTRN function to pick out the text values between them. Here I used the INPUT function to convert the text values to numeric values to assign to the result variables.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt; &lt;FONT size="3"&gt;_null_&lt;/FONT&gt;&lt;FONT size="3"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp; do&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt; string = &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;"14h 20min. 2sec. "&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;"0h 5min. 50sec. "&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dlmat1 = find(string, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;"h "&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dlmat2 = find(string, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;"min. "&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dlmat3 = find(string, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;"sec."&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt; dlmat1 &amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;and&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt; dlmat2 &amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;and&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt; dlmat3 &amp;gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;then&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;do&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hour = input(substrn(string, &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;, dlmat1 - &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;), ?? &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;f8.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minute = input(substrn(string, dlmat1 + &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;2&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;, dlmat2 - dlmat1 - &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;2&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;), ?? &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;f8.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; second = input(substrn(string, dlmat2 + &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;5&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;, dlmat3 - dlmat2 - &lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;5&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;), ?? &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;f8.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt; (hour minute second) (=);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="andale mono,times"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size="3"&gt;&lt;FONT size="3"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;hour=14 minute=20 second=2&lt;/P&gt;
&lt;P&gt;hour=0 minute=5 second=50&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Aug 2016 15:54:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290502#M270024</guid>
      <dc:creator>RickAster</dc:creator>
      <dc:date>2016-08-09T15:54:40Z</dc:date>
    </item>
    <item>
      <title>Re: Parsing problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290504#M270025</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data tmp;
  a="14h 20min. 2sec.";
  b=tranwrd(tranwrd(tranwrd(a,"h ",":"),"min. ",":"),"sec.","");
  c=input(b,time.);&lt;BR /&gt;  h=hour(c);&lt;BR /&gt;  m=min(c);
  format c time.;
run;&lt;/PRE&gt;</description>
      <pubDate>Tue, 09 Aug 2016 16:01:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290504#M270025</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2016-08-09T16:01:15Z</dc:date>
    </item>
    <item>
      <title>Re: Parsing problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290506#M270026</link>
      <description>&lt;P&gt;Similar but remove unwanted and scan is slightly less typing.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data junk;
   string = "14h 20min. 2sec. ";
   string = compress(string,"." ,'A');
   hour = input(scan(string,1),best2.);
   Minute = input(scan(string,2),best2.);
   Second = input(scan(string,3),best2.);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 09 Aug 2016 16:05:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290506#M270026</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2016-08-09T16:05:25Z</dc:date>
    </item>
    <item>
      <title>Re: Parsing problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290513#M270027</link>
      <description>&lt;P&gt;Perfect case for regular expressions matching:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
do timeStr = "14h 20min. 2sec.", "0h 5min. 50sec.";
    output;
    end;
run;

data want;
if not prx1 then prx1 + prxParse("/(\d{1,2})h\s(\d{1,2})min\.\s(\d{1,2})sec\./");
set have;
if prxMatch(prx1, timeStr) then do;
    hour = input(prxPosn(prx1,1,timeStr), best.); 
    minute = input(prxPosn(prx1,2,timeStr), best.);
    second = input(prxPosn(prx1,3,timeStr), best.);
    output;
    end;
drop prx1;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 09 Aug 2016 16:34:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290513#M270027</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2016-08-09T16:34:16Z</dc:date>
    </item>
    <item>
      <title>Re: Parsing problem</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290540#M270028</link>
      <description>&lt;P&gt;worked like a charm. thanks everyone!&lt;/P&gt;</description>
      <pubDate>Tue, 09 Aug 2016 18:50:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Parsing-problem/m-p/290540#M270028</guid>
      <dc:creator>apolitical</dc:creator>
      <dc:date>2016-08-09T18:50:10Z</dc:date>
    </item>
  </channel>
</rss>

