<?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: Duration in Business days and overlapping days in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480057#M124026</link>
    <description>&lt;P&gt;The note here is pretty indicative:&lt;/P&gt;
&lt;PRE&gt;NOTE: Variable startdate  is uninitialized.

NOTE: Variable enddate is uninitialized.
&lt;/PRE&gt;
&lt;P&gt;Your data set AE_DURH likely does not have the variables you think it does. Your references to those two variables in the created them in the intck function reference probably created them. So TOTDUR starts off missing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your code&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; START&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; and STOP&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;DUR&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;STOP&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;-&lt;/SPAN&gt;START&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;+&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token keyword"&gt;else&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;DUR&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;0&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;means that at the end of the loop dur is going to have the comparison for the last pair of stop start, which is 0 because of the ELSE for most of your records.&lt;/P&gt;
&lt;P&gt;A possible fix for the "dur" issue is to remove the Else. Maybe. I'm not sure what you are actually attempting to accomplish.&lt;/P&gt;</description>
    <pubDate>Fri, 20 Jul 2018 19:55:01 GMT</pubDate>
    <dc:creator>ballardw</dc:creator>
    <dc:date>2018-07-20T19:55:01Z</dc:date>
    <item>
      <title>Duration in Business days and overlapping days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/479987#M123999</link>
      <description>&lt;P&gt;Hi Everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to calculate the number of absence days (business days only) &amp;nbsp;for employees. I have multiple records for each employee and the records can be duplicate or have overlapping dates. I am using&amp;nbsp;Alice. M Cheng method for calculating intervals and accounting for overlaps. The missing part is how to incorporate business days in the code.&amp;nbsp;&amp;nbsp;I tried to incorporate the intck function but it didn't work .&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The data looks as follows&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;startdate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enddate&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1-1-2015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1-17-2015&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1-1-2015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 1-25-2015&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2-7-2015&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 2-25-2015&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 3-4-2016&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;5-8-2016&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;3-4-2016&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;5-12-2016&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3-4-2016&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5-12- 2016&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The code used to calculate intervals&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;sort&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="MS ????" size="2"&gt;data&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;=Dates1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;by&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;&amp;nbsp;ID startdate ;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;transpose&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="MS ????" size="2"&gt;data&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;=Dates1 &lt;/FONT&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;out&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;=STARTDT (drop=_name_) &lt;/FONT&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;prefix&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;=START;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;by &lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;ID;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;var&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; startdate;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;proc&lt;/STRONG&gt;&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;transpose&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="MS ????" size="2"&gt;data&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;=Dates1 &lt;/FONT&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;out&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;=STOPDT (drop=_name_) &lt;/FONT&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;prefix&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;=STOP;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;by&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; ID;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;var&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; enddate;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; AE_DURH;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;merge&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; STARTDT STOPDT;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;by&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; ENROLID;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&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 color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;data&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; METHOD1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;retain&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; TOTDUR;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;set&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; AE_DURH; &lt;/FONT&gt;&lt;FONT color="#008000" face="MS ????" size="2"&gt;*--- Use Horizontal Data Representation. ---*;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;array&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; START{*} START:;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;array&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; STOP{*} STOP:;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;TOTDUR=STOP1-START1+1&lt;/P&gt;&lt;P&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;do&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; i=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;2&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="MS ????" size="2"&gt;to&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; dim(START);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;do&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; j=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="MS ????" size="2"&gt;to&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; i-&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;*--- Make overlapping but not embedded intervals disjoint. ---*;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;if&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt; &amp;lt; START(i) &amp;lt;= STOP(j) and STOP(i) &amp;gt; STOP(j) &amp;gt; &lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;.&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="MS ????" size="2"&gt;then&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;do&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="MS ????" size="2"&gt;START(i)=STOP(j)+&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;end&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;*--- Embedded in previous interval. Will not contribute to duration. ---*;&lt;/P&gt;&lt;P&gt;else&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;do&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;if&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt; &amp;lt; START(i) &amp;lt;= STOP(j) and &lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt; &amp;lt; STOP(i) &amp;lt;= STOP(j) &lt;/FONT&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;then&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;do&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="MS ????" size="2"&gt;START(i)=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;STOP&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;(i)=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;end&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;end&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;end&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;if&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; START(i) ne &lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt; and STOP(i) ne &lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;.&lt;/FONT&gt;&lt;/STRONG&gt; &lt;FONT color="#0000ff" face="MS ????" size="2"&gt;then&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; DUR=STOP(i)-START(i)+&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;else&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; DUR=&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;0&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;TOTDUR+DUR;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;end&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" face="MS ????" size="2"&gt;label&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt; TOTDUR=&lt;/FONT&gt;&lt;FONT color="#800080" face="MS ????" size="2"&gt;'DURATION |(DAYS)'&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000080" face="MS ????" size="2"&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Jul 2018 17:46:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/479987#M123999</guid>
      <dc:creator>Jordani</dc:creator>
      <dc:date>2018-07-20T17:46:51Z</dc:date>
    </item>
    <item>
      <title>Re: Duration in Business days and overlapping days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/479990#M124001</link>
      <description>&lt;P&gt;Didn't work is awful vague.&lt;BR /&gt;&lt;BR /&gt;Are there errors in the log?: Post the code and log in a code box opened with the {i} to maintain formatting of error messages.&lt;BR /&gt;&lt;BR /&gt;No output? Post any log in a code box.&lt;BR /&gt;&lt;BR /&gt;Unexpected output? Provide input data in the form of data step code pasted into a code box, the actual results and the expected results. Instructions here: &lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-dat" target="_blank"&gt;https://communities.sas.com/t5/SAS-Communities-Library/How-to-create-a-data-step-version-of-your-dat&lt;/A&gt;... will show how to turn an existing SAS data set into data step code that can be pasted into a forum code box using the {i} icon or attached as text to show exactly what you have and that we can test code against.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Jul 2018 17:55:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/479990#M124001</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-07-20T17:55:22Z</dc:date>
    </item>
    <item>
      <title>Re: Duration in Business days and overlapping days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480026#M124017</link>
      <description>&lt;P&gt;Hi ballardw,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for your response. I have zero values for duration DUR and total duration TOTDUR. here is the log, the output and the function that I have used. The code seems to work in disjointing the overlapping periods but the formula to calculate the dates is not working.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;P.S.&amp;nbsp; The link in your comment is not working.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data METHOD1;
