The GANTT Procedure

Schedule Data Set

Often, the Schedule data set input to PROC GANTT is the output data set (the OUT= data set) produced by PROC CPM, sometimes with additional variables. Typically, this data set contains

  • the start and finish times for the early and late schedules (E_START, E_FINISH, L_START, and L_FINISH variables)

  • the actual start and finish times (A_START and A_FINISH variables) of activities that have been completed or are in progress for projects that are in progress or completed

  • the resource-constrained start and finish times of the activities (S_START and S_FINISH variables) for projects that have been scheduled subject to resource constraints

  • the baseline start and finish times (B_START and B_FINISH variables) of activities when monitoring and comparing the progress of a project against a target schedule

When such a data set is input as the Schedule data set to PROC GANTT, the procedure draws a Gantt chart showing five different schedules for each activity: the predicted early/late schedules using E_START, E_FINISH, L_START, and L_FINISH on the first line for the activity, the actual schedule using A_START and A_FINISH on the second line, the resource-constrained schedule using S_START and S_FINISH on the third line, and the baseline schedule using B_START and B_FINISH on the fourth line.

The SEGMT_NO Variable

Normally, each observation of the Schedule data set causes one set of bars to be plotted corresponding to the activity in that observation. If activity splitting has occurred during resource-constrained scheduling, the Schedule data set produced by PROC CPM contains more than one observation for each activity. It also contains a variable named SEGMT_NO. For activities that are not split, this variable has a missing value. For split activities, the number of observations in the Schedule data set is equal to (1 + the number of disjoint segments that the activity is split into). The first observation corresponding to such an activity has SEGMT_NO equal to missing, and the S_START and S_FINISH variables are equal to the start and finish times, respectively, of the entire activity. Following this observation, there are as many observations as the number of disjoint segments in the activity. All values for these segments are the same as the first observation for this activity except SEGMT_NO, S_START, S_FINISH, and the duration. SEGMT_NO is the index of the segment, S_START and S_FINISH are the resource-constrained start and finish times for this segment, and duration is the duration of this segment. See the section Displayed Output for details on how PROC GANTT treats the observations in this case.

Note: For a given observation in the Schedule data set, the finish times (E_FINISH, L_FINISH, A_FINISH, S_FINISH, and B_FINISH) denote the last day of work when the variables are formatted as SAS date values; if they are formatted as SAS time or datetime values, they denote the last second of work. For instance, if an activity has E_START='2JUN04' and E_FINISH='4JUN04', then the earliest start time for the activity is the beginning of June 2, 2004, and the earliest finish time is the end of June 4, 2004. Thus, PROC GANTT assumes that the early, late, actual, resource-constrained, or baseline finish time of an activity is at the end of the time interval specified for the respective variable. The exceptions to this type of default behavior occur when either the DURATION= option or the PADDING= option is in effect. See the section Specifying the PADDING= Option for further details.

All start and finish times, and additional variables specified in the CHART statement must be numeric and have the same formats. The ID and BY variables can be either numeric or character. Although the data set does not have to be sorted, the output may be more meaningful if the data are in order of increasing early start time. Further, if the data set contains segments of split activities, the data should also be sorted by SEGMT_NO for each activity.

A family of options, available only in graphics mode, enables you to display the precedence relationships between activities on the Gantt chart. The precedence relationships are established by specifying a set of variables in the CHART statement; this can be done in one of two ways. These variables must lie in the Schedule data set and, optionally, in the Precedence data set defined by the PRECDATA= option in the PROC GANTT statement. See the section Specifying the Logic Options for more details on producing a Logic Gantt chart.

Also available in graphics mode is an automatic text annotation facility that enables you to annotate labels on the Gantt chart independently of the SAS/GRAPH Annotate facility. A useful property of this facility is the ability to link label coordinates and text strings to variables in the Schedule data set. You can create links of two types. An implicit link automatically links an observation in the Label data set to every observation in the Schedule data set. An explicit link uses a variable that must exist on both data sets and be identical in type and length. For more information on the linking variable in the automatic text annotation facility, see the section Automatic Text Annotation.