<?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 array , dow loop in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/array-dow-loop/m-p/207557#M306666</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;Hi&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;Below is an example of a data I have and what im trying to achieve,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc format ;&lt;/P&gt;&lt;P&gt;value formula &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; low - 15 =0&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; 16-40 =1&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; 41-70=2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 71-100=3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 101-140=4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 141-175=5&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 176-225=6&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 226-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 301-high=8&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input ID Email $ type $ edate mmddyy10. ;&lt;/P&gt;&lt;P&gt;format edate mmddyy10.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 1 rdate 05/20/2015&lt;/P&gt;&lt;P&gt;1 2 rdate 05/21/2015&lt;/P&gt;&lt;P&gt;1 3 Sdate 10/05/2015&lt;/P&gt;&lt;P&gt;1 4 Sdate 11/09/2015&lt;/P&gt;&lt;P&gt;1 5 Sdate 12/11/2015&lt;/P&gt;&lt;P&gt;2 1 rdate 06/21/2015&lt;/P&gt;&lt;P&gt;2 2 rdate 07/05/2015&lt;/P&gt;&lt;P&gt;2 3 rdate 07/09/2015&lt;/P&gt;&lt;P&gt;2 4 Sdate 06/21/2016&lt;/P&gt;&lt;P&gt;2 5 Sdate 07/05/2016&lt;/P&gt;&lt;P&gt;2 6 Sdate 07/09/2016&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt; Im trying to subtract the last rdate&amp;nbsp; ( which is email 2 in this case) from first sdate ( email 3 in this case) . the number of days will translated to number of rows inserted ( refer to proc format )&amp;nbsp; . example if the number of days 130 . so its&amp;nbsp; 130/4+1.&amp;nbsp; then insert 4 records equally distributed . &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;below is the final desire output .&lt;/P&gt;&lt;P&gt;any ideas how to approach that ?&lt;/P&gt;&lt;P&gt; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input ID Email $ type $ edate mmddyy10. ;&lt;/P&gt;&lt;P&gt;format edate mmddyy10.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 1 rdate 05/20/2015&lt;/P&gt;&lt;P&gt;1 2 rdate 05/21/2015&lt;/P&gt;&lt;P&gt;1 3 Formula 06/26/2015&lt;/P&gt;&lt;P&gt;1 4 Formula 08/02/2015&lt;/P&gt;&lt;P&gt;1 5 Formula 09/07/2015&lt;/P&gt;&lt;P&gt;1 6 Formula 10/13/2015&lt;/P&gt;&lt;P&gt;1 7 Sdate 11/18/2015&lt;/P&gt;&lt;P&gt;1 8 Sdate 11/30/2015&lt;/P&gt;&lt;P&gt;1 9 Sdate 12/11/2015&lt;/P&gt;&lt;P&gt;2 1 rdate 06/21/2015&lt;/P&gt;&lt;P&gt;2 2 rdate 07/05/2015&lt;/P&gt;&lt;P&gt;2 3 rdate 07/31/2015&lt;/P&gt;&lt;P&gt;2 4 Formula 08/21/2015&lt;/P&gt;&lt;P&gt;2 5 Formula 09/11/2015&lt;/P&gt;&lt;P&gt;2 6 Sdate 10/01/2016&lt;/P&gt;&lt;P&gt;2 7 Sdate 11/10/2015&lt;/P&gt;&lt;P&gt;2 8 Sdate 01/09/2016&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 16 Jun 2015 16:45:01 GMT</pubDate>
    <dc:creator>Moe_Issa</dc:creator>
    <dc:date>2015-06-16T16:45:01Z</dc:date>
    <item>
      <title>array , dow loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/array-dow-loop/m-p/207557#M306666</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;Hi&lt;/P&gt;&lt;P style="font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;Below is an example of a data I have and what im trying to achieve,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc format ;&lt;/P&gt;&lt;P&gt;value formula &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; low - 15 =0&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; 16-40 =1&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; 41-70=2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 71-100=3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 101-140=4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 141-175=5&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 176-225=6&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 226-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 301-high=8&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input ID Email $ type $ edate mmddyy10. ;&lt;/P&gt;&lt;P&gt;format edate mmddyy10.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 1 rdate 05/20/2015&lt;/P&gt;&lt;P&gt;1 2 rdate 05/21/2015&lt;/P&gt;&lt;P&gt;1 3 Sdate 10/05/2015&lt;/P&gt;&lt;P&gt;1 4 Sdate 11/09/2015&lt;/P&gt;&lt;P&gt;1 5 Sdate 12/11/2015&lt;/P&gt;&lt;P&gt;2 1 rdate 06/21/2015&lt;/P&gt;&lt;P&gt;2 2 rdate 07/05/2015&lt;/P&gt;&lt;P&gt;2 3 rdate 07/09/2015&lt;/P&gt;&lt;P&gt;2 4 Sdate 06/21/2016&lt;/P&gt;&lt;P&gt;2 5 Sdate 07/05/2016&lt;/P&gt;&lt;P&gt;2 6 Sdate 07/09/2016&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt; Im trying to subtract the last rdate&amp;nbsp; ( which is email 2 in this case) from first sdate ( email 3 in this case) . the number of days will translated to number of rows inserted ( refer to proc format )&amp;nbsp; . example if the number of days 130 . so its&amp;nbsp; 130/4+1.&amp;nbsp; then insert 4 records equally distributed . &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;below is the final desire output .&lt;/P&gt;&lt;P&gt;any ideas how to approach that ?&lt;/P&gt;&lt;P&gt; ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;input ID Email $ type $ edate mmddyy10. ;&lt;/P&gt;&lt;P&gt;format edate mmddyy10.;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1 1 rdate 05/20/2015&lt;/P&gt;&lt;P&gt;1 2 rdate 05/21/2015&lt;/P&gt;&lt;P&gt;1 3 Formula 06/26/2015&lt;/P&gt;&lt;P&gt;1 4 Formula 08/02/2015&lt;/P&gt;&lt;P&gt;1 5 Formula 09/07/2015&lt;/P&gt;&lt;P&gt;1 6 Formula 10/13/2015&lt;/P&gt;&lt;P&gt;1 7 Sdate 11/18/2015&lt;/P&gt;&lt;P&gt;1 8 Sdate 11/30/2015&lt;/P&gt;&lt;P&gt;1 9 Sdate 12/11/2015&lt;/P&gt;&lt;P&gt;2 1 rdate 06/21/2015&lt;/P&gt;&lt;P&gt;2 2 rdate 07/05/2015&lt;/P&gt;&lt;P&gt;2 3 rdate 07/31/2015&lt;/P&gt;&lt;P&gt;2 4 Formula 08/21/2015&lt;/P&gt;&lt;P&gt;2 5 Formula 09/11/2015&lt;/P&gt;&lt;P&gt;2 6 Sdate 10/01/2016&lt;/P&gt;&lt;P&gt;2 7 Sdate 11/10/2015&lt;/P&gt;&lt;P&gt;2 8 Sdate 01/09/2016&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 16 Jun 2015 16:45:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/array-dow-loop/m-p/207557#M306666</guid>
      <dc:creator>Moe_Issa</dc:creator>
      <dc:date>2015-06-16T16:45:01Z</dc:date>
    </item>
    <item>
      <title>Re: array , dow loop</title>
      <link>https://communities.sas.com/t5/SAS-Programming/array-dow-loop/m-p/207558#M306667</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is a solution that doesn't involve a DOW loop:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;proc format ;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;value formula&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;low-15=0&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;16-40=1&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;41-70=2&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;71-100=3&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;101-140=4&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;141-175=5&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;176-225=6&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;226-300=7&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;301-high=8&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data have;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;input ID Email $ type $ edate mmddyy10. ;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;format edate mmddyy10.;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;datalines;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1 1 rdate 05/20/2015&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1 2 rdate 05/21/2015&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1 3 Sdate 10/05/2015&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1 4 Sdate 11/09/2015&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1 5 Sdate 12/11/2015&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2 1 rdate 06/21/2015&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2 2 rdate 07/05/2015&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2 3 rdate 07/09/2015&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2 4 Sdate 06/21/2016&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2 5 Sdate 07/05/2016&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;2 6 Sdate 07/09/2016&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data want(keep=id newEmail type edate rename=newEmail=Email);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;retain lastRdate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;set have; by id type notsorted;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if first.id then do;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; call missing(lastrdate,firstSdate);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; newEmail = 0;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if type="rdate" and last.type then lastRdate = edate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if type="Sdate" and first.type and not missing(lastRdate) then do;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; firstSdate = edate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nbDates = input(put(intck("DAY",lastRdate,firstSdate),formula.),best.);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dayStep = ceil(intck("DAY",lastRdate,firstSdate) / (nbDates+1));&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type = "Formula";&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i = 1 to nbDates;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edate = intnx('DAY', lastRdate, i*dayStep);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newEmail + 1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type = "Sdate";&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; edate = firstSdate;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;newEmail + 1;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;output;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PG&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 17 Jun 2015 03:48:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/array-dow-loop/m-p/207558#M306667</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-06-17T03:48:41Z</dc:date>
    </item>
  </channel>
</rss>

