Example 2.13: Progress Update and Target Schedules
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 2.1, for the network in
AON format. Suppose that the project has started as
scheduled on December 2, 1991, and that the current date is December 20,
1991. 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 2.13.1 displays the resulting output data set.
data holidays;
format holiday holifin date7.;
input holiday date8. holifin date8. holidur;
datalines;
25dec91 27dec91 4
01jan92 . .
;
* store early schedule as the baseline schedule;
proc cpm data=widget holidata=holidays
out=widgbase date='2dec91'd;
activity task;
succ succ1 succ2 succ3;
duration days;
holiday holiday / holifin=(holifin);
baseline / set=early;
run;
Output 2.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 |
Anal. Market |
Write Specs |
5 |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
0 |
0 |
02DEC91 |
06DEC91 |
2 |
Drawings |
Prototype |
|
|
10 |
07DEC91 |
16DEC91 |
07DEC91 |
16DEC91 |
0 |
0 |
07DEC91 |
16DEC91 |
3 |
Anal. Market |
Mkt. Strat. |
|
|
5 |
07DEC91 |
11DEC91 |
10JAN92 |
14JAN92 |
30 |
0 |
07DEC91 |
11DEC91 |
4 |
Write Specs |
Prototype |
|
|
5 |
07DEC91 |
11DEC91 |
12DEC91 |
16DEC91 |
5 |
5 |
07DEC91 |
11DEC91 |
5 |
Prototype |
Materials |
Facility |
|
15 |
17DEC91 |
04JAN92 |
17DEC91 |
04JAN92 |
0 |
0 |
17DEC91 |
04JAN92 |
6 |
Mkt. Strat. |
Test Market |
Marketing |
|
10 |
12DEC91 |
21DEC91 |
15JAN92 |
24JAN92 |
30 |
30 |
12DEC91 |
21DEC91 |
7 |
Materials |
Init. Prod. |
|
|
10 |
05JAN92 |
14JAN92 |
05JAN92 |
14JAN92 |
0 |
0 |
05JAN92 |
14JAN92 |
8 |
Facility |
Init. Prod. |
|
|
10 |
05JAN92 |
14JAN92 |
05JAN92 |
14JAN92 |
0 |
0 |
05JAN92 |
14JAN92 |
9 |
Init. Prod. |
Test Market |
Marketing |
Evaluate |
10 |
15JAN92 |
24JAN92 |
15JAN92 |
24JAN92 |
0 |
0 |
15JAN92 |
24JAN92 |
10 |
Evaluate |
Changes |
|
|
10 |
25JAN92 |
03FEB92 |
30JAN92 |
08FEB92 |
5 |
5 |
25JAN92 |
03FEB92 |
11 |
Test Market |
Changes |
|
|
15 |
25JAN92 |
08FEB92 |
25JAN92 |
08FEB92 |
0 |
0 |
25JAN92 |
08FEB92 |
12 |
Changes |
Production |
|
|
5 |
09FEB92 |
13FEB92 |
09FEB92 |
13FEB92 |
0 |
0 |
09FEB92 |
13FEB92 |
13 |
Production |
|
|
|
0 |
14FEB92 |
14FEB92 |
14FEB92 |
14FEB92 |
0 |
0 |
14FEB92 |
14FEB92 |
14 |
Marketing |
|
|
|
0 |
25JAN92 |
25JAN92 |
14FEB92 |
14FEB92 |
20 |
20 |
25JAN92 |
25JAN92 |
|
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 2.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 2.13.2: Progress Data Set ACTUAL
Progress Update and Target Schedules |
Progress Data |
Obs |
task |
sdate |
fdate |
pctc |
rdur |
1 |
Approve Plan |
02DEC1991 |
06DEC1991 |
. |
. |
2 |
Drawings |
07DEC1991 |
17DEC1991 |
. |
. |
3 |
Anal. Market |
06DEC1991 |
. |
100 |
. |
4 |
Write Specs |
08DEC1991 |
13DEC1991 |
. |
. |
5 |
Prototype |
. |
. |
. |
. |
6 |
Mkt. Strat. |
11DEC1991 |
. |
. |
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 2.13.3. Note that the activity `Mkt. Strat.', which has
rdur=`3' in Output 2.13.2, has an early finish time (December 22, 1992)
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='2dec91'd;
activity task;
succ succ1 succ2 succ3;
duration days;
holiday holiday / holifin=(holifin);
baseline / compare=early;
actual / a_start=sdate a_finish=fdate timenow='20dec91'd
remdur=rdur pctcomp=pctc noautoupdt;
run;
Output 2.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 |
Anal. Market |
Write Specs |
5 |
Completed |
5 |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
0 |
0 |
02DEC91 |
06DEC91 |
0 |
0 |
2 |
Drawings |
Prototype |
|
|
10 |
Completed |
11 |
07DEC91 |
17DEC91 |
07DEC91 |
17DEC91 |
07DEC91 |
17DEC91 |
0 |
0 |
07DEC91 |
16DEC91 |
0 |
1 |
3 |
Anal. Market |
Mkt. Strat. |
|
|
5 |
Completed |
5 |
06DEC91 |
10DEC91 |
06DEC91 |
10DEC91 |
06DEC91 |
10DEC91 |
0 |
0 |
07DEC91 |
11DEC91 |
-1 |
-1 |
4 |
Write Specs |
Prototype |
|
|
5 |
Completed |
6 |
08DEC91 |
13DEC91 |
08DEC91 |
13DEC91 |
08DEC91 |
13DEC91 |
0 |
0 |
07DEC91 |
11DEC91 |
1 |
2 |
5 |
Prototype |
Materials |
Facility |
|
15 |
Pending |
. |
. |
. |
20DEC91 |
07JAN92 |
20DEC91 |
07JAN92 |
0 |
0 |
17DEC91 |
04JAN92 |
3 |
3 |
6 |
Mkt. Strat. |
Test Market |
Marketing |
|
10 |
In Progress |
. |
11DEC91 |
. |
11DEC91 |
22DEC91 |
11DEC91 |
22DEC91 |
0 |
0 |
12DEC91 |
21DEC91 |
-1 |
1 |
7 |
Materials |
Init. Prod. |
|
|
10 |
Pending |
. |
. |
. |
08JAN92 |
17JAN92 |
08JAN92 |
17JAN92 |
0 |
0 |
05JAN92 |
14JAN92 |
3 |
3 |
8 |
Facility |
Init. Prod. |
|
|
10 |
Pending |
. |
. |
. |
08JAN92 |
17JAN92 |
08JAN92 |
17JAN92 |
0 |
0 |
05JAN92 |
14JAN92 |
3 |
3 |
9 |
Init. Prod. |
Test Market |
Marketing |
Evaluate |
10 |
Pending |
. |
. |
. |
18JAN92 |
27JAN92 |
18JAN92 |
27JAN92 |
0 |
0 |
15JAN92 |
24JAN92 |
3 |
3 |
10 |
Evaluate |
Changes |
|
|
10 |
Pending |
. |
. |
. |
28JAN92 |
06FEB92 |
02FEB92 |
11FEB92 |
5 |
5 |
25JAN92 |
03FEB92 |
3 |
3 |
11 |
Test Market |
Changes |
|
|
15 |
Pending |
. |
. |
. |
28JAN92 |
11FEB92 |
28JAN92 |
11FEB92 |
0 |
0 |
25JAN92 |
08FEB92 |
3 |
3 |
12 |
Changes |
Production |
|
|
5 |
Pending |
. |
. |
. |
12FEB92 |
16FEB92 |
12FEB92 |
16FEB92 |
0 |
0 |
09FEB92 |
13FEB92 |
3 |
3 |
13 |
Production |
|
|
|
0 |
Pending |
. |
. |
. |
17FEB92 |
17FEB92 |
17FEB92 |
17FEB92 |
0 |
0 |
14FEB92 |
14FEB92 |
3 |
3 |
14 |
Marketing |
|
|
|
0 |
Pending |
. |
. |
. |
28JAN92 |
28JAN92 |
17FEB92 |
17FEB92 |
20 |
20 |
25JAN92 |
25JAN92 |
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 2.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. Note that the activity `Prototype' has no progress
information in WIDGACT, but it is assumed to have an actual start date
of December 18, 1991. 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, allows 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
`Anal. Market' has L_START=`09JAN92' instead of `06DEC91',
as in the earlier
invocation of PROC CPM (without the SHOWFLOAT option).
Output 2.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 |
Anal. Market |
Write Specs |
5 |
Completed |
5 |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
0 |
-1 |
02DEC91 |
06DEC91 |
0 |
0 |
2 |
Drawings |
Prototype |
|
|
10 |
Completed |
11 |
07DEC91 |
17DEC91 |
07DEC91 |
17DEC91 |
07DEC91 |
17DEC91 |
0 |
0 |
07DEC91 |
16DEC91 |
0 |
1 |
3 |
Anal. Market |
Mkt. Strat. |
|
|
5 |
Completed |
5 |
06DEC91 |
10DEC91 |
06DEC91 |
10DEC91 |
09JAN92 |
13JAN92 |
30 |
0 |
07DEC91 |
11DEC91 |
-1 |
-1 |
4 |
Write Specs |
Prototype |
|
|
5 |
Completed |
6 |
08DEC91 |
13DEC91 |
08DEC91 |
13DEC91 |
12DEC91 |
17DEC91 |
4 |
4 |
07DEC91 |
11DEC91 |
1 |
2 |
5 |
Prototype |
Materials |
Facility |
|
15 |
In Progress |
. |
18DEC91 |
. |
18DEC91 |
05JAN92 |
18DEC91 |
05JAN92 |
0 |
0 |
17DEC91 |
04JAN92 |
1 |
1 |
6 |
Mkt. Strat. |
Test Market |
Marketing |
|
10 |
In Progress |
. |
11DEC91 |
. |
11DEC91 |
22DEC91 |
14JAN92 |
25JAN92 |
30 |
30 |
12DEC91 |
21DEC91 |
-1 |
1 |
7 |
Materials |
Init. Prod. |
|
|
10 |
Pending |
. |
. |
. |
06JAN92 |
15JAN92 |
06JAN92 |
15JAN92 |
0 |
0 |
05JAN92 |
14JAN92 |
1 |
1 |
8 |
Facility |
Init. Prod. |
|
|
10 |
Pending |
. |
. |
. |
06JAN92 |
15JAN92 |
06JAN92 |
15JAN92 |
0 |
0 |
05JAN92 |
14JAN92 |
1 |
1 |
9 |
Init. Prod. |
Test Market |
Marketing |
Evaluate |
10 |
Pending |
. |
. |
. |
16JAN92 |
25JAN92 |
16JAN92 |
25JAN92 |
0 |
0 |
15JAN92 |
24JAN92 |
1 |
1 |
10 |
Evaluate |
Changes |
|
|
10 |
Pending |
. |
. |
. |
26JAN92 |
04FEB92 |
31JAN92 |
09FEB92 |
5 |
5 |
25JAN92 |
03FEB92 |
1 |
1 |
11 |
Test Market |
Changes |
|
|
15 |
Pending |
. |
. |
. |
26JAN92 |
09FEB92 |
26JAN92 |
09FEB92 |
0 |
0 |
25JAN92 |
08FEB92 |
1 |
1 |
12 |
Changes |
Production |
|
|
5 |
Pending |
. |
. |
. |
10FEB92 |
14FEB92 |
10FEB92 |
14FEB92 |
0 |
0 |
09FEB92 |
13FEB92 |
1 |
1 |
13 |
Production |
|
|
|
0 |
Pending |
. |
. |
. |
15FEB92 |
15FEB92 |
15FEB92 |
15FEB92 |
0 |
0 |
14FEB92 |
14FEB92 |
1 |
1 |
14 |
Marketing |
|
|
|
0 |
Pending |
. |
. |
. |
26JAN92 |
26JAN92 |
15FEB92 |
15FEB92 |
20 |
20 |
25JAN92 |
25JAN92 |
1 |
1 |
|
The following invocation of PROC CPM produced Output 2.13.4:
proc cpm data=widgact holidata=holidays
out=widgupdt date='2dec91'd;
activity task;
succ succ1 succ2 succ3;
duration days;
holiday holiday / holifin=(holifin);
baseline / compare=early;
actual / as=sdate af=fdate timenow='20dec91'd
remdur=rdur pctcomp=pctc
autoupdt showfloat;
run;
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.