The CPM Procedure

ACTUAL Statement

  • ACTUAL / actual options;

The ACTUAL statement identifies variables in the Activity data set that contain progress information about the activities in the project. For a project that is already in progress, you can describe the actual status of any activity by specifying the activity’s actual start, actual finish, remaining duration, or percent of work completed. At least one of the four variables (A_START, A_FINISH, REMDUR, PCTCOMP) needs to be specified in the ACTUAL statement. These variables are referred to as progress variables. The TIMENOW= option in this statement represents the value of the current time (referred to as TIMENOW), and it is used in conjunction with the values of the progress variables to check for consistency and to determine default values if necessary.

You can also specify options in the ACTUAL statement that control the updating of the project schedule. Using the ACTUAL statement causes four new variables (A_START, A_FINISH, A_DUR, and STATUS) to be added to the Schedule data set; these variables are defined in the section OUT= Schedule Data Set. See the section Progress Updating for more information.

The following options can be specified in the ACTUAL statement after a slash (/).

A_FINISH= variable
AF=variable

identifies a variable in the Activity data set that specifies the actual finish times of activities that are already completed. The actual finish time of an activity must be less than TIMENOW.

A_START= variable
AS=variable

identifies a variable in the Activity data set that specifies the actual start times of activities that are in progress or that are already completed. The actual start time of an activity must be less than TIMENOW.

AUTOUPDT

requests that PROC CPM should assume automatic completion (or start) of activities that are predecessors to activities already completed (or in progress). For example, if activity B is a successor of activity A, and B has an actual start time (or actual finish time or both) specified, while A has missing values for both actual start and actual finish times, then the AUTOUPDT option causes PROC CPM to assume that A must have already finished. PROC CPM then assigns activity A an actual start time and an actual finish time consistent with the precedence constraints. The AUTOUPDT option is the default.

ESTIMATEPCTC
ESTPCTC
ESTPCTCOMP
ESTPROG

indicates that a variable named PCT_COMP is to be added to the Schedule output data set (and the Resource Schedule output data set) that contains the percent completion time for each activity (for each resource used by each activity) in the project. This value is 0 for activities that have not yet started and 100 for completed activities; for activities in progress, this value is computed using the actual start time, the value of TIMENOW, and the revised duration of the activity.

FIXASTART

specifies that the actual start time of an activity should not be overwritten if it is specified to be on a non-work day. By default, none of the start or finish times of an activity can occur during a non-work period corresponding to the activity’s calendar. If the actual start time is specified on a non-work day, it is moved to the nearest work day. The FIXASTART option specifies that the actual start and finish times be left unchanged even if they coincide with a non-working time. Thus, if the actual start time is specified to be sometime on Sunday, it is left unchanged even if Sunday is a non-working day in the activity’s calendar.

NOAUTOUPDT

requests that PROC CPM should not assume automatic completion of activities. (The NOAUTOUPDT option is the reverse of the AUTOUPDT option.) In other words, only those activities that have nonmissing actual start or nonmissing actual finish times or both (either specified as values for the A_START and A_FINISH variables or computed on the basis of the REMDUR or PCTCOMP variables and TIMENOW) are assumed to have started; all other activities have an implicit start time that is greater than or equal to TIMENOW. This option requires you to enter the progress information for all the activities that have started or are complete; an activity is assumed to be pending until one of the progress variables indicates that it has started.

PCTCOMP=variable
PCTCOMPLETE=variable
PCOMP=variable

identifies a variable in the Activity data set that specifies the percentage of the work that has been completed for the current activity. The values for this variable must be between 0 and 100. A value of 0 for this variable means that the current activity has not yet started. A value of 100 means that the activity is already complete. Once again, the value of the TIMENOW= option is used as a reference point to resolve the values specified for the PCTCOMP variable. See the section Progress Updating for more information.

REMDUR=variable
RDURATION=variable
RDUR=variable

identifies a variable in the Activity data set that specifies the remaining duration of activities that are in progress. The values of this variable must be nonnegative: a value of 0 for this variable means that the activity in that observation is completed, while a value greater than 0 means that the activity is not yet complete (the remaining duration is used to revise the estimate of the original duration). The value of the TIMENOW parameter is used to determine an actual start time or an actual finish time or both for activities based on the value of the remaining duration. See the section Progress Updating for further information.

SHOWFLOAT

This option in the ACTUAL statement indicates that PROC CPM should allow activities that are completed or in progress to have nonzero float. By default, all activities that are completed or in progress have the late start schedule set to be equal to the early start schedule and thus have both total float and free float equal to 0. If the SHOWFLOAT option is specified, the late start schedule is computed for in-progress and completed activities using the precedence and time constraints during the backward pass.

TIMENOW=timenow
CURRDATE=timenow

specifies the SAS date, time, or datetime value that is used as a reference point to resolve the values of the remaining duration and percent completion times when the ACTUAL statement is used. It can be thought of as the instant at the beginning of the specified date, when a snapshot of the project is taken; the actual start times or finish times or both are specified for all activities that have started or have been completed by the end of the previous day. If an ACTUAL statement is used without specification of the TIMENOW= option, the default value is set to be the time period following the maximum of all the actual start and finish times that have been specified; if there are no actual start or finish times, then TIMENOW is set to be equal to the current date. See the section Progress Updating for further information regarding the TIMENOW= option and the ACTUAL statement.

TIMENOWSPLT

indicates that activities that are in progress at TIMENOW can be split at TIMENOW if they cause resource infeasibilities. During resource allocation, any activities with values of E_START less than TIMENOW are scheduled even if there are not enough resources (a warning message is printed to the log if this is the case). This is true even for activities that are in progress. The TIMENOWSPLT option permits an activity to be split into two segments at TIMENOW, allowing the second segment of the activity to be scheduled later when resource levels permit. See the section Activity Splitting for information regarding activity segments. Activities with an alignment type of MS or MF are not allowed to be split; also, activities without resource requirements will not be split.