The GANTT Procedure |
Although each of the examples shown so far uses PROC CPM to produce the Schedule data set for PROC GANTT, this is by no means a requirement of the GANTT procedure. While the CPM procedure is a convenient means for producing different types of schedules, you can create your own schedule and draw a Gantt chart of the schedule without any intervention from PROC CPM. This is done by storing the schedule information in a SAS data set and specifying the data set name using the DATA= option in the PROC GANTT statement. It is also not necessary for the variables in the data set to have specific names, although giving the variables certain names can eliminate the need to explicitly identify them in the CHART statement.
An example of the direct type of input can be seen in Example 6.10 which illustrates plotting of the actual schedule. In Example 6.10, PROC CPM was used to compute the predicted early/late schedule, which was then stored in the SAVEH data set. However, information about the actual schedule, which was provided in the COMPLETE data set, was not used by PROC CPM. Instead, this information was merged with the SAVEH data set to form WIDGELA, the Schedule data set for PROC GANTT. The variables representing the actual start and finish were identified to PROC GANTT using the A_START= and A_FINISH= options, respectively, in the CHART statement. The identification of the variables would not have been necessary if the start and finish variable names were A_START and A_FINISH, respectively.
The following example draws a Gantt chart of the early, late, and resource-constrained schedules for the widget manufacturing project. The schedule information is held in the WIDGDIR data set. The WIDGDIR data set contains the variables TASK, SEGMT_NO, DUR, RS, RF, E_START, E_FINISH, SDATE, and FDATE. The variable TASK identifies the activity. E_START and E_FINISH are recognized as the default names of the early start and early finish variables, respectively. The variables SDATE and FDATE define the late start and late finish times, respectively. Since these are not the default names for the late schedule variables, they need to be identified as such by specifying the LS= and LF= options (or the L_START= and L_FINISH= options) in the CHART statement. The variables RS and RF represent the resource-constrained start and finish times, respectively. As with the late schedule, these variables need to be identified to PROC GANTT by specifying the SS= and SF= options (or the S_START= and S_FINISH= options) in the CHART statement. Further, the SEGMT_NO variable identifies the segment number of the resource constrained schedule that an observation corresponds to since these are activities that start and stop multiple times before completion. The ZDUR variable is identified as a zero duration indicator by specifying the DUR= option in the CHART statement. Since ZDUR is zero for 'Production' and 'Marketing,' these activities are represented by milestones on the chart. Notice that although all the other activities have a value of '1' for the ZDUR variable, any nonzero value will produce the same result. This is due to the fact that PROC GANTT only uses this variable as an indicator of whether the activity has zero duration or not, in contrast to the interpretation of the DURATION variable in PROC CPM.
options ps=60 ls=100; title 'Gantt Example 14'; /* Activity-on-Node representation of the project */ data widgdir; format task $12. rs rf e_start e_finish sdate fdate date7.; input task & segmt_no zdur rs & date7. rf & date7. e_start & date7. e_finish & date7. sdate & date7. fdate & date7.; datalines; Approve Plan . 1 01DEC03 05DEC03 01DEC03 05DEC03 01DEC03 05DEC03 Drawings . 1 08DEC03 23DEC03 08DEC03 19DEC03 08DEC03 19DEC03 Drawings 1 1 08DEC03 09DEC03 08DEC03 19DEC03 08DEC03 19DEC03 Drawings 2 1 12DEC03 23DEC03 08DEC03 19DEC03 08DEC03 19DEC03 Study Market . 1 08DEC03 12DEC03 08DEC03 12DEC03 21JAN04 27JAN04 Write Specs . 1 08DEC03 12DEC03 08DEC03 12DEC03 15DEC03 19DEC03 Prototype . 1 24DEC03 15JAN04 22DEC03 13JAN04 22DEC03 13JAN04 Mkt. Strat. . 1 15DEC03 20JAN04 15DEC03 29DEC03 28JAN04 10FEB04 Mkt. Strat. 1 1 15DEC03 23DEC03 15DEC03 29DEC03 28JAN04 10FEB04 Mkt. Strat. 2 1 16JAN04 20JAN04 15DEC03 29DEC03 28JAN04 10FEB04 Materials . 1 16JAN04 29JAN04 14JAN04 27JAN04 14JAN04 27JAN04 Facility . 1 16JAN04 29JAN04 14JAN04 27JAN04 14JAN04 27JAN04 Init. Prod. . 1 30JAN04 12FEB04 28JAN04 10FEB04 28JAN04 10FEB04 Evaluate . 1 13FEB04 26FEB04 11FEB04 24FEB04 18FEB04 02MAR04 Test Market . 1 13FEB04 04MAR04 11FEB04 02MAR04 11FEB04 02MAR04 Changes . 1 05MAR04 11MAR04 03MAR04 09MAR04 03MAR04 09MAR04 Production . 0 12MAR04 12MAR04 10MAR04 10MAR04 10MAR04 10MAR04 Marketing . 0 13FEB04 13FEB04 11FEB04 11FEB04 10MAR04 10MAR04 ; data holdata; format hol date7.; input hol & date7.; datalines; 25dec03 01jan04 ;
title2 'Specifying the Schedule Data Directly'; proc gantt data=widgdir holidata=holdata; chart / holiday=(hol) dur=zdur ss=rs sf=rf ls=sdate lf=fdate height=1.5 pcompress; id task; run;Output 6.14.1: Specifying the Schedule Data Directly
Copyright © 2008 by SAS Institute Inc., Cary, NC, USA. All rights reserved.