The GANTT Procedure

 
Displayed Output

The GANTT procedure produces one or more pages of displayed values and a plot of the schedule. If the SUMMARY option is specified, the chart is preceded by a detailed description of the symbols used. A legend is displayed at the foot of the chart on each page unless suppressed by the NOLEGEND option. The main body of the output consists of columns of the ID values and the Gantt chart of the schedule.

For each activity in the project, PROC GANTT displays the values of the ID variables in the ID columns and plots any combination of the following schedules: the predicted schedule as specified by the early and late start and finish times, the actual schedule as specified by the actual start and finish times, the resource-constrained schedule as specified by the resource-constrained start and finish times, and the baseline schedule as specified by the baseline start and finish times. The procedure looks for default variable names for each of these times (E_START for early start, E_FINISH for early finish, S_START for resource-constrained start times, and so on), or you can explicitly specify the names of the appropriate variables using the ES=, EF=, LS=, ...options.

By specifying the COMBINE option in the CHART statement, you can request PROC GANTT to represent early, late, and actual schedule information on a single bar rather than use two separate bars (one for the early and late schedules and the other for the actual schedule.) PROC GANTT automatically draws a timenow line when the COMBINE option is specified with the property that all times to the left of the line represent the actual schedule times (that is, times that have already taken place) and all times to the right of the line represent the predicted early/late schedule times (times that have not yet taken place.)

Normally, each observation in the Schedule data set is assumed to denote a new activity, and a new set of ID values are displayed and the schedules corresponding to this activity are plotted on the chart. There are two exceptions to this rule:

  • If the ID values for two or more consecutive observations are identical, only the first such observation is used.

  • If there is a variable named SEGMT_NO in the Schedule data set, PROC GANTT assumes that the data set contains observations for segments of activities that were split during resource-constrained scheduling. In accordance with the conventions used by PROC CPM, only observations with a missing value for SEGMT_NO are assumed to denote a new activity. Further, the data are assumed to be sorted by SEGMT_NO for each activity. For each activity, PROC GANTT plots the schedules corresponding to the ES, EF, LS, LF, AS, and AF variables on the basis of the first observation for this activity, namely the observation with a missing value for the SEGMT_NO variable. This observation is also the one used for displaying values for the ID variables for this activity. If the activity is not split, this same observation is also the one used to plot the resource-constrained schedule as well as the baseline schedule. However, if the activity is split, then all the observations for this activity with integer values for the variable SEGMT_NO are used to plot the resource-constrained schedule as disjoint segments on the line used for plotting the S_START and S_FINISH times. Furthermore, PROC GANTT plots the baseline schedule corresponding to the BS and BF variables based on the last such observation, namely the observation with the largest value for the SEGMT_NO variable.

In addition to the schedules that are plotted, the Gantt chart also displays any variables specified in the CHART statement. Holidays, weekends, and breaks within a day are marked as appropriate. For details on how to specify holidays, weekends, and breaks within a day, see the section Multiple Calendars and Holidays. You can also represent zero duration activities with milestone symbols, draw a timenow line to reflect the current time of the project, draw horizontal connect lines, draw vertical reference lines, and group the activities by zones on the Gantt chart. It is important to note that all times are plotted at the start of the appropriate time period. Thus, if the chart starts on June 1, 2004, in column 15 of the page and the value of E_START is '2JUN04,' MININTERVAL=DAY, and SCALE=5, then the early start time is plotted in column 20.

Each activity is identified by a job number (unless the NOJOBNUM option is used), which appears as the first column of activity text. The next column of activity text identifies the values of the ZONE= variable, if specified. This column can be suppressed by specifying the NOZONECOL option in the CHART statement. Next to appear are the ID variables in the order in which they are specified in the CHART statement. If the time axis of the chart is very wide, causing it to be divided across more than one page, the ID variables, by default, do not appear on continuation pages. You need to specify the IDPAGES option to produce the ID variable columns on every page. By default, if the ID variables occupy too much space, leaving no room for the chart to be started on the first page, they are omitted and a warning message is printed to the log. You can override this behavior by using the MAXIDS option. Column headings for the ZONE and ID variables consist of either variable labels (if they are present and if space permits) or variable names. To suppress variable labels in column headings, use the NOLABEL system option. If a ZONE or ID variable is formatted, the value is displayed using that format. If the CRITFLAG option is specified, a flag is displayed to the right of the ID values that indicates how critical the activity is. This flag is also repeated on continuation pages if the time axis occupies more than one page. The body of the chart starts to the right of this flag.

By default, the GANTT procedure is invoked in graphics mode. In graphics mode, you can fit the Gantt chart entirely on one page by specifying the COMPRESS option in the CHART statement. The HPAGES= and VPAGES= options take this one step further by enabling you to control the number of pages that you want the Gantt chart to be compressed into. The PCOMPRESS option behaves much like the COMPRESS option except that all compression is performed in a proportional manner, that is, by maintaining the aspect ratio of the Gantt chart.

PROC GANTT can display the precedence relationships (including nonstandard types) between activities on the Gantt chart by means of directed links between activities. Each link is drawn so as to convey the type of precedence relationship it represents. See the section Specifying the Logic Options for a detailed description on how this can be done.

In addition, graphics mode provides you with the easy-to-use automatic text annotation facility to generate labels on the Gantt chart. You can link labels and their coordinates to variables in the schedule data set and also have complete control over all attributes such as font, color, angle, rotation, and so forth. You also have the additional capability of annotating text and graphics independently on the Gantt chart by using the SAS/GRAPH Annotate facility.

The GANTT procedure offers you a wide variety of options in addition to text, bar, symbol, and line formatting controls to customize your Gantt chart. These features enable you to create a wide variety of charts such as Logic Gantt charts, zoned Gantt charts, multiproject Gantt charts, Web-enabled Gantt charts, and multiprocess Gantt charts, to name but a few.