/**********************************************************************/
/* Read factory floor plan coordinates */
data flrplan(drop=i);
length area $15;
input area & $ @@;
do i=1 to 4;
input x y @;
output;
end;
cards;
Receiving 0 0 0 10 10 10 10 0
Stockroom 0 10 0 25 10 25 10 10
Auto. Assembly 10 15 10 25 20 25 20 15
Manual Assembly 20 15 20 25 30 25 30 15
Testing 30 15 30 25 45 25 45 15
Shipping 35 0 35 15 45 15 45 0
;
/**********************************************************************/
/* Sort the FLRPLAN data set */
proc sort;
by area;
run;
/* Obtain center coordinates for each area */
proc means data=flrplan mean noprint;
var x y;
by area;
output out=centers mean=meanx meany;
run;
/**********************************************************************/
/* Define Annotate data set */
data anno;
set centers;
length text $15;
retain xsys ysys '2' hsys '3'
when 'a'
function 'label'
style 'hwpsl019'
position '+'
size 3
color 'black';
x=meanx;
y=meany;
text=trim(left(area));
run;
/**********************************************************************/
/* Create format for response variable */
proc format;
value dohfmt low - 2.9 ='less than 3'
3.0 - 5.9 ='3 to 6'
6.0 - 10.0='6 to 10'
10.1 - high='more than 10';
run;
/**********************************************************************/
/* Read month-end inventory data */
data invdata;
length area $15;
input area & $ invalue thruput;
daysoh=round(invalue*30.5/thruput,0.1);
cards;
Receiving 3550 54137
Stockroom 36200 36803
Auto. Assembly 2153 43777
Manual Assembly 4377 44500
Testing 18920 57706
Shipping 6990 71065
Factory Total 72190 71065
;
/**********************************************************************/
/* Specify graphics options */
goptions reset=all device=pscolor ftext=hwpsl019
rotate=landscape nodisplay;
/* Specify PATTERN, LEGEND and TITLE statements */
pattern1 value=msolid color=vpab; /* Very pale blue */
pattern2 value=msolid color=vpag; /* Very pale green */
pattern3 value=msolid color=paoy; /* Pale orange-yellow */
pattern4 value=msolid color=liypk; /* Light yellowish pink */
legend1 label=(height=2.5 pct justify=c 'Inventory' justify=c
'Days On-Hand')
value=(height=2.5 pct);
title1 height=4 pct
'Inventory Analysis - January 1996';
/**********************************************************************/
/* Produce the floor plan */
proc gmap map=flrplan data=invdata gout=temp;
id area;
choro daysoh / discrete
legend=legend1
coutline=black
annotate=anno;
format daysoh dohfmt.;
run;
quit;
/**********************************************************************/
/* Reset titles and set system options */
title1;
options nodate nonumber nocenter;
/* Define external file to be created */
filename tabout 'tab.out';
/* Run PRINTTO before TABULATE to route output to file */
proc printto new file=tabout;
run;
/* Create table */
proc tabulate data=invdata order=data;
class area;
var invalue thruput daysoh;
table area='AREA:', invalue='Inventory Value'*sum=' '*f=dollar10.
thruput='Monthly Throughput'*sum=' '*f=dollar10.
daysoh='Inventory Days On-Hand'*sum=' '
/rts=16;
run;
/* Run PRINTTO after TABULATE to route output back to */
/* default location */
proc printto;
run;
/**********************************************************************/
/* Specify graphics options */
goptions hpos=50 vpos=30 ftext=hwpsl003;
/* Use JPRINT procedure to create GRSEG entry from */
/* TABULATE output */
proc jprint fileref=tabout gout=temp;
run;
quit;
/**********************************************************************/
/* Specify graphics options */
goptions hpos=0 vpos=0 display;
/* Combine the floor plan and table */
proc greplay nofs igout=temp gout=temp;
tc temp;
tdef invntory 1/
2/llx=30 lly=10
ulx=30 uly=50
urx=70 ury=50
lrx=70 lry=10
;
template invntory;
tplay 1:gmap 2:jprint;
run;
quit;
/**********************************************************************/