<?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 I need assistance with developing a &amp;quot;Business Days/Hours&amp;quot; caclulation in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171648#M33004</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I’m trying to calculate a variance in time of approval where if the record was submitted during non-business hours (outside of 08:00am to 17:00pm) that it will move the start date of the calculation to the next business date at 08:00.&amp;nbsp; So for example, if the item was submitted for approval on Friday, May 23, 2014 at 5:30 pm (23MAY2014;17:30:00) it would show that the start date would be Tuesday, May 27th at 8am (27MAY2014;08:00:00) excluding the weekend and US holiday, and then in this example, the approval would be let’s say Tuesday at 4pm (27MAY2014;15:59:00) then the cycle time of this approval would be:&amp;nbsp; 27MAY2014;15:59:00 minus 27MAY2014;08:00:00 == 7 hrs 59 minutes If the approval time moved to Wednesday at 10:00am, then the cycle time would have to again, go to business hours and be: 28MAY2014;10:00:00 minus 27MAY2014;08:00:00 == 11 hours (9 hours on the 27th plus 2 hours on the 28th) Any assistance with this would be greatly appreciated! &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 23 May 2014 19:58:47 GMT</pubDate>
    <dc:creator>D_MichelleRenick</dc:creator>
    <dc:date>2014-05-23T19:58:47Z</dc:date>
    <item>
      <title>I need assistance with developing a "Business Days/Hours" caclulation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171648#M33004</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I’m trying to calculate a variance in time of approval where if the record was submitted during non-business hours (outside of 08:00am to 17:00pm) that it will move the start date of the calculation to the next business date at 08:00.&amp;nbsp; So for example, if the item was submitted for approval on Friday, May 23, 2014 at 5:30 pm (23MAY2014;17:30:00) it would show that the start date would be Tuesday, May 27th at 8am (27MAY2014;08:00:00) excluding the weekend and US holiday, and then in this example, the approval would be let’s say Tuesday at 4pm (27MAY2014;15:59:00) then the cycle time of this approval would be:&amp;nbsp; 27MAY2014;15:59:00 minus 27MAY2014;08:00:00 == 7 hrs 59 minutes If the approval time moved to Wednesday at 10:00am, then the cycle time would have to again, go to business hours and be: 28MAY2014;10:00:00 minus 27MAY2014;08:00:00 == 11 hours (9 hours on the 27th plus 2 hours on the 28th) Any assistance with this would be greatly appreciated! &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 May 2014 19:58:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171648#M33004</guid>
      <dc:creator>D_MichelleRenick</dc:creator>
      <dc:date>2014-05-23T19:58:47Z</dc:date>
    </item>
    <item>
      <title>Re: I need assistance with developing a "Business Days/Hours" caclulation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171649#M33005</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you post some (more) sample data and expected output as it makes it easier to test code. Make sure to include some that have holidays included &lt;img id="smileyhappy" class="emoticon emoticon-smileyhappy" src="https://communities.sas.com/i/smilies/16x16_smiley-happy.png" alt="Smiley Happy" title="Smiley Happy" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 May 2014 20:07:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171649#M33005</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2014-05-23T20:07:06Z</dc:date>
    </item>
    <item>
      <title>Re: I need assistance with developing a "Business Days/Hours" caclulation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171650#M33006</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;One way to handle a problem like this is the use the INTERVALDS option.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A __default_attr="149594" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt;, &lt;A __default_attr="645292" __jive_macro_name="user" class="jive_macro jive_macro_user" data-objecttype="3" href="https://communities.sas.com/"&gt;&lt;/A&gt; and I wrote a paper about this, which is available at the following link:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sascommunity.org/wiki/Sometimes_One_Needs_an_Option_with_Unusual_Dates" title="http://www.sascommunity.org/wiki/Sometimes_One_Needs_an_Option_with_Unusual_Dates"&gt;Sometimes One Needs an Option with Unusual Dates - sasCommunity&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is an example code that I believe will get you what you need once modified to your specifications:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*some fake approval dates;&lt;/P&gt;&lt;P&gt;data fake;&lt;/P&gt;&lt;P&gt;format i 5. approved datetime23.;&lt;/P&gt;&lt;P&gt;call streaminit(313131);&lt;/P&gt;&lt;P&gt;do i=1 to 1e3;&lt;/P&gt;&lt;P&gt;approved='03MAY2014:00:00:00'dt + floor((1+'28MAY2014:24:59:59'dt-'01MAY2014:24:59:59'dt)*rand('uniform'));&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*list of business holidays;&lt;/P&gt;&lt;P&gt;data holiday;&lt;/P&gt;&lt;P&gt;infile cards4;&lt;/P&gt;&lt;P&gt;input holiday $;&lt;/P&gt;&lt;P&gt;do year=2014 to 2014;&lt;/P&gt;&lt;P&gt;x=holiday(holiday,year);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;cards4;&lt;/P&gt;&lt;P&gt;MEMORIAL&lt;/P&gt;&lt;P&gt;;;;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*custom date interval dataset;&lt;/P&gt;&lt;P&gt;data dates;&lt;/P&gt;&lt;P&gt;format begin end datetime23. x date9.;&lt;/P&gt;&lt;P&gt;keep begin end;&lt;/P&gt;&lt;P&gt;x=.; *init x variable;&lt;/P&gt;&lt;P&gt;declare hash hol(dataset:'holiday');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; hol.definekey('x');&lt;/P&gt;&lt;P&gt;hol.definedone();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;d='01MAY2014'd; *start date;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do until(d&amp;gt;'31MAY2014'd); *do until end date;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if hol.find(key:d) = 0. then do; *closed for holiday;&lt;/P&gt;&lt;P&gt;season=0.;&lt;/P&gt;&lt;P&gt;begin=dhms(d-1.,17.,0.,0.);&lt;/P&gt;&lt;P&gt;d+1.;&lt;/P&gt;&lt;P&gt;if weekday(d) = 7. then d+2.; *weekend following holiday;&lt;/P&gt;&lt;P&gt;end=dhms(d+1.,7.,59.,59.);&lt;/P&gt;&lt;P&gt;duration=round((end-begin)/60./60.,1.);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;else if weekday(d) = 6. then do; *friday and weekend;&lt;/P&gt;&lt;P&gt;*open friday;&lt;/P&gt;&lt;P&gt;begin=dhms(d,8.,0.,0.);&lt;/P&gt;&lt;P&gt;end=dhms(d,16.,59.,59.);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;*closed weekend;&lt;/P&gt;&lt;P&gt;begin=dhms(d,17.,0.,0.);&lt;/P&gt;&lt;P&gt;d+3.;&lt;/P&gt;&lt;P&gt;if hol.find(key:d) = 0. then d+1.; *holiday following weekend;&lt;/P&gt;&lt;P&gt;end=dhms(d,7.,59.,59.);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;else do; *regular day;&lt;/P&gt;&lt;P&gt;*open;&lt;/P&gt;&lt;P&gt;begin=dhms(d,8.,0.,0.);&lt;/P&gt;&lt;P&gt;end=dhms(d,16.,59.,59.);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;*close;&lt;/P&gt;&lt;P&gt;begin=dhms(d,17.,0.,0.);&lt;/P&gt;&lt;P&gt;d+1.;&lt;/P&gt;&lt;P&gt;end=dhms(d,7.,59.,59.);&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;stop;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;options intervalds=(MyBusiness=dates);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data foo;&lt;/P&gt;&lt;P&gt;set fake;&lt;/P&gt;&lt;P&gt;format new_approve datetime23.;&lt;/P&gt;&lt;P&gt;if sum(&lt;/P&gt;&lt;P&gt;intck('MyBusiness',dhms(datepart(approved),10,0,0),approved) ne 0,&lt;/P&gt;&lt;P&gt;intck('MyBusiness',dhms(datepart(approved),20,0,0),approved) ne 0&lt;/P&gt;&lt;P&gt;) ne 1 then new_approve=intnx('MyBusiness',approved,1,'b');&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 23 May 2014 23:51:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171650#M33006</guid>
      <dc:creator>FriedEgg</dc:creator>
      <dc:date>2014-05-23T23:51:07Z</dc:date>
    </item>
    <item>
      <title>Re: I need assistance with developing a "Business Days/Hours" caclulation</title>
      <link>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171651#M33007</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;/*This uses the SAS "holiday and weekend" program, then checks your dates/times and fixes them to conform to your business rules */&lt;/P&gt;&lt;P&gt;/*It is just four simple queries once you get the holiday file made */&lt;/P&gt;&lt;P&gt;/*Runs in less than a second. */&lt;/P&gt;&lt;P&gt;/*Good luck on your project!&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*Create The Calendar File*/&lt;BR /&gt;/*Obtained directly from the SAS Knowledge Base see file &lt;A href="http://support.sas.com/kb/26/044.html"&gt;http://support.sas.com/kb/26/044.html&lt;/A&gt; */&lt;/P&gt;&lt;P&gt;/***************************************************************************/&lt;BR /&gt;/* This sample creates three data sets, HOLIDAYS, WEEKENDS, and ALLDAYS&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* which are combined to create CALENDAR.&amp;nbsp; If you must often calculate the */&lt;BR /&gt;/* number of business days between dates, you might prefer to make&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* CALENDAR a permanent data set rather than recreate it each time.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Two methods are provided below which use CALENDAR and a second data set */&lt;BR /&gt;/* with multiple start and end dates to determine the number of business&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* dates between STARTDT and STOPDT.&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;&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; */&lt;BR /&gt;/***************************************************************************/&lt;/P&gt;&lt;P&gt;/* If you choose, you can edit your calendar ranges here.&amp;nbsp; No other edits&amp;nbsp; */&lt;BR /&gt;/* are needed to the steps creating the data set CALENDAR.&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; */&lt;/P&gt;&lt;P&gt;%let start='01jan1960'd;&lt;BR /&gt;%let stop='01jan2060'd;&lt;/P&gt;&lt;P&gt;/* Create a date set for holidays.&amp;nbsp; Adjust to fit your company's needs.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Note logic is illustrated for 'static' holidays and 'observed' holidays. */&lt;/P&gt;&lt;P&gt;data holidays;&lt;BR /&gt;&amp;nbsp; length type $25;&lt;BR /&gt;&amp;nbsp; do year=year(&amp;amp;start) to year(&amp;amp;stop);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* example of 'observed' holiday logic&amp;nbsp; */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='New Years Day Observed';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=MDY(1,1,YEAR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FDOY=dt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if weekday(dt)=1 then dt=dt+1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if weekday(dt)=7 then dt=mdy(12,31,year-1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* example of static holiday logic */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='Martin Luther King Day';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=intnx('week.2',fdoy,(weekday(fdoy) ne 2)+2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type="Presidents Day";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fdo_feb=intnx('month',fdoy,1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=intnx('week.2',fdo_feb,(weekday(fdo_feb) ne 2)+2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='Memorial Day';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fdo_may=intnx('month',fdoy,4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=intnx('week.2',fdo_may,(weekday(fdo_may) in (1,7))+4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='Independence Day Observed';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=MDY(7,4,YEAR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if weekday(dt)=1 then dt=dt+1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if weekday(dt)=7 then dt=dt-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='Labor Day';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fdo_sep=intnx('month',fdoy,8);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=intnx('week.2',fdo_sep,(weekday(fdo_sep) ne 2));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='Election Day';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fdo_nov=intnx('month',fdoy,10);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=intnx('week.3',fdo_nov,1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='Veterans Day Observed';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=MDY(11,11,YEAR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if weekday(dt)=1 then dt=dt+1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if weekday(dt)=7 then dt=dt-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='Thanksgiving Day';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=intnx('week.5',fdo_nov,(weekday(fdo_nov) ne 5)+3);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; type='Christmas Day Observed';&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=MDY(12,25,YEAR);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if weekday(dt)=1 then dt=dt+1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if weekday(dt)=7 then dt=dt-1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; keep dt type;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=holidays;&lt;BR /&gt;&amp;nbsp; by dt;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Create a data set of weekends via the WEEKDAY function&amp;nbsp; */&lt;/P&gt;&lt;P&gt;data weekends;&lt;BR /&gt;&amp;nbsp; length type $25;&lt;BR /&gt;&amp;nbsp; type='Weekend';&lt;BR /&gt;&amp;nbsp; do dt=&amp;amp;start to &amp;amp;stop;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if weekday(dt) in (1,7) then output;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Create a data set of all the days in the specified date range. */&lt;BR /&gt;/* TYPE will have the value 'Workday' for all observations.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* Specifying ALLDAYS first in the following MERGE will allow any */&lt;BR /&gt;/* date matches from from HOLIDAY or WEEKEND to overwrite the&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;/* value of TYPE with the appropriate type of day.&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; */&lt;/P&gt;&lt;P&gt;data alldays;&lt;BR /&gt;&amp;nbsp; length type $25;&lt;BR /&gt;&amp;nbsp; type='Workday';&lt;BR /&gt;&amp;nbsp; do dt=&amp;amp;start to &amp;amp;stop;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data calendar;&lt;BR /&gt;&amp;nbsp; format dt date9.;&lt;BR /&gt;&amp;nbsp; merge alldays(in=a) weekends(in=w) holidays(in=h);&lt;BR /&gt;&amp;nbsp; by dt;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Generate dummy data to use with CALENDAR for testing purposes */&lt;/P&gt;&lt;P&gt;data test;&lt;BR /&gt;&amp;nbsp; startdt='01nov2014'd;&amp;nbsp; stopdt='30nov2014'd;&lt;BR /&gt;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp; startdt='01jan2014'd;&amp;nbsp; stopdt='10jul2014'd;&lt;BR /&gt;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp; startdt='20dec2014'd;&amp;nbsp; stopdt='15jan2015'd;&lt;BR /&gt;&amp;nbsp; output;&lt;BR /&gt;&amp;nbsp; format startdt stopdt date9.;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Method 1:&amp;nbsp; SQL */&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;&amp;nbsp; create table final_sql as&lt;BR /&gt;&amp;nbsp; select startdt format=date9.,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stopdt format=date9.,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (select count(*)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from calendar&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where dt between stopdt and startdt&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and type = 'Workday') as workdays&lt;BR /&gt;&amp;nbsp; from test;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;proc print data=final_sql;&lt;BR /&gt;&amp;nbsp; title 'Output from PROC SQL';&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;/* Method 2:&amp;nbsp; DATA step using an INDEX and KEY=&amp;nbsp; */&lt;/P&gt;&lt;P&gt;/* Build index on CALENDAR */&lt;/P&gt;&lt;P&gt;proc datasets library=work nolist;&lt;BR /&gt;&amp;nbsp; modify calendar;&lt;BR /&gt;&amp;nbsp; index create dt;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data final_idx;&lt;BR /&gt;&amp;nbsp; set test;&lt;BR /&gt;&amp;nbsp; workdays=0;&lt;BR /&gt;&amp;nbsp; /* For each date between STARTDT and STOPDT, check to see if DT is a workday. */&lt;BR /&gt;&amp;nbsp; /* If so, increment the new variable WORKDAYS by 1.&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;BR /&gt;&amp;nbsp; do i=startdt to stopdt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt=i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Look up the current value of DT in CALENDAR using the index on DT */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set calendar key=dt/unique;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Check return code from search */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select (_iorc_);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Match found */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when (%sysrc(_sok)) do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if type='Workday' then workdays+1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if i=stopdt then output;&lt;BR /&gt;&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; /* Match not found in master */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when (%sysrc(_dsenom)) do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _ERROR_=0;&lt;BR /&gt;&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; otherwise do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put 'Unexpected ERROR: _iorc_= ' _iorc_;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp; keep startdt stopdt workdays;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc print data=final_idx;&lt;BR /&gt;&amp;nbsp; title "Output from DATA Step";&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc datasets lib = work nolist;&lt;BR /&gt;save calendar;&lt;/P&gt;&lt;P&gt;/* Creating a sample file to mimic your specifications*/&lt;/P&gt;&lt;P&gt;data testvariance;&lt;BR /&gt;format example $30.;&lt;BR /&gt;example = "1 - A Holiday";&lt;BR /&gt;format literal_receipt datetime.;&lt;BR /&gt;format literal_date date9.;&lt;BR /&gt;Literal_receipt="01jan2014 09:00:00"dt;&lt;BR /&gt;Literal_date=datepart(literal_receipt);&lt;BR /&gt;output;&lt;/P&gt;&lt;P&gt;example = "2 - A Weekend";&lt;BR /&gt;Literal_receipt="04jan2014 11:00:00"dt;&lt;BR /&gt;Literal_date=datepart(literal_receipt);&lt;BR /&gt;output;&lt;/P&gt;&lt;P&gt;example = "3 - Early Hours";&lt;BR /&gt;Literal_receipt="07jan2014 01:00:00"dt;&lt;BR /&gt;Literal_date=datepart(literal_receipt);&lt;BR /&gt;output;&lt;/P&gt;&lt;P&gt;example = "4 - Late Hours";&lt;BR /&gt;Literal_receipt="14jan2014 21:00:00"dt;&lt;BR /&gt;Literal_date=datepart(literal_receipt);&lt;BR /&gt;output;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;example = "4 - Bump Weekend to Holiday";&lt;BR /&gt;Literal_receipt="25may2014 10:00:00"dt;&lt;BR /&gt;Literal_date=datepart(literal_receipt);&lt;BR /&gt;output;&lt;/P&gt;&lt;P&gt;example = "5 - Observed Xmas on Friday";&lt;BR /&gt;Literal_receipt="24dec1999 10:00:00"dt;&lt;BR /&gt;Literal_date=datepart(literal_receipt);&lt;BR /&gt;output;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;run;&lt;BR /&gt;/* link test file to calendar file for type */&lt;BR /&gt;run;PROC SQL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CREATE TABLE WORK.Linked AS &lt;BR /&gt;&amp;nbsp;&amp;nbsp; SELECT t1.example, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_date, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_receipt, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t2.dt, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t2.type&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM WORK.TESTVARIANCE t1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INNER JOIN WORK.CALENDAR t2 ON (t1.literal_date = t2.dt);&lt;BR /&gt;QUIT;&lt;BR /&gt;/* shift according to type, or according to time received */&lt;BR /&gt;PROC SQL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CREATE TABLE WORK.Reset_Receipt_DT AS &lt;BR /&gt;&amp;nbsp;&amp;nbsp; SELECT t1.dt, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.example, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_date,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_date format=weekdatx9. as DayOfWeek, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_receipt, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.type, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Moved_Receipt_DT */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ifn(t1.type&amp;lt;&amp;gt;"Workday" and t1.type&amp;lt;&amp;gt;"Weekend" and weekday(datepart(t1.literal_receipt))=6,intnx("dtday"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,t1.literal_receipt,2,"b")+(8*60*60),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(t1.type&amp;lt;&amp;gt;"Workday" and t1.type&amp;lt;&amp;gt;"Weekend" and weekday(datepart(t1.literal_receipt)) in (2,3,4,5) ,intnx(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dtday",t1.literal_receipt,1,"b")+(8*60*60), &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(timepart(t1.Literal_receipt)&amp;lt;(8*60*60), intnx("dtday", t1.literal_receipt,0,"b")+(8*60*60),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(timepart(t1.Literal_receipt)&amp;gt;(17*60*60),intnx("dtday",t1.literal_receipt,1,"b")+(8*60*60),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(weekday(datepart(t1.Literal_receipt))=7,intnx("dtday",t1.literal_receipt,2,"b")+(8*60*60),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(weekday(datepart(t1.Literal_receipt))=1,intnx("dtday",t1.literal_receipt,1,"b")+(8*60*60),t1.literal_receipt)))))))&amp;nbsp; format = datetime. AS Moved_Receipt_DT,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; datepart(calculated moved_receipt_dt) format=date9. as New_date&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM WORK.LINKED t1;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/* You have to relink to calendar in order to see if you moved a holiday onto a weekend, and so move again */&lt;BR /&gt;PROC SQL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CREATE TABLE WORK.Reset_Receipt_DT AS &lt;BR /&gt;&amp;nbsp;&amp;nbsp; SELECT t1.DayOfWeek, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.dt, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.example, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_date, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_receipt, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.Moved_Receipt_DT, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.New_date, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t2.type&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM WORK.RESET_RECEIPT_DT t1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INNER JOIN WORK.CALENDAR t2 ON (t1.New_date = t2.dt);&lt;BR /&gt;QUIT;&lt;BR /&gt;/*This is the final moved date/time */&lt;BR /&gt;PROC SQL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; CREATE TABLE WORK.Final_out AS &lt;BR /&gt;&amp;nbsp;&amp;nbsp; SELECT t1.dt, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.example, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_date, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.DayOfWeek,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.literal_receipt, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t1.type, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Moved_Receipt_DT */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (ifn(t1.type&amp;lt;&amp;gt;"Workday" and t1.type&amp;lt;&amp;gt;"Weekend" and weekday(datepart(t1.Moved_Receipt_DT))=6,intnx("dtday"&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,t1.Moved_Receipt_DT,2,"b")+(8*60*60),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(t1.type&amp;lt;&amp;gt;"Workday" and t1.type&amp;lt;&amp;gt;"Weekend" and weekday(datepart(t1.Moved_Receipt_DT)) in (2,3,4,5) ,intnx(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dtday",t1.Moved_Receipt_DT,1,"b")+(8*60*60), &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(timepart(t1.Moved_Receipt_DT)&amp;lt;(8*60*60), intnx("dtday", t1.Moved_Receipt_DT,0,"b")+(8*60*60),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(timepart(t1.Moved_Receipt_DT)&amp;gt;(17*60*60),intnx("dtday",t1.Moved_Receipt_DT,1,"b")+(8*60*60),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(weekday(datepart(t1.Moved_Receipt_DT))=7,intnx("dtday",t1.Moved_Receipt_DT,2,"b")+(8*60*60),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ifn(weekday(datepart(t1.Moved_Receipt_DT))=1,intnx("dtday",t1.Moved_Receipt_DT,1,"b")+(8*60*60),t1.Moved_Receipt_DT)))))))&amp;nbsp; format = datetime. AS Moved_Receipt_DT_2&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM WORK.Reset_Receipt_DT t1;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Nov 2014 20:09:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/I-need-assistance-with-developing-a-quot-Business-Days-Hours/m-p/171651#M33007</guid>
      <dc:creator>JPM</dc:creator>
      <dc:date>2014-11-11T20:09:59Z</dc:date>
    </item>
  </channel>
</rss>

