Customizing the Line-printer Gantt Chart (gantt2)
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: GANTT2 */
/* TITLE: Customizing the Line-printer Gantt Chart (gantt2) */
/* 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;