<?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: mark  consecutive years' value with different result in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357695#M84012</link>
    <description>&lt;P&gt;First, thank you for providing data in a sas program form.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The technique I would recomend is to&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Maintain an array, with one element per year, which will get a 1 if the corresponding year is part of 4 consecutinve passes.Loop&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;initialize to missing&lt;/LI&gt;
&lt;LI&gt;read through all the data for a group, generating an individual 'P' or 'F" for each year&lt;/LI&gt;
&lt;LI&gt;If the current P/F is 'P' and is preceded by 3 P's, then set the corresponding 4 elements of the array to a 1&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI&gt;At the end of the data pass-through above, reread each year
&lt;OL&gt;
&lt;LI&gt;If the year has a "1" in the corresponding array element set result to "PASS".&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=I pf list4 Y rslt:);

  array rslt{2000:2008};  /* use min and max expected year for array bounds */

  /* Read a group and inspect its sequence of counts*/
  do I=1 by 1 until (last.group);
    set have;
    by group;
    pf= ifc(count&amp;gt;=1,'P','F');
    list4=cats(lag3(PF),lag2(PF),lag(PF),PF);
    if I&amp;gt;=4 and list4='PPPP' then do Y=year-3 to year;
      rslt{Y}=1;
    end;
  end;

  do until (last.group);
    set have;
    by group;
    result=ifc(rslt{Year}=1,'PASS','FAIL');
    output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 10 May 2017 22:08:24 GMT</pubDate>
    <dc:creator>mkeintz</dc:creator>
    <dc:date>2017-05-10T22:08:24Z</dc:date>
    <item>
      <title>mark  consecutive years' value with different result</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357672#M84008</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hello All, Could you do me a great favor to mark differnent results for each group? If count&amp;nbsp;&amp;gt;=1 for at least 4 consecutive years, then result= ‘pass’ for these years,&amp;nbsp;else result= ‘fail’. Thanks very much in advance.&lt;/SPAN&gt;&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;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input &amp;nbsp;group $ year count;
datalines;
A 2002 8.6
A 2003 6.3
A 2004 2.3
A 2005 4.6
A 2006 2.3
A 2007 4.6
B 2000 0.4
B 2001 1.9
B 2002 1.1
B 2003 1.0
B 2004 1.6
B 2005 1.5
B 2006 0.7
C 2004 4.8
C 2005 4.0
C 2006 4.5
C 2007 3.7
D 2001 4.0
D 2002 6.1
D 2003 3.5
E 2001 1.5
E 2002 0.6
F 2004 0.8
;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#FF6600"&gt;&lt;SPAN&gt;&lt;STRONG&gt;The output should be:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;group&lt;/TD&gt;
&lt;TD&gt;year&lt;/TD&gt;
&lt;TD&gt;count&lt;/TD&gt;
&lt;TD&gt;result&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;2002&lt;/TD&gt;
&lt;TD&gt;8.6&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;2003&lt;/TD&gt;
&lt;TD&gt;6.3&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;2004&lt;/TD&gt;
&lt;TD&gt;2.3&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;2005&lt;/TD&gt;
&lt;TD&gt;4.6&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;2006&lt;/TD&gt;
&lt;TD&gt;2.3&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;2007&lt;/TD&gt;
&lt;TD&gt;4.6&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;2000&lt;/TD&gt;
&lt;TD&gt;0.4&lt;/TD&gt;
&lt;TD&gt;fail&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;2001&lt;/TD&gt;
&lt;TD&gt;1.9&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;2002&lt;/TD&gt;
&lt;TD&gt;1.1&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;2003&lt;/TD&gt;
&lt;TD&gt;1.0&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;2004&lt;/TD&gt;
&lt;TD&gt;1.6&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;2005&lt;/TD&gt;
&lt;TD&gt;1.5&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;2006&lt;/TD&gt;
&lt;TD&gt;0.7&lt;/TD&gt;
&lt;TD&gt;fail&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;2004&lt;/TD&gt;
&lt;TD&gt;4.8&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;2005&lt;/TD&gt;
&lt;TD&gt;4.0&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;2006&lt;/TD&gt;
&lt;TD&gt;4.5&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;C&lt;/TD&gt;
&lt;TD&gt;2007&lt;/TD&gt;
&lt;TD&gt;3.7&lt;/TD&gt;
&lt;TD&gt;pass&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;2001&lt;/TD&gt;
&lt;TD&gt;4.0&lt;/TD&gt;
&lt;TD&gt;fail&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;2002&lt;/TD&gt;
&lt;TD&gt;6.1&lt;/TD&gt;
&lt;TD&gt;fail&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;D&lt;/TD&gt;
&lt;TD&gt;2003&lt;/TD&gt;
&lt;TD&gt;3.5&lt;/TD&gt;
&lt;TD&gt;fail&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;TD&gt;2001&lt;/TD&gt;
&lt;TD&gt;1.5&lt;/TD&gt;
&lt;TD&gt;fail&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;E&lt;/TD&gt;
&lt;TD&gt;2002&lt;/TD&gt;
&lt;TD&gt;0.6&lt;/TD&gt;
&lt;TD&gt;fail&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;F&lt;/TD&gt;
&lt;TD&gt;2004&lt;/TD&gt;
&lt;TD&gt;0.8&lt;/TD&gt;
&lt;TD&gt;fail&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Wed, 10 May 2017 20:57:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357672#M84008</guid>
      <dc:creator>Jennifer925</dc:creator>
      <dc:date>2017-05-10T20:57:44Z</dc:date>
    </item>
    <item>
      <title>Re: mark  consecutive years' value with different result</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357677#M84010</link>
      <description>&lt;P&gt;Can we assume a maximum of 8 observations per GROUP?&amp;nbsp; It would certainly make the programming easier.&lt;/P&gt;</description>
      <pubDate>Wed, 10 May 2017 21:00:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357677#M84010</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-05-10T21:00:59Z</dc:date>
    </item>
    <item>
      <title>Re: mark  consecutive years' value with different result</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357695#M84012</link>
      <description>&lt;P&gt;First, thank you for providing data in a sas program form.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The technique I would recomend is to&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Maintain an array, with one element per year, which will get a 1 if the corresponding year is part of 4 consecutinve passes.Loop&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;initialize to missing&lt;/LI&gt;