retain TOTDUR;
set AE_DURH; *--- Use Horizontal Data Representation. ---*;
array START{*} START:;
array STOP{*} STOP:;
TOTDUR=intck('dtday', startdate, enddate)+1;
do i=2 to dim(START);
do j=1 to i-1;
*--- Make overlapping but not embedded intervals disjoint. ---*;
if . &amp;lt; START(i) &amp;lt;= STOP(j) and STOP(i) &amp;gt; STOP(j) &amp;gt; . then
do;
START(i)=STOP(j)+1;
end;
*--- Embedded in previous interval. Will not contribute to duration. ---*;
else
do;
if . &amp;lt; START(i) &amp;lt;= STOP(j) and . &amp;lt; STOP(i) &amp;lt;= STOP(j) then
do;
START(i)=.;
STOP(i)=.;
end;
end;
end;
if START(i) ne . and STOP(i) ne . then DUR=STOP(i)-START(i)+1;
else DUR=0;
TOTDUR+DUR;
end;
label TOTDUR='DURATION |(DAYS)';
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).&lt;/P&gt;&lt;P&gt;773:8 773:42 775:10 780:8 780:36 787:4 787:22 787:44 787:52&lt;/P&gt;&lt;P&gt;NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).&lt;/P&gt;&lt;P&gt;775:1 782:1 783:1&lt;/P&gt;&lt;P&gt;NOTE: Variable&amp;nbsp;startdate &amp;nbsp;is uninitialized.&lt;/P&gt;&lt;P&gt;NOTE: Variable enddate is uninitialized.&lt;/P&gt;&lt;P&gt;NOTE: Missing values were generated as a result of performing an operation on missing values.&lt;/P&gt;&lt;P&gt;Each place is given by: (Number of times) at (Line):(Column).&lt;/P&gt;&lt;P&gt;1039 at 769:8 1039 at 769:36&lt;/P&gt;&lt;P&gt;NOTE: There were 1039 observations read from the data set WORK.AE_DURH.&lt;/P&gt;&lt;P&gt;NOTE: The data set WORK.METHOD1 has 1039 observations and 16 variables.&lt;/P&gt;&lt;P&gt;NOTE: DATA statement used (Total process time):&lt;/P&gt;&lt;P&gt;real time 0.00 seconds&lt;/P&gt;&lt;P&gt;cpu time 0.00 seconds&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;output&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;_LABEL_&lt;/TD&gt;&lt;TD&gt;START1&lt;/TD&gt;&lt;TD&gt;START2&lt;/TD&gt;&lt;TD&gt;START3&lt;/TD&gt;&lt;TD&gt;START4&lt;/TD&gt;&lt;TD&gt;STOP1&lt;/TD&gt;&lt;TD&gt;STOP2&lt;/TD&gt;&lt;TD&gt;STOP3&lt;/TD&gt;&lt;TD&gt;STOP4&lt;/TD&gt;&lt;TD&gt;startdate&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;TD&gt;i&lt;/TD&gt;&lt;TD&gt;j&lt;/TD&gt;&lt;TD&gt;DUR&lt;/TD&gt;&lt;TD&gt;TOTDUR&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;TD&gt;42103&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;42150&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;TD&gt;41625&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;41702&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;TD&gt;41670&lt;/TD&gt;&lt;TD&gt;41862&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;41670&lt;/TD&gt;&lt;TD&gt;41981&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;120&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;TD&gt;41701&lt;/TD&gt;&lt;TD&gt;41905&lt;/TD&gt;&lt;TD&gt;41943&lt;/TD&gt;&lt;TD&gt;42044&lt;/TD&gt;&lt;TD&gt;41701&lt;/TD&gt;&lt;TD&gt;41906&lt;/TD&gt;&lt;TD&gt;41946&lt;/TD&gt;&lt;TD&gt;42100&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;57&lt;/TD&gt;&lt;TD&gt;63&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;TD&gt;41807&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;41855&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;TD&gt;41563&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;41582&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;TD&gt;42086&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;42139&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 20 Jul 2018 19:01:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480026#M124017</guid>
      <dc:creator>Jordani</dc:creator>
      <dc:date>2018-07-20T19:01:02Z</dc:date>
    </item>
    <item>
      <title>Re: Duration in Business days and overlapping days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480057#M124026</link>
      <description>&lt;P&gt;The note here is pretty indicative:&lt;/P&gt;
&lt;PRE&gt;NOTE: Variable startdate  is uninitialized.

NOTE: Variable enddate is uninitialized.
&lt;/PRE&gt;
&lt;P&gt;Your data set AE_DURH likely does not have the variables you think it does. Your references to those two variables in the created them in the intck function reference probably created them. So TOTDUR starts off missing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your code&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; START&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; and STOP&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt; &lt;SPAN class="token operator"&gt;ne&lt;/SPAN&gt; &lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;DUR&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;STOP&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;-&lt;/SPAN&gt;START&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;+&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="token keyword"&gt;else&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;DUR&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;0&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;means that at the end of the loop dur is going to have the comparison for the last pair of stop start, which is 0 because of the ELSE for most of your records.&lt;/P&gt;
&lt;P&gt;A possible fix for the "dur" issue is to remove the Else. Maybe. I'm not sure what you are actually attempting to accomplish.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Jul 2018 19:55:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480057#M124026</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2018-07-20T19:55:01Z</dc:date>
    </item>
    <item>
      <title>Re: Duration in Business days and overlapping days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480072#M124030</link>
      <description>&lt;P&gt;You can also do this with arrays&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID (startdate enddate) (:mmddyy.);
format startdate enddate yymmdd10.;
datalines;
1         1-1-2015          1-17-2015
1          1-1-2015         1-25-2015
1          2-7-2015         2-25-2015
2          3-4-2016         5-8-2016
2          3-4-2016        5-12-2016
2          3-4-2016        5-12-2016
;

proc sql;
select min(startdate), max(enddate) 
into :from, :to
from have;
quit;

data want;
array d {&amp;amp;from : &amp;amp;to} _temporary_;
call missing(of d{*});
do until(last.id);
    set have; by id;
    do i = startdate to enddate;
        if 
            weekday(i) not in (1, 7) and         /* weekends */
            not (month(i)=12 and day(i)=25) and  /* Christmas */
            not (month(i)=1 and day(i)=1)        /* New Year */
                                                 /* ... etc. */
        then d{i} = 1;
        end;
    end;
duration = sum(of d{*});
keep ID duration;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;just complete the list of holidays for your locale.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Edit: The HOLIDAY function can help you define those if you are in USA or Canada.&lt;/P&gt;</description>
      <pubDate>Fri, 20 Jul 2018 22:21:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480072#M124030</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-07-20T22:21:20Z</dc:date>
    </item>
    <item>
      <title>Re: Duration in Business days and overlapping days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480083#M124035</link>
      <description>&lt;P&gt;I am sorry for the typos. I did fixed that in the code and still not getting the result that I am supposed to get. I need to calculate the total number of business &amp;nbsp;absence days per employee. In this example employee number two has 3 records, the first record has the same start date but different end date than the rest of the records. The&amp;nbsp;second record is embedded in the first one, and the third records is just a duplicate for the&amp;nbsp; second record. I&amp;nbsp;cannot&amp;nbsp;&amp;nbsp; calculate the total number by summing&amp;nbsp;the absence days&amp;nbsp;for all records because&amp;nbsp;they are not unique. I wanna get something like this for example&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;Total duration&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 24 days&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 49 days&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was able to get the total number of days by&lt;/P&gt;&lt;P&gt;TOTDUR=STOP1-START1+1&lt;/P&gt;&lt;P&gt;But I am interested in business days only, not all days between start and end date. You can try this code and put&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;TOTDUR=STOP1-START1+1 instead of&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="MS ????" size="2"&gt;TOTDUR=intck(&lt;/FONT&gt;&lt;FONT color="#800080" face="MS ????" size="2"&gt;'WEEKDAY'&lt;/FONT&gt;&lt;FONT face="MS ????" size="2"&gt;, START1+&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="MS ????" size="2"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="MS ????" size="2"&gt;, STOP1)&lt;/FONT&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 ID (startdate enddate) (:mmddyy.);
format startdate enddate yymmdd10.;
datalines;
1         1-1-2015          1-17-2015
1          1-1-2015         1-25-2015
1          2-7-2015         2-25-2015
2          3-4-2016         5-8-2016
2          3-4-2016        5-12-2016
2          3-4-2016        5-12-2016
;

proc sort data= have ;
by ID startdate;
run;
proc transpose data=have out=STARTDT (drop=_name_) prefix=START;
by ID;
var startdate;
run;
proc transpose data=have out=STOPDT (drop=_name_) prefix=STOP;
by ID;
var enddate;
run;
data AE_DURH;
merge STARTDT STOPDT;
by ID;
run;
data METHOD1;
retain TOTDUR;
set AE_DURH; *--- Use Horizontal Data Representation. ---*;
array START{*} START:;
array STOP{*} STOP:;
TOTDUR=intck('WEEKDAY', START1+1, STOP1); 
do i=2 to dim(START);
do j=1 to i-1;
*--- Make overlapping but not embedded intervals disjoint. ---*;
if . &amp;lt; START(i) &amp;lt;= STOP(j) and STOP(i) &amp;gt; STOP(j) &amp;gt; . then
do;
START(i)=STOP(j)+1;
end;
*--- Embedded in previous interval. Will not contribute to duration. ---*;
else
do;
if . &amp;lt; START(i) &amp;lt;= STOP(j) and . &amp;lt; STOP(i) &amp;lt;= STOP(j) then
do;
START(i)=.;
STOP(i)=.;
end;
end;
end;
if START(i) ne . and STOP(i) ne . then DUR=STOP(i)-START(i)+1;
else DUR=0;
TOTDUR+DUR;
end;
label TOTDUR='DURATION |(DAYS)';
run;
proc print data=METHOD1;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 20 Jul 2018 22:10:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480083#M124035</guid>
      <dc:creator>Jordani</dc:creator>
      <dc:date>2018-07-20T22:10:02Z</dc:date>
    </item>
    <item>
      <title>Re: Duration in Business days and overlapping days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480092#M124038</link>
      <description>&lt;P&gt;Hi PGStats,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you so much.&amp;nbsp;It worked and I got the numbers.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can I incorporate a formula in the array?. I wanna put index date to calculate absence days up until the index date. The index date is not fixed for all employees, instead , it is&amp;nbsp;3 months from the day of first absence. I added an extra&amp;nbsp;record for employee number 2. This absence is after the index date so it shouldn't be counted.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if end.date &amp;lt; index.date&amp;nbsp; then from startdate to enddate&lt;/P&gt;&lt;P&gt;if startdate &amp;gt; index.date then from start.date to start.date&lt;/P&gt;&lt;P&gt;else if&amp;nbsp;&amp;nbsp;from start.date to index.date.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID (startdate enddate indexdate ) (:mmddyy.);
format startdate enddate indexdate yymmdd10.;
datalines;
1         1-1-2015          1-17-2015     4-1-2015
1          1-1-2015         1-25-2015     4-1-2015
1          2-7-2015         2-25-2015     4-1-2015
2          3-4-2016         5-8-2016       6-4-2016
2          3-4-2016        5-12-2016      6-4-2016
2          3-4-2016        5-12-2016      6-4-2016
2          8-5-2016        8-17-2016      6-4-2016 
;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 20 Jul 2018 22:54:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480092#M124038</guid>
      <dc:creator>Jordani</dc:creator>
      <dc:date>2018-07-20T22:54:08Z</dc:date>
    </item>
    <item>
      <title>Re: Duration in Business days and overlapping days</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480121#M124050</link>
      <description>&lt;P&gt;I guess you need:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID (startdate enddate indexdate ) (:mmddyy.);
format startdate enddate indexdate yymmdd10.;
datalines;
1         1-1-2015          1-17-2015     4-1-2015
1          1-1-2015         1-25-2015     4-1-2015
1          2-7-2015         2-25-2015     4-1-2015
2          3-4-2016         5-8-2016       6-4-2016
2          3-4-2016        5-12-2016      6-4-2016
2          3-4-2016        5-12-2016      6-4-2016
2          8-5-2016        8-17-2016      6-4-2016 
;

proc sql noprint;
select min(startdate), max(enddate) 
into :from, :to
from have;
quit;

data want;
array d {&amp;amp;from : &amp;amp;to} _temporary_;
call missing(of d{*});
do until(last.id);
    set have; by id;
    if startDate &amp;lt; indexDate then do;
        do i = startdate to min(indexDate-1, enddate);
            if 
                weekday(i) not in (1, 7) and         /* weekends */
                not (month(i)=12 and day(i)=25) and  /* Christmas */
                not (month(i)=1 and day(i)=1)        /* New Year */
                                                     /* ... etc. */
            then d{i} = 1;
            end;
        end;
    end;
duration = sum(of d{*});
keep ID duration;
run;

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Check if the -1 is required in &lt;STRONG&gt;min(indexDate-1, endDate)&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 21 Jul 2018 06:22:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Duration-in-Business-days-and-overlapping-days/m-p/480121#M124050</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-07-21T06:22:24Z</dc:date>
    </item>
  </channel>
</rss>

