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.
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.