&lt;LI&gt;read through all the data for a group, generating an individual 'P' or 'F" for each year&lt;/LI&gt;
&lt;LI&gt;If the current P/F is 'P' and is preceded by 3 P's, then set the corresponding 4 elements of the array to a 1&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI&gt;At the end of the data pass-through above, reread each year
&lt;OL&gt;
&lt;LI&gt;If the year has a "1" in the corresponding array element set result to "PASS".&lt;/LI&gt;
&lt;/OL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=I pf list4 Y rslt:);

  array rslt{2000:2008};  /* use min and max expected year for array bounds */

  /* Read a group and inspect its sequence of counts*/
  do I=1 by 1 until (last.group);
    set have;
    by group;
    pf= ifc(count&amp;gt;=1,'P','F');
    list4=cats(lag3(PF),lag2(PF),lag(PF),PF);
    if I&amp;gt;=4 and list4='PPPP' then do Y=year-3 to year;
      rslt{Y}=1;
    end;
  end;

  do until (last.group);
    set have;
    by group;
    result=ifc(rslt{Year}=1,'PASS','FAIL');
    output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 10 May 2017 22:08:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357695#M84012</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2017-05-10T22:08:24Z</dc:date>
    </item>
    <item>
      <title>Re: mark  consecutive years' value with different result</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357852#M84052</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input  group $ year count;
flag=count ge 1;
datalines;
A 2002 8.6
A 2003 6.3
A 2004 2.3
A 2005 4.6
A 2006 2.3
A 2007 4.6
B 2000 0.4
B 2001 1.9
B 2002 1.1
B 2003 1.0
B 2004 1.6
B 2005 1.5
B 2006 0.7
C 2004 4.8
C 2005 4.0
C 2006 4.5
C 2007 3.7
D 2001 4.0
D 2002 6.1
D 2003 3.5
E 2001 1.5
E 2002 0.6
F 2004 0.8
;
run;
data want;
 do i=1 by 1 until(last.flag);
  set have;
  by group flag notsorted;
 end;
 do until(last.flag);
  set have;
  by group flag notsorted;
  if i ge 4 and flag=1 then result='pass ';
   else result='fail';
  output;
 end;
drop i flag;
run;
 &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 11 May 2017 12:38:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/357852#M84052</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-05-11T12:38:38Z</dc:date>
    </item>
    <item>
      <title>Re: mark  consecutive years' value with different result</title>
      <link>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/358197#M84147</link>
      <description>&lt;P&gt;And another&amp;nbsp;NOT so smart method, but &lt;STRONG&gt;just for fun&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _N_ = &lt;STRONG&gt;1&lt;/STRONG&gt; then&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;/P&gt;&lt;P&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; length&amp;nbsp; _flag_min _flag_max &lt;STRONG&gt;8&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&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; declare hash myhash(multidata:'YES' );&lt;/P&gt;&lt;P&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; myhash.defineKey('group');&lt;/P&gt;&lt;P&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; myhash.defineData('group','_flag_min','_flag_max');&lt;/P&gt;&lt;P&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; myhash.defineDone( );&lt;/P&gt;&lt;P&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; call missing(_flag_min, _flag_max);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do n=&lt;STRONG&gt;1&lt;/STRONG&gt; by &lt;STRONG&gt;1&lt;/STRONG&gt; until(last.group);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by group;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.group then _flag=&lt;STRONG&gt;0&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if count&amp;gt;=&lt;STRONG&gt;1&lt;/STRONG&gt; then _flag+&lt;STRONG&gt;1&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else _flag=&lt;STRONG&gt;0&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _flag=&lt;STRONG&gt;1&lt;/STRONG&gt; then&amp;nbsp;&amp;nbsp;&amp;nbsp; _flag_min=n;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if _flag=&lt;STRONG&gt;4&lt;/STRONG&gt; then&lt;/P&gt;&lt;P&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; do;&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _flag_max=n;&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myhash.add();&lt;/P&gt;&lt;P&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; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if _flag&amp;gt;&lt;STRONG&gt;4&lt;/STRONG&gt; then&lt;/P&gt;&lt;P&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; do;&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _flag_max=n;&lt;/P&gt;&lt;P&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myhash.add();&lt;/P&gt;&lt;P&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; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do n=&lt;STRONG&gt;1&lt;/STRONG&gt; by &lt;STRONG&gt;1&lt;/STRONG&gt; until(last.group);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set have end=last;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by group;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result='FAIL';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = myhash.find();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rc = &lt;STRONG&gt;0&lt;/STRONG&gt;) then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _flag_min&amp;lt;=n&amp;lt;=_flag_max then result='PASS';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = myhash.find_next();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do while(rc = &lt;STRONG&gt;0&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if _flag_min&amp;lt;=n&amp;lt;=_flag_max then result='PASS';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = myhash.find_next();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;drop n _: rc;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 12 May 2017 10:48:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/mark-consecutive-years-value-with-different-result/m-p/358197#M84147</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-05-12T10:48:19Z</dc:date>
    </item>
  </channel>
</rss>

