Chapter Contents
Chapter Contents
The GANTT Procedure

Example 4.20: Nonstandard Precedence Relationships

This example demonstrates the use of nonstandard precedence relationships and specification of the PRECDATA= option in the PROC GANTT statement. The project and nonstandard precedence relationships are defined via the WIDGLAG2 data set, which is a modification of the WIDGLAG data set that was used in Example 2.11 to illustrate the CPM procedure. The activity and successor variables are represented by the TASK and SUCC variables, respectively, and the lag type of the relationship is defined by the LAGDUR variable. The LAGDUR variable defines the lag type in keyword_duration_calendar format for the purpose of passing the information to PROC CPM. Although PROC GANTT accepts this format for a lag variable, it does not use the duration and calendar values when drawing the connection since the schedule is already computed at this time (presumably by PROC CPM).

As in the WIDGLAG data set, the WIDGLAG2 data set specifies a Start-to-Start lag of nine days between the activity 'Prototype' and its successors, 'Materials' and 'Facility', and a Finish-to-Start lag of two days between 'Facility' and 'Init. Prod.'. In addition, changes to the widget design are permitted to be made no earlier than six days after in-house evaluation of the product has begun. Furthermore, the Engineering department has to ensure that there will be at least three days available for any changes that need to be carried out after the test market results have come in. These constraints are incorporated in the WIDGLAG data set by setting the value of the LAGDUR variable equal to 'ss_6' for the relationship between 'Evaluate' and 'Changes' and equal to 'ff_3' for the relationship between 'Test Market' and 'Changes'.

The project is scheduled using PROC CPM subject to weekends and the holidays defined in the HOLIDAYS data set. Specifying the COLLAPSE option in the PROC CPM statement ensures that there is one observation per activity. The WIDGLAGH data set is created by deleting the successor variable from the Schedule data set produced by PROC CPM.

Since there is no precedence information contained in the WIDGLAGH data set, specifying DATA=WIDGLAGH in the PROC GANTT statement without the PRECDATA= option produces a nonprecedence Gantt chart. You can produce a Logic Gantt chart by specifying the precedence information using the PRECDATA= option in the PROC GANTT statement as long as the activity variable is common to both the schedule and Precedence data sets.

The Gantt chart shown in Output 4.20.1 is produced by specifying PRECDATA=WIDGLAG2. The lag type of the precedence connections is indicated to PROC GANTT using the LAG= option in the CHART statement. The width of the precedence connections is set to 2 via the WPREC= option, and the color of the connections is set to blue using the CPREC= option. The MININTGV= and MINOFFLV= options are specified in the CHART statement in an attempt to minimize the number of 5-segment connections. A reference line with a line style of 2 is drawn at the beginning of every month by using the REF= and LREF= options in the CHART statement.

   options ps=60 ls=100;

   title f=swiss 'Gantt Example 20';

   /* Activity-on-Node representation of the project with lags */
   data widglag2;
      input task $ 1-12 days succ $ 19-30 lagdur $ 33-37;
   Approve Plan   5  Drawings
   Approve Plan   5  Anal. Market
   Approve Plan   5  Write Specs
   Drawings      10  Prototype
   Anal. Market   5  Mkt. Strat.
   Write Specs    5  Prototype
   Prototype     15  Materials     ss_9
   Prototype     15  Facility      ss_9
   Mkt. Strat.   10  Test Market
   Mkt. Strat.   10  Marketing
   Materials     10  Init. Prod.
   Facility      10  Init. Prod.   fs_2
   Init. Prod.   10  Test Market
   Init. Prod.   10  Marketing
   Init. Prod.   10  Evaluate
   Evaluate      10  Changes       ss_6
   Test Market   15  Changes       ff_3
   Changes        5  Production
   Production     0
   Marketing      0

   data holidays;
      format holiday holifin date7.;
      input holiday date8. holifin date8. holidur;
   25dec91 27dec91 4
   01jan92 .       .

   proc cpm data=widglag2 holidata=holidays date='2dec91'd
            interval=weekday collapse;
      activity task;
      succ     succ / lag = (lagdur);
      duration days;
      holiday  holiday / holifin=(holifin);

   data widglagh;
      set _last_;
      drop succ;

   * set background to light gray

   goptions cback=ltgray;

   * set vpos to 50 and hpos to 100;

   goptions vpos=50 hpos=100;

   * set up required pattern statements;

   pattern1 c=blue  v=s;  /* duration of a noncrit. activity  */
   pattern2 c=blue  v=e;  /* slack time for a noncrit. act.   */
   pattern3 c=red   v=s;  /* duration of a critical activity  */
   pattern4 c=red   v=e;  /* slack time for a supercrit. act. */
   pattern5 c=red   v=r2; /* duration of a supercrit. act.    */
   pattern6 c=cyan  v=s;  /* actual duration of an activity   */
   pattern7 c=black v=x1; /* break due to a holiday           */

   title2 f=swiss
      'Non-standard Precedence Relationships and the PRECDATA= Option';

   proc gantt data=widglagh precdata=widglag2
      chart / compress dur=days
           holiday=(holiday) holifin=(holifin)
           cframe=cyan cmile=blue font=swiss
           ref='01dec91'd to '01mar92'd by month
           cref=black lref=2 reflabel
           act=task succ=(succ) lag=(lagdur)
           minintgv=2 minofflv=.5
           cprec=blue wprec=2;
      id task;

Output 4.20.1: Nonstandard Precedence Relationships
ga20.gif (7630 bytes)

Chapter Contents
Chapter Contents

Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.