LAN Selection Project
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: PMEX03 */
/* TITLE: LAN Selection Project */
/* PRODUCT: OR */
/* SYSTEM: ALL */
/* KEYS: CPM */
/* PROCS: CPM, PRINT, NETDRAW, GANTT, SORT, GCHART, SUMMARY */
/* DATA: */
/* */
/* SUPPORT: UPDATE: */
/* REF: Example 3 of Project Management Examples Book */
/* MISC: Bostwick, Mini-Micro Systems, Feb. 14, 1986 */
/* */
/****************************************************************/
goptions border hpos=80 vpos=43
fby=swiss
ftitle=swiss
htitle=2
ftext=swiss
htext=1.5;
pattern1 v=solid c=blue;
pattern2 v=e c=blue;
pattern3 v=solid c=red;
pattern4 v=e c=red;
pattern5 v=x2 c=red;
pattern6 v=solid c=green;
pattern7 v=e c=magenta;
pattern8 v=solid c=magenta;
pattern9 v=x1 c=cyan;
title 'LAN Selection Project';
data landata;
format act $25. s1 $25. subproj $20.;
input act & s1 & subproj & days;
cards;
Begin Measure Current Volume BEGIN PROCUREMENT 1
Begin Literature Survey BEGIN PROCUREMENT 1
Begin Determine Current Users BEGIN PROCUREMENT 1
Measure Current Volume Forecast Future Volume NEEDS ASSESSMENT 2
Literature Survey Manufacturer Demos MARKET SURVEY 5
Determine Current Users Forecast Future Needs NEEDS ASSESSMENT 2
Forecast Future Volume Prepare Network Spec NEEDS ASSESSMENT 2
Manufacturer Demos Identify Vendors MARKET SURVEY 5
Forecast Future Needs Prepare Network Spec NEEDS ASSESSMENT 2
Identify Vendors Prepare Network Spec MARKET SURVEY 2
Prepare Network Spec Prepare RFQ NEEDS ASSESSMENT 2
Prepare Network Spec Prepare Cable Plan NEEDS ASSESSMENT 2
Prepare RFQ Evaluate Vendor Responses VENDOR SELECTION 4
Prepare Cable Plan Procure Cable SITE PREPARATION 4
Evaluate Vendor Responses Notify Final Candidate VENDOR SELECTION 15
Procure Cable Install Cable SITE PREPARATION 22
Notify Final Candidate Negotiate Price/Config VENDOR SELECTION 1
Install Cable Install LAN Hardware SITE PREPARATION 10
Negotiate Price/Config Prepare Purchase Order VENDOR SELECTION 3
Prepare Purchase Order Server Functional Spec VENDOR SELECTION 1
Prepare Purchase Order Procure LAN Hardware VENDOR SELECTION 1
Server Functional Spec Server Detail Design SPECIAL HARDWARE 5
Procure LAN Hardware Receive Network Hardware NETWORK INSTALLATION 25
Server Detail Design Server Coding SPECIAL HARDWARE 10
Receive Network Hardware Install LAN Hardware NETWORK INSTALLATION 4
Server Coding Test Server Code SPECIAL HARDWARE 10
Install LAN Hardware Test Network NETWORK INSTALLATION 7
Test Server Code Install/Integrate Server SPECIAL HARDWARE 5
Test Network LAN Available NETWORK INSTALLATION 5
Install/Integrate Server LAN Available SPECIAL HARDWARE 2
LAN Available . NETWORK AVAILABLE 1
;
data lholiday;
format holista date7. holifin date7.;
input holista date7. @9 holifin date7.;
cards;
28nov91 29nov91
24dec91 27dec91
01jan92 01jan92
;
proc cpm data=landata out=lanout1 collapse
interval=workday date='04nov91'd
holidata=lholiday;
activity act;
duration days;
id subproj;
successor s1;
holiday holista/holifin=(holifin);
run;
proc sort data=lanout1;
by e_start;
run;
title2 'Initial Schedule (with Holidays)';
proc print data=lanout1 noobs;
var act days e_start e_finish l_start
l_finish t_float;
format e_start l_start e_finish l_finish
datetime7.;
run;
proc gantt graphics data=lanout1
holidata=lholiday;
chart/compress nojobnum
holiday=(holista) holifin=(holifin);
id act;
run;
proc cpm data=landata out=lanout
interval=workday date='04nov91'd
holidata=lholiday;
activity act;
duration days;
id subproj;
successor s1;
holiday holista/holifin=(holifin);
run;
title2 'Timescaled Network';
pattern1 v=e;
pattern2 c=red;
proc netdraw graphics data=lanout;
format e_start e_finish datetime7.;
actnet/activity=act succ=(s1) nodefid
id=(act e_start e_finish)
duration=days timescale linear
mininterval=dtmonth compress font=simplex;
run;
proc netdraw graphics data=lanout;
format e_start e_finish datetime7.;
actnet/activity=act succ=(s1) nodefid
id=(act e_start e_finish)
duration=days timescale linear
mininterval=dtmonth;
run;
pattern1 v=s;
pattern2 c=blue;
/* Resource Codes: S System Engineer I */
/* E System Engineer II */
/* A Purchasing Agent */
/* O Operations Manager */
/* T Technician */
/* M Maintenance */
/* R Receiving Inspector */
/* P Programmer */
data resource;
input act & $25. s e a o t m r p;
cards;
Begin . . . . . . . .
Begin . . . . . . . .
Begin . . . . . . . .
Measure Current Volume . 8 . . . . . .
Literature Survey 40 . . . . . . .
Determine Current Users 8 . . . . . . .
Forecast Future Volume . 8 . . . . . .
Manufacturer Demos 10 10 . . . . . .
Forecast Future Needs . 8 . . . . . .
Identify Vendors 16 16 . . . . . .
Prepare Network Spec 16 16 . . . . . .
Prepare Network Spec 16 16 . . . . . .
Prepare RFQ 32 32 32 . . . . .
Prepare Cable Plan 32 32 . 32 . . . .
Evaluate Vendor Responses 60 60 60 . . . . .
Procure Cable . . 16 . . . . .
Notify Final Candidate . . 8 . . . . .
Install Cable . . . 80 80 80 . .
Negotiate Price/Config 24 24 24 . . . . .
Prepare Purchase Order . . 8 . . . . .
Prepare Purchase Order . . 8 . . . . .
Server Functional Spec 40 . . . . . . 40
Procure LAN Hardware . . 8 . . . . .
Server Detail Design . . . . . . . 80
Receive Network Hardware . . 24 . . . 24 .
Server Coding . . . . . . . 80
Install LAN Hardware . 56 . . 56 56 . .
Test Server Code . . . . . . . 40
Test Network 40 40 . . 40 . . .
Install/Integrate Server 16 . . . . . . 16
LAN Available . . . . . . . .
;
data landata;
merge landata resource;
s = s/(8*days);
e = e/(8*days);
a = a/(8*days);
o = o/(8*days);
t = t/(8*days);
m = m/(8*days);
r = r/(8*days);
p = p/(8*days);
run;
data lreslvl;
format date date7.;
input s e a o t m r p date date7.;
cards;
1 1 1 1 1 1 1 1 04nov91
;
proc cpm data=landata out=lanout2 collapse
interval=workday date='04nov91'd
holidata=lholiday resin=lreslvl resout=lresusg;
activity act;
duration days;
id subproj;
successor s1;
holiday holista/holifin=(holifin);
resource s e a o t m r p/period=date delayanalysis;
baseline / set=resource;
run;
proc sort data=lanout2;
by s_start;
run;
title2 'Schedule with Resource Limitations';
proc print data=lanout2 noobs;
var act days s_start s_finish r_delay delay_r;
format s_start s_finish datetime7.;
run;
data delay (keep=res r_delay);
set lanout2;
res=delay_r;
if delay_r=' ' then res='NONE';
label res='Delaying Resource';
run;
title2 h=1.5 'Distribution of Delaying Resources';
goptions htext=1.2;
proc gchart data=delay;
pie res / type=freq
percent=outside
value=outside
slice=outside
explode='NONE'
noheading;
run;
goptions htext=1.5;
title2 'Total (and Average) Workdays of Delay';
proc gchart data=delay;
vbar res / midpoints= 'a' 's'
mean width=30
type=sum
sumvar=r_delay;
run;
proc sort data=landata;
by act;
run;
proc sort data=lanout2;
by act;
run;
data split;
merge landata lanout2 (keep=act b_start b_finish);
by act;
mindur=1;
run;
proc cpm data=split out=lanout3 collapse
interval=workday date='04nov91'd
holidata=lholiday resin=lreslvl resout=lresusg1;
activity act;
duration days;
id subproj;
successor s1;
holiday holista/holifin=(holifin);
resource s e a o t m r p/period=date
minsegmtdur=mindur noe_start nol_start;
baseline / compare=resource;
run;
data temp;
set lanout3;
retain tstart;
if segmt_no = . then tstart=s_start;run;
proc sort data=temp;
by tstart;
run;
title2 'Schedule Allowing Activity Splitting';
proc gantt graphics holidata=lholiday data=temp;
chart/compress nojobnum
holiday=(holista) holifin=(holifin);
id act;
run;
title2 'Subproject Summary Schedule';
proc sort data=temp;
by subproj;
run;
proc summary data=temp;
by subproj;
output out=lsummary min(s_start)= max(s_finish)= ;
var s_start s_finish;
run;
proc sort data=lsummary;
by s_start;
format s_start s_finish datetime7.;
run;
proc gantt data=lsummary graphics holidata=lholiday;
chart/compress nojobnum nolegend
holiday=(holista) holifin=(holifin)
skip=3
ref='04nov91:09:00'dt to '30mar92:09:00'dt
by dtweek lref=2;
id subproj;
run;