Example 6.7 Exporting Calendars and Holidays

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
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
MS Project Window