This example shows the use of the ACTUAL and BASELINE statements to track and compare a project’s progress with the original planned schedule. Consider the data in Example 4.1, for the network in AON format. Suppose that the project has started as scheduled on December 1, 2003, and that the current date is December 19, 2003. You may want to enter the actual dates for the activities that are already in progress or have been completed and use the CPM procedure to determine the schedule for activities that remain to be done. In addition to computing an updated schedule, you may want to check the progress of the project by comparing the current schedule with the planned schedule.
The BASELINE statement enables you to save a target schedule in the Schedule data set. In this example, suppose that you want
to try to schedule the activities according to the project’s early start schedule. As a first step, schedule the project with
PROC CPM, and use the SET= option in the BASELINE statement to save the early start and finish times as the baseline start
and finish times. The following program saves the baseline schedule (in the variables B_START
and B_FINISH
), and Output 4.13.1 displays the resulting output data set.
data holidays; format holiday holifin date7.; input holiday & date7. holifin & date7. holidur; datalines; 24dec03 26dec03 4 01jan04 . . ;
* store early schedule as the baseline schedule; proc cpm data=widget holidata=holidays out=widgbase date='1dec03'd; activity task; succ succ1 succ2 succ3; duration days; holiday holiday / holifin=(holifin); baseline / set=early; run;
Output 4.13.1: Target Schedule
Progress Update and Target Schedules |
Set Baseline Schedule |
Obs | task | succ1 | succ2 | succ3 | days | E_START | E_FINISH | L_START | L_FINISH | T_FLOAT | F_FLOAT | B_START | B_FINISH |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | Study Market | Write Specs | 5 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | 0 | 01DEC03 | 05DEC03 |
2 | Drawings | Prototype | 10 | 06DEC03 | 15DEC03 | 06DEC03 | 15DEC03 | 0 | 0 | 06DEC03 | 15DEC03 | ||
3 | Study Market | Mkt. Strat. | 5 | 06DEC03 | 10DEC03 | 09JAN04 | 13JAN04 | 30 | 0 | 06DEC03 | 10DEC03 | ||
4 | Write Specs | Prototype | 5 | 06DEC03 | 10DEC03 | 11DEC03 | 15DEC03 | 5 | 5 | 06DEC03 | 10DEC03 | ||
5 | Prototype | Materials | Facility | 15 | 16DEC03 | 03JAN04 | 16DEC03 | 03JAN04 | 0 | 0 | 16DEC03 | 03JAN04 | |
6 | Mkt. Strat. | Test Market | Marketing | 10 | 11DEC03 | 20DEC03 | 14JAN04 | 23JAN04 | 30 | 30 | 11DEC03 | 20DEC03 | |
7 | Materials | Init. Prod. | 10 | 04JAN04 | 13JAN04 | 04JAN04 | 13JAN04 | 0 | 0 | 04JAN04 | 13JAN04 | ||
8 | Facility | Init. Prod. | 10 | 04JAN04 | 13JAN04 | 04JAN04 | 13JAN04 | 0 | 0 | 04JAN04 | 13JAN04 | ||
9 | Init. Prod. | Test Market | Marketing | Evaluate | 10 | 14JAN04 | 23JAN04 | 14JAN04 | 23JAN04 | 0 | 0 | 14JAN04 | 23JAN04 |
10 | Evaluate | Changes | 10 | 24JAN04 | 02FEB04 | 29JAN04 | 07FEB04 | 5 | 5 | 24JAN04 | 02FEB04 | ||
11 | Test Market | Changes | 15 | 24JAN04 | 07FEB04 | 24JAN04 | 07FEB04 | 0 | 0 | 24JAN04 | 07FEB04 | ||
12 | Changes | Production | 5 | 08FEB04 | 12FEB04 | 08FEB04 | 12FEB04 | 0 | 0 | 08FEB04 | 12FEB04 | ||
13 | Production | 0 | 13FEB04 | 13FEB04 | 13FEB04 | 13FEB04 | 0 | 0 | 13FEB04 | 13FEB04 | |||
14 | Marketing | 0 | 24JAN04 | 24JAN04 | 13FEB04 | 13FEB04 | 20 | 20 | 24JAN04 | 24JAN04 |
As the project progresses, you have to account for the actual progress of the project and schedule the unfinished activities
accordingly. You can do so by specifying actual start or actual finish times (or both) for activities that have already finished
or are in progress. Progress information can also be specified using percent complete or remaining duration values. Assume
that current information has been incorporated into the ACTUAL
data set, shown in Output 4.13.2. The variables sdate
and fdate
contain the actual start and finish times of the activities, and rdur
specifies the number of days of work that are still remaining for the activity to be completed, and pctc
specifies the percent of work that has been completed for that activity.
Output 4.13.2: Progress Data Set ACTUAL
Progress Update and Target Schedules |
Progress Data |
Obs | task | sdate | fdate | pctc | rdur |
---|---|---|---|---|---|
1 | Approve Plan | 01DEC2003 | 05DEC2003 | . | . |
2 | Drawings | 06DEC2003 | 16DEC2003 | . | . |
3 | Study Market | 05DEC2003 | . | 100 | . |
4 | Write Specs | 07DEC2003 | 12DEC2003 | . | . |
5 | Prototype | . | . | . | . |
6 | Mkt. Strat. | 10DEC2003 | . | . | 3 |
7 | Materials | . | . | . | . |
8 | Facility | . | . | . | . |
9 | Init. Prod. | . | . | . | . |
10 | Evaluate | . | . | . | . |
11 | Test Market | . | . | . | . |
12 | Changes | . | . | . | . |
13 | Production | . | . | . | . |
14 | Marketing | . | . | . | . |
The following statements invoke PROC CPM after merging the progress data with the Schedule data set. The NOAUTOUPDT option
is specified so that only those activities that have explicit progress information are assumed to have started. The resulting
Schedule data set contains the new variables A_START
, A_FINISH
, A_DUR
, and STATUS
; this data set is displayed in Output 4.13.3. The activity 'Mkt. Strat.', which has rdur
='3' in Output 4.13.2, has an early finish time (December 21, 2003) that is three days after TIMENOW. The S_VAR
and F_VAR
variables show the amount of slippage in the start and finish times (predicted on the basis of the current schedule) as compared
to the baseline schedule.
* merge the baseline information with progress update; data widgact; merge actual widgbase; run;
proc cpm data=widgact holidata=holidays out=widgnupd date='1dec03'd; activity task; succ succ1 succ2 succ3; duration days; holiday holiday / holifin=(holifin); baseline / compare=early; actual / a_start=sdate a_finish=fdate timenow='19dec03'd remdur=rdur pctcomp=pctc noautoupdt; run;
Output 4.13.3: Comparison of Schedules: NOAUTOUPDT
Progress Update and Target Schedules |
Updated Schedule vs. Target Schedule: NOAUTOUPDT |
Obs | task | succ1 | succ2 | succ3 | days | STATUS | A_DUR | A_START | A_FINISH | E_START | E_FINISH | L_START | L_FINISH | T_FLOAT | F_FLOAT | B_START | B_FINISH | S_VAR | F_VAR |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | Study Market | Write Specs | 5 | Completed | 5 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | 0 | 01DEC03 | 05DEC03 | 0 | 0 |
2 | Drawings | Prototype | 10 | Completed | 11 | 06DEC03 | 16DEC03 | 06DEC03 | 16DEC03 | 06DEC03 | 16DEC03 | 0 | 0 | 06DEC03 | 15DEC03 | 0 | 1 | ||
3 | Study Market | Mkt. Strat. | 5 | Completed | 5 | 05DEC03 | 09DEC03 | 05DEC03 | 09DEC03 | 05DEC03 | 09DEC03 | 0 | 0 | 06DEC03 | 10DEC03 | -1 | -1 | ||
4 | Write Specs | Prototype | 5 | Completed | 6 | 07DEC03 | 12DEC03 | 07DEC03 | 12DEC03 | 07DEC03 | 12DEC03 | 0 | 0 | 06DEC03 | 10DEC03 | 1 | 2 | ||
5 | Prototype | Materials | Facility | 15 | Pending | . | . | . | 19DEC03 | 06JAN04 | 19DEC03 | 06JAN04 | 0 | 0 | 16DEC03 | 03JAN04 | 3 | 3 | |
6 | Mkt. Strat. | Test Market | Marketing | 10 | In Progress | . | 10DEC03 | . | 10DEC03 | 21DEC03 | 10DEC03 | 21DEC03 | 0 | 0 | 11DEC03 | 20DEC03 | -1 | 1 | |
7 | Materials | Init. Prod. | 10 | Pending | . | . | . | 07JAN04 | 16JAN04 | 07JAN04 | 16JAN04 | 0 | 0 | 04JAN04 | 13JAN04 | 3 | 3 | ||
8 | Facility | Init. Prod. | 10 | Pending | . | . | . | 07JAN04 | 16JAN04 | 07JAN04 | 16JAN04 | 0 | 0 | 04JAN04 | 13JAN04 | 3 | 3 | ||
9 | Init. Prod. | Test Market | Marketing | Evaluate | 10 | Pending | . | . | . | 17JAN04 | 26JAN04 | 17JAN04 | 26JAN04 | 0 | 0 | 14JAN04 | 23JAN04 | 3 | 3 |
10 | Evaluate | Changes | 10 | Pending | . | . | . | 27JAN04 | 05FEB04 | 01FEB04 | 10FEB04 | 5 | 5 | 24JAN04 | 02FEB04 | 3 | 3 | ||
11 | Test Market | Changes | 15 | Pending | . | . | . | 27JAN04 | 10FEB04 | 27JAN04 | 10FEB04 | 0 | 0 | 24JAN04 | 07FEB04 | 3 | 3 | ||
12 | Changes | Production | 5 | Pending | . | . | . | 11FEB04 | 15FEB04 | 11FEB04 | 15FEB04 | 0 | 0 | 08FEB04 | 12FEB04 | 3 | 3 | ||
13 | Production | 0 | Pending | . | . | . | 16FEB04 | 16FEB04 | 16FEB04 | 16FEB04 | 0 | 0 | 13FEB04 | 13FEB04 | 3 | 3 | |||
14 | Marketing | 0 | Pending | . | . | . | 27JAN04 | 27JAN04 | 16FEB04 | 16FEB04 | 20 | 20 | 24JAN04 | 24JAN04 | 3 | 3 |
In order for you to see the effect of the AUTOUPDT option, the same project information is used with the AUTOUPDT option in
the ACTUAL statement. Output 4.13.4 displays the resulting schedule. With the AUTOUPDT option (which is, in fact, the default option), PROC CPM uses the progress
information and the precedence information to automatically fill in the actual start and finish information for activities
that should have finished or started before TIMENOW. The activity 'Prototype' has no progress information in WIDGACT
, but it is assumed to have an actual start date of December 17, 2003. This option is useful when there are several activities
that take place according to the plan and only a few occur out of sequence; then it is sufficient to enter progress information
only for the activities that did not follow the plan. The SHOWFLOAT option, also used in this invocation of PROC CPM, enables
activities that are completed or in progress to have float; in other words, the late start schedule for activities in progress
is not fixed by the progress information. Thus, the activity 'Study Market' has L_START
='08JAN04' instead of '05DEC03', as in the earlier invocation of PROC CPM (without the SHOWFLOAT option).
The following invocation of PROC CPM produces Output 4.13.4:
proc cpm data=widgact holidata=holidays out=widgupdt date='1dec03'd; activity task; succ succ1 succ2 succ3; duration days; holiday holiday / holifin=(holifin); baseline / compare=early; actual / as=sdate af=fdate timenow='19dec03'd remdur=rdur pctcomp=pctc autoupdt showfloat; run;
Output 4.13.4: Comparison of Schedules: AUTOUPDT
Progress Update and Target Schedules |
Updated Schedule vs. Target Schedule: AUTOUPDT |
Obs | task | succ1 | succ2 | succ3 | days | STATUS | A_DUR | A_START | A_FINISH | E_START | E_FINISH | L_START | L_FINISH | T_FLOAT | F_FLOAT | B_START | B_FINISH | S_VAR | F_VAR |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | Study Market | Write Specs | 5 | Completed | 5 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | -1 | 01DEC03 | 05DEC03 | 0 | 0 |
2 | Drawings | Prototype | 10 | Completed | 11 | 06DEC03 | 16DEC03 | 06DEC03 | 16DEC03 | 06DEC03 | 16DEC03 | 0 | 0 | 06DEC03 | 15DEC03 | 0 | 1 | ||
3 | Study Market | Mkt. Strat. | 5 | Completed | 5 | 05DEC03 | 09DEC03 | 05DEC03 | 09DEC03 | 08JAN04 | 12JAN04 | 30 | 0 | 06DEC03 | 10DEC03 | -1 | -1 | ||
4 | Write Specs | Prototype | 5 | Completed | 6 | 07DEC03 | 12DEC03 | 07DEC03 | 12DEC03 | 11DEC03 | 16DEC03 | 4 | 4 | 06DEC03 | 10DEC03 | 1 | 2 | ||
5 | Prototype | Materials | Facility | 15 | In Progress | . | 17DEC03 | . | 17DEC03 | 04JAN04 | 17DEC03 | 04JAN04 | 0 | 0 | 16DEC03 | 03JAN04 | 1 | 1 | |
6 | Mkt. Strat. | Test Market | Marketing | 10 | In Progress | . | 10DEC03 | . | 10DEC03 | 21DEC03 | 13JAN04 | 24JAN04 | 30 | 30 | 11DEC03 | 20DEC03 | -1 | 1 | |
7 | Materials | Init. Prod. | 10 | Pending | . | . | . | 05JAN04 | 14JAN04 | 05JAN04 | 14JAN04 | 0 | 0 | 04JAN04 | 13JAN04 | 1 | 1 | ||
8 | Facility | Init. Prod. | 10 | Pending | . | . | . | 05JAN04 | 14JAN04 | 05JAN04 | 14JAN04 | 0 | 0 | 04JAN04 | 13JAN04 | 1 | 1 | ||
9 | Init. Prod. | Test Market | Marketing | Evaluate | 10 | Pending | . | . | . | 15JAN04 | 24JAN04 | 15JAN04 | 24JAN04 | 0 | 0 | 14JAN04 | 23JAN04 | 1 | 1 |
10 | Evaluate | Changes | 10 | Pending | . | . | . | 25JAN04 | 03FEB04 | 30JAN04 | 08FEB04 | 5 | 5 | 24JAN04 | 02FEB04 | 1 | 1 | ||
11 | Test Market | Changes | 15 | Pending | . | . | . | 25JAN04 | 08FEB04 | 25JAN04 | 08FEB04 | 0 | 0 | 24JAN04 | 07FEB04 | 1 | 1 | ||
12 | Changes | Production | 5 | Pending | . | . | . | 09FEB04 | 13FEB04 | 09FEB04 | 13FEB04 | 0 | 0 | 08FEB04 | 12FEB04 | 1 | 1 | ||
13 | Production | 0 | Pending | . | . | . | 14FEB04 | 14FEB04 | 14FEB04 | 14FEB04 | 0 | 0 | 13FEB04 | 13FEB04 | 1 | 1 | |||
14 | Marketing | 0 | Pending | . | . | . | 25JAN04 | 25JAN04 | 14FEB04 | 14FEB04 | 20 | 20 | 24JAN04 | 24JAN04 | 1 | 1 |