Resources

Segmented Gantt Charts (gantte24)

/****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                 */
/*                                                              */
/*    NAME: GANTTE24                                            */
/*   TITLE: Segmented Gantt Charts (gantte24)                   */
/* PRODUCT: OR                                                  */
/*  SYSTEM: ALL                                                 */
/*    KEYS: GANTT                                               */
/*   PROCS: CPM, SORT, GANTT                                    */
/*    DATA:                                                     */
/*                                                              */
/* SUPPORT:                             UPDATE:                 */
/*     REF: Example 24 in the GANTT Chapter (PM User's Guide)   */
/*    MISC: Using the SEGMT_NO variable to produce segmented    */
/*             Gantt charts                                     */
/*                                                              */
/****************************************************************/

data sched;
   format city $12. from to date7. ;
   input person $ city & from & date7. to & date7. _pattern;
   datalines;
Clark   New York     01May04  03May04  10
Clark   Boston       06May04  09May04  11
Clark   Wisconsin    12May04  15May04  12
Clark   Chicago      18May04  24May04  13
Clark   New York     28May04  02Jun04  10
Stevens Charlotte    02May04  04May04  14
Stevens Atlanta      08May04  10May04  15
Stevens Dallas       12May04  15May04  16
Stevens Denver       17May04  20May04  17
Stevens Nashville    27May04  02Jun04  18
Stevens Charlotte    04Jun04  06Jun04  14
Jackson Los Angeles  01May04  08May04  19
Jackson Las Vegas    11May04  18May04  20
Jackson Portland     21May04  23May04  21
Jackson Seattle      25May04  29May04  22
Rogers  Miami        02May04  07May04  23
Rogers  Tampa        11May04  15May04  24
Rogers  New Orleans  18May04  24May04  25
Rogers  Houston      28May04  01Jun04  26
;

 /* Sort data by person, from */
proc sort data=sched;
   by person from;
   run;

/* Add Segmt_no variable */
data newsched;
   set sched;
   retain segmt_no;
   if person ne lag(person) then segmt_no=1;
   else segmt_no = segmt_no + 1;
   output;
   run;

proc print data=newsched;
   title2 'Data NEWSCHED';
   run;

data labels;
   _y=-1;
   _lvar="city";
   _xvar="from";
   _flabel="";
   _hlabel=0.75;
   _yoffset = -.2;
   run;

* set up required pattern statements;
pattern1 v=s r=25;

* set graphics options;
goptions htext=1.1;
title1 h=2 'Gantt Example 24';
title2 h=1.5 'Schedule of Cities Visited by Salesperson';
proc gantt graphics data=newsched labdata=labels;
id person;
chart / ss=from sf=to compress labsplit='.' scale=2
        nolegend nojobnum skip=3
        ref='01may04'd to '30jun04'd by week;
run;