Example 3.3 Project Scheduling and Reporting

Having defined the project and ensured that all the relationships have been modeled correctly, you can schedule the activities in the project by invoking PROC CPM. Suppose the activities can occur only on weekdays, and there is a holiday on July 4, 2003. Holiday information is passed to PROC CPM using the Holiday data set holidata. The following statements schedule the project to start on July 1, 2003. The early and late start schedules and additional project information are saved in the output data set survschd. The output data set produced by PROC CPM can then be used to generate a variety of reports. In this example, the data set is first sorted by the variable E_START and then displayed using the PRINT procedure (see Output 3.3.1).

data holidata;
   format hol date7.;
   hol = '4jul03'd;
run;
 
proc cpm data=survey date='1jul03'd out=survschd
         interval=weekday holidata=holidata;
   activity   activity;
   successor  succ1-succ3;
   duration   duration;
   id         id phase;
   holiday    hol;
   run;

proc sort;
   by e_start;
run;

title  'Conducting a Market Survey';
title2 'Early and Late Start Schedule';

proc print;
run;

Output 3.3.1: Project Schedule: Listing

Conducting a Market Survey
Early and Late Start Schedule

Obs activity succ1 succ2 succ3 duration id phase E_START E_FINISH L_START L_FINISH T_FLOAT F_FLOAT
1 plan sur hire per design q   4 Plan Survey Plan 01JUL03 07JUL03 01JUL03 07JUL03 0 0
2 hire per trn per     5 Hire Personnel Prepare 08JUL03 14JUL03 08JUL03 14JUL03 0 0
3 design q trn per select h print q 3 Design Questionnaire Plan 08JUL03 10JUL03 09JUL03 11JUL03 1 0
4 select h cond sur     3 Select Households Prepare 11JUL03 15JUL03 15JUL03 17JUL03 2 2
5 print q cond sur     4 Print Questionnaire Prepare 11JUL03 16JUL03 14JUL03 17JUL03 1 1
6 trn per cond sur     3 Train Personnel Prepare 15JUL03 17JUL03 15JUL03 17JUL03 0 0
7 cond sur analyze     10 Conduct Survey Implement 18JUL03 31JUL03 18JUL03 31JUL03 0 0
8 analyze       6 Analyze Results Implement 01AUG03 08AUG03 01AUG03 08AUG03 0 0


The schedule produced by PROC CPM is then graphed by invoking PROC GANTT, as shown in the following code. The CALENDAR procedure or NETDRAW procedure can also be used to display the schedule. The Gantt chart produced is shown in Output 3.3.2. Note that the precedence relationships are displayed on the Gantt chart.

goptions hpos=80 vpos=43;
pattern1 c=green v=s;     /* duration of a non-critical activity   */   
pattern2 c=green v=e;     /* slack time for a noncrit. activity    */
pattern3 c=red   v=s;     /* duration of a critical activity       */
pattern4 c=magenta v=e;   /* slack time for a supercrit. activity  */
pattern5 c=magenta v=s;   /* duration of a supercrit. activity     */
pattern6 c=cyan v=s;      /* actual duration of an activity        */ 
pattern7 c=black v=e;     /* break due to a holiday                */

title c=black h=2.5 'Conducting a Market Survey';
title2 c=black h=1.5 'Early and Late Start Schedule';
proc gantt graphics data=survschd holidata=holidata;
   chart / holiday=(hol) interval=weekday
           skip=2 height=1.4 nojobnum
           compress noextrange
           activity=activity succ=(succ1-succ3)
           cprec=blue caxis=black ;
   id   id phase;
   run;

Output 3.3.2: Gantt Chart of SURVEY Project

Gantt Chart of SURVEY Project