<?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 output last iteration for i in a do loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313324#M68055</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am trying to replicate a math problem (for more info see the 4 min video&amp;nbsp;&lt;A href="https://www.youtube.com/watch?v=m4CjXk_b8zo" target="_blank"&gt;https://www.youtube.com/watch?v=m4CjXk_b8zo&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am doing a loop for numbers 1 to 10. For each number, if it is even then it becomes number/2, and if it is odd then it becomes 3*number+1. I stop the loop for each number when the number becomes 4, and then I go to the next number.&lt;/P&gt;
&lt;P&gt;For each number I want to count how many steps until the number becomes 4. &amp;nbsp;&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;P&gt;Here is my code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data problem;
do i = 1 to 10;
count = 0;
number = i;
  do while (number ne 4);
    if mod(number,2) = 0 then number = number/2;
    else number = 3*number +1;
    count = count +1;
    output; 
   end;
end;
run;           &lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I get the result that I want, but the output gives me all the steps for each i. Is it possible to get only the last step for each i?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
    <pubDate>Tue, 22 Nov 2016 02:28:11 GMT</pubDate>
    <dc:creator>ilikesas</dc:creator>
    <dc:date>2016-11-22T02:28:11Z</dc:date>
    <item>
      <title>output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313324#M68055</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am trying to replicate a math problem (for more info see the 4 min video&amp;nbsp;&lt;A href="https://www.youtube.com/watch?v=m4CjXk_b8zo" target="_blank"&gt;https://www.youtube.com/watch?v=m4CjXk_b8zo&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I am doing a loop for numbers 1 to 10. For each number, if it is even then it becomes number/2, and if it is odd then it becomes 3*number+1. I stop the loop for each number when the number becomes 4, and then I go to the next number.&lt;/P&gt;
&lt;P&gt;For each number I want to count how many steps until the number becomes 4. &amp;nbsp;&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;P&gt;Here is my code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data problem;
do i = 1 to 10;
count = 0;
number = i;
  do while (number ne 4);
    if mod(number,2) = 0 then number = number/2;
    else number = 3*number +1;
    count = count +1;
    output; 
   end;
end;
run;           &lt;BR /&gt;&lt;BR /&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I get the result that I want, but the output gives me all the steps for each i. Is it possible to get only the last step for each i?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 02:28:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313324#M68055</guid>
      <dc:creator>ilikesas</dc:creator>
      <dc:date>2016-11-22T02:28:11Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313328#M68058</link>
      <description>&lt;P&gt;&lt;FONT color="#000080" face="SAS Monospace" size="2"&gt;&lt;STRONG&gt;This program does what you ask, and write out the numeric sequence for each starting point:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#000080" face="SAS Monospace" size="2"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt; &lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;_null_&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&amp;nbsp; do&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt; I=&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;to&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;10&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; count=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;0&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT color="#800080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#800080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#800080" face="SAS Monospace" size="2"&gt;"Start="&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt; I @;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt; N=I &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;by&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;until&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt; (N=&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;4&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt; mod(N,&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;2&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;)=&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;then&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt; N=N/&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;2&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt; N=&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;+&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;3&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;*N;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put +(-&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#008080" face="SAS Monospace" size="2"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#800080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#800080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#800080" face="SAS Monospace" size="2"&gt;','&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt; N @;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count+1;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&amp;nbsp; +3 count=;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&lt;FONT color="#0000ff" face="SAS Monospace" size="2"&gt;&amp;nbsp; end&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;&lt;FONT color="#000080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#000080" face="SAS Monospace" size="2"&gt;&lt;FONT color="#000080" face="SAS Monospace" size="2"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRIKE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace" size="2"&gt;&lt;FONT face="SAS Monospace" size="2"&gt;Sorry - misread your post.&amp;nbsp; I think you want the next_to_last value of N before N=4, and as you said you don't want the sequence:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="SAS Monospace"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt; want (&lt;/FONT&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;keep&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt;=START next_to_last count);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&amp;nbsp; do&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt; START=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;to&lt;/FONT&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;10&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; count=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&amp;nbsp; &amp;nbsp; do&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt; N=START &lt;/FONT&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;by&lt;/FONT&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;until&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt; (N=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;4&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace"&gt;);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt; mod(N,&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;2&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace"&gt;)=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;0&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;then&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt; N=N/&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;2&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt; N=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace"&gt;+&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;3&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace"&gt;*N;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; count+&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;&lt;FONT color="#008080" face="SAS Monospace"&gt;1&lt;/FONT&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="SAS Monospace"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="SAS Monospace"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; next_to_last=coalesce(lag(n),start);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&amp;nbsp; &amp;nbsp; end&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; put&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt; start= count= next_to_last=;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;output&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&lt;FONT color="#0000ff" face="SAS Monospace"&gt;&amp;nbsp; end&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt;;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#000080" face="SAS Monospace"&gt;&lt;FONT color="#000080" face="SAS Monospace"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="SAS Monospace"&gt;;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 03:24:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313328#M68058</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-22T03:24:40Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313334#M68060</link>
      <description>&lt;P&gt;You already got the right suggestion, moving the OUTPUT statement. &amp;nbsp;Here's one more, just on general principles. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your DO WHILE loop is dangerous. &amp;nbsp;What if the logic never arrives at NUMBER=4? &amp;nbsp;In theory, at least, you could be writing an infinite loop. &amp;nbsp;It would be safer to have two ways that the loop might end, such as:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;do k=1 to 5000 while (number ne 4);&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 03:36:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313334#M68060</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-11-22T03:36:07Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313339#M68064</link>
      <description>&lt;P&gt;Hi mkeintz,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;thanks for the code, I didn't know that so much computation can be done with PUT.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your first code does actually give the result that my code gets, its just that I want to have the last (and not before last) iteration for each i.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 03:50:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313339#M68064</guid>
      <dc:creator>ilikesas</dc:creator>
      <dc:date>2016-11-22T03:50:18Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313341#M68066</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data problem;
do i = 1 to 10;
count = 0;
number = i;
  do while (number ne 4);
    if mod(number,2) = 0 then number = number/2;
    else number = 3*number +1;
    count = count +1;
   end;
   output;
end;
run;  &lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 22 Nov 2016 03:53:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313341#M68066</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-11-22T03:53:41Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313342#M68067</link>
      <description>&lt;P&gt;It's not dangerous in this case.&amp;nbsp; According to the youtube videa every starting number up to 2**60 has been test and will ultimately arrive at 1&amp;nbsp; (and the next step would be 4).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;MK&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 04:00:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313342#M68067</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-22T04:00:47Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313343#M68068</link>
      <description>&lt;P&gt;Don't take this seriously, but ...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You heard it on the internet, so it must be true?&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 04:02:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313343#M68068</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-11-22T04:02:30Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313344#M68069</link>
      <description>Then I don't understand what you mean by "the last iteration"?  Since by definition of the problem the last iteration is N=4.</description>
      <pubDate>Tue, 22 Nov 2016 04:02:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313344#M68069</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-22T04:02:55Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313346#M68070</link>
      <description>&lt;P&gt;I like idea of&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding﻿&lt;/a&gt;&amp;nbsp;. Safety first. If any problem occurred in the code of LOOP ,that would lead to infinite iterative, you have to stop sas session by hand, that doesn't sound good .&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 04:10:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313346#M68070</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-11-22T04:10:16Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313347#M68071</link>
      <description>&lt;P&gt;In the case of this video,which reviewed the history of this problem, I am confident of the assertion - even though it was reported on the internet.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;MK&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 04:15:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313347#M68071</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-22T04:15:00Z</dc:date>
    </item>
    <item>
      <title>Re: output last iteration for i in a do loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313350#M68074</link>
      <description>&lt;P&gt;Strictly speaking, you are right that according to the video the number always reduced to 4 when the process was done in a supercomputer.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To summarize for future readers, the solution is the one given by KSharp. It is basically what I did but the "output" is placed in a different stage which allows to output only the last iteration for each i:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data problem;
do i = 1 to 10;
count = 0;
number = i;
  do while (number ne 4);
    if mod(number,2) = 0 then number = number/2;
    else number = 3*number +1;
    count = count +1;
   end;
   output;
end;
run;  &lt;/PRE&gt;
&lt;P&gt;Please note that the remark of Astounding is very important in that the code can potentally run an infinite loop if for a certain i the number never reaches 4, so in such a case it would be safe to modify the do while statement into a do statement such as "&lt;SPAN&gt;do k=1 to 5000 while (number ne 4);"&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 22 Nov 2016 04:42:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/output-last-iteration-for-i-in-a-do-loop/m-p/313350#M68074</guid>
      <dc:creator>ilikesas</dc:creator>
      <dc:date>2016-11-22T04:42:23Z</dc:date>
    </item>
  </channel>
</rss>

