Customizing the Line-printer Gantt Chart (gantte02)

 /****************************************************************/
 /*          S A S   S A M P L E   L I B R A R Y                 */
 /*                                                              */
 /*    NAME: GANTTE02                                            */
 /*   TITLE: Customizing the Line-printer Gantt Chart (gantte02) */
 /* PRODUCT: OR                                                  */
 /*  SYSTEM: ALL                                                 */
 /*    KEYS: GANTT                                               */
 /*   PROCS: CPM, SORT, GANTT                                    */
 /*    DATA:                                                     */
 /*                                                              */
 /* SUPPORT:                             UPDATE:                 */
 /*     REF: Example 2 of the GANTT Chapter (PM User's Guide)    */
 /*    MISC:                                                     */
 /*                                                              */
 /****************************************************************/

options ls=86 ps=55;

data;
   format activity $20. success1 $20. success2 $20. success3 $20.
                        success4 $20.;
   input activity dur success1-success4;
   datalines;
form                 4 pour . . .
pour                 2 core . . .
core                14 strip spray_fireproof insulate_walls .
strip                2 plumbing curtain_wall risers doors
strip                2 electrical_walls balance_elevator . .
curtain_wall         5 glaze_sash . . .
glaze_sash           5 spray_fireproof insulate_walls . .
spray_fireproof      5 ceil_ducts_fixture . . .
ceil_ducts_fixture   5 test . . .
plumbing            10 test . . .
test                 3 insulate_mechanical . . .
insulate_mechanical  3 lath . . .
insulate_walls       5 lath . . .
risers              10 ceil_ducts_fixture . . .
doors                1 port_masonry . . .
port_masonry         2 lath finish_masonry . .
electrical_walls    16 lath . . .
balance_elevator     3 finish_masonry . . .
finish_masonry       3 plaster marble_work . .
lath                 3 plaster marble_work . .
plaster              5 floor_finish tiling acoustic_tiles .
marble_work          3 acoustic_tiles . . .
acoustic_tiles       5 paint finish_mechanical . .
tiling               3 paint finish_mechanical . .
floor_finish         5 paint finish_mechanical . .
paint                5 finish_paint . . .
finish_mechanical    5 finish_paint . . .
finish_paint         2 caulking_cleanup . . .
caulking_cleanup     4 finished . . .
;

* invoke cpm to find the optimal schedule;

proc cpm finishbefore date='1sep04'd;
   activity activity;
   duration dur;
   successors success1-success4;
run;

* sort the schedule by the early start date;

proc sort;
   by e_start;
run;

title 'Gantt Example 2';
title2 'Customizing the Gantt Chart';

proc gantt lineprinter;
   chart / summary
           fill
           mininterval=week scale=5
           skip=2
           nolegend
           nojobnum critflag between=2
           ref='10jun04'd to '30aug04'd by 15;
   id activity;
   run;