This example demonstrates the capability of the %SASTOMSP macro to handle multiple calendars within a project. Each activity is associated with one of four available calendars. Each calendar is customized to incorporate various workday shift patterns. In addition, there is a holiday data set that is also appropriately associated with a calendar. The four different calendars are defined as follows:
The DEFAULT calendar has five eight-hour days (Monday through Friday) and holidays on Saturday and Sunday.
The calendar OVT_CAL specifies an overtime calendar that has 10-hour workdays on Monday through Friday, a half-day on Saturday, and a holiday on Sunday.
The calendar PROD_CAL follows a more complicated work pattern: Sunday is a holiday; on Monday work is done from 8 a.m. through midnight with a two hour break from 6 p.m. to 8 p.m.; on Tuesday through Friday work is done round the clock with two 2-hour breaks, one from 6 a.m to 8 a.m and the other from 6 p.m. to 8 p.m.; on Saturday the work shifts are from midnight to 6 a.m. and again from 8 a.m. to 6 p.m.
The calendar ENG_CAL is specified similar to the default calendar, but with an extra vacation period of 7 days beginning on December 8.
The following data set contains the activity information:
data actdat; format activities $12. s1-s3 $12. cal $8.; input activities & days s1 & s2 & s3 & cal &; datalines; Approve Plan 5 Drawings Study Market Write Specs DEFAULT Drawings 10 Prototype . . DEFAULT Study Market 5 Mkt. Strat. . . DEFAULT Write Specs 5 Prototype . . ENG_CAL Prototype 15 Materials Facility . OVT_CAL Mkt. Strat. 10 Test Market Marketing . DEFAULT Materials 10 Init. Prod. . . DEFAULT Facility 10 Init. Prod. . . DEFAULT Init. Prod. 10 Test Market Marketing Evaluate DEFAULT Evaluate 10 Changes . . DEFAULT Test Market 15 Changes . . DEFAULT Changes 5 Production . . DEFAULT Production 0 . . . PROD_CAL Marketing 0 . . . DEFAULT ;
The next three data sets specify the work shift patterns, calendars, and holidays, respectively:
data wrkdat; input fullday time8. halfday time8. ovtday time8. d1 time8. d2 time8. d3 time8.; format fullday halfday ovtday d1 d2 d3 time6.; datalines; 08:00 08:00 08:00 . 08:00 . 16:00 12:00 18:00 06:00 18:00 06:00 . . . 08:00 20:00 08:00 . . . 18:00 . 18:00 . . . 20:00 . . . . . . . . ;
data caldat; input cal $ _sun_ $ _mon_$ _tue_$ _wed_$ _thu_$ _fri_$ _sat_ $; datalines; DEFAULT holiday fullday fullday fullday fullday fullday holiday OVT_CAL holiday ovtday ovtday ovtday ovtday ovtday halfday PROD_CAL holiday d2 d1 d1 d1 d1 d3 ENG_CAL . . . . . . . ;
data holdat; format holiday holifin date7.; input holiday & date7. holifin & date7. holidur cal $; datalines; 08Dec06 . 7 ENG_CAL 24Dec06 26Dec06 . . 01Jan07 01Jan07 . . ;
You can view the resulting project schedule in the PM window with the following call:
proc pm date='01Dec06'd data=actdat calendar=caldat holidata=holdat workday=wrkdat daylength='08:00't; activity activities; duration days; successor s1 s2 s3; calid cal; holiday holiday / holifin = holifin holidur=holidur; run;
The resulting PM window is shown in Output 6.7.1.
Output 6.7.1: PM Window
To convert the preceding data to an MDB file that includes the calendar and holiday information, you can use the following call to %SASTOMSP:
%sastomsp(mdbfile=mspref, actds=actdat, calds=caldat, holds=holdat, workds=wrkdat, _date='1Dec06'd, _daylength='08:00't, _activity=activities, _dur=days, _successor=s1 s2 s3, _calid=cal, _holistart=holiday, _holiend=holifin, _holidur=holidur)
The resulting MS Project Window is shown in Output 6.7.2. The schedule is the same as the one produced by the PM procedure.
Output 6.7.2: MS Project Window