/**********************************************************************/ /**********************************************************************/ /* THE FILES CONTAINED HEREIN ARE PROVIDED BY SAS INSTITUTE INC. */ /* "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, */ /* INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF */ /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. RECIPIENTS */ /* ACKNOWLEDGE AND AGREE THAT SAS INSTITUTE SHALL NOT BE LIABLE */ /* WHATSOEVER FOR ANY DAMAGES ARISING OUT OF THEIR USE OF THIS */ /* MATERIAL. IN ADDITION, SAS INSTITUTE WILL PROVIDE NO SUPPORT FOR */ /* THE MATERIALS CONTAINED HEREIN. */ /**********************************************************************/ /**********************************************************************/ /**********************************************************************/ /* Authors and Browning-Ferris Industries, Inc. are not responsible */ /* for any use and/or interpretation made as a result of */ /* using this code. */ /**********************************************************************/ libname gdevice0 'c:\sas\611p\sasuser'; filename filein 'c:\sas\trlinear\piper.dat'; filename out 'c:\sas\trlinear\piper.eps'; title; GOPTIONS reset=all device=myepsc rotate=landscape nodisplay; /*GOPTIONS device=win TARGET=WINPRTC; */ OPTIONS MACROGEN SYMBOLGEN MPRINT; DATA ONE; INFILE FILEIN; INPUT LOCNO $1 - 10 LOC $11 - 38 DATE:mmddyy8. CONST $47 - 50 DISTOT $51 CONC 52-64 SITENAME $65-76; CALL SYMPUT('SITE',TRIM(LEFT(SITENAME))); RUN; DATA ONE; SET ONE; IF CONST='FE ' THEN DELETE; RUN; DATA ONE; SET ONE(DROP=SITENAME); RUN; DATA TORD; SET ONE; IF DISTOT='T' OR DISTOT='D' THEN OUTPUT; RUN; DATA TORD; SET TORD; LENGTH DORT $1.; DORT=DISTOT; RUN; DATA TORD; SET TORD(DROP=LOCNO DATE CONST DISTOT CONC); RUN; PROC SORT DATA=TORD OUT=SORTORD; BY LOC; RUN; DATA SORTORD; SET SORTORD; BY LOC; IF LAST.LOC THEN OUTPUT; RUN; PROC SQL; CREATE TABLE TD AS SELECT * FROM ONE LEFT JOIN SORTORD ON ONE.LOC=SORTORD.LOC; QUIT; DATA LOOK; SET TD; LENGTH MISSING $5; IF CONC=. THEN MISSING='*'; IF CONC=. THEN CONC=0; RUN; PROC SORT DATA=TD OUT=SORTONE; BY LOC DATE CONST; RUN; PROC TRANSPOSE DATA=SORTONE OUT=TRANSONE; BY LOC DATE DORT LOCNO; VAR CONC; ID CONST; RUN; PROC SORT DATA=TRANSONE OUT=OUT1; BY LOC DATE; RUN; DATA OUT1; SET OUT1; BY LOC; RETAIN GROUP 100; IF FIRST.LOC THEN GROUP+1; RUN; DATA TRI; FORMAT LOCNO LOC DATE MG CA NA K CARB BICA SULF CHLO PH DORT SD; SET OUT1(DROP=_NAME_); RUN; PROC SORT DATA=TRI OUT=TRI; BY GROUP; RUN; DATA SORTRAN2; SET TRI; IF MG=. THEN MG=0; IF CA=. THEN CA=0; IF NA=. THEN NA=0; IF K=. THEN K=0; IF CARB=. THEN CARB=0; IF BICA=. THEN BICA=0; IF SULF=. THEN SULF=0; IF CHLO=. THEN CHLO=0; IF PH=. THEN PH=.; IF SD=. THEN SD=0; RUN; DATA RESULT1; SET SORTRAN2; LINE=1; MGRES = MG / 12.156; CARES = CA / 20.04; NARES = NA / 22.9898; KRES = K / 39.102; LTOTAL = (MGRES + CARES + NARES + KRES); CARBRES = CARB / 30.005; BICARES = BICA / 61.017; SULFRES = SULF / 48.031; CHLORES = CHLO / 35.453; RTOTAL = (CARBRES + BICARES + SULFRES + CHLORES); IONBAL = 100 * (LTOTAL - RTOTAL) / (LTOTAL + RTOTAL); ION=PUT(ROUND(IONBAL,0.01),6.2); RUN; DATA RESULT3; SET RESULT1; CATIONS=PUT(ROUND(LTOTAL,0.01),6.2); ANIONS=PUT(ROUND(RTOTAL,0.01),6.2); RUN; PROC SORT DATA=RESULT3 OUT=RESULT3; BY GROUP; RUN; DATA LOOK1; SET RESULT3(KEEP=LOCNO LOC DATE MGRES CARES NARES KRES CARBRES BICARES SULFRES CHLORES PH ION CATIONS ANIONS GROUP SD); RUN; PROC SORT DATA=LOOK1 OUT=SORLOOK1; BY GROUP; RUN; DATA LOOK2; SET SORLOOK1; RUN; PROC TRANSPOSE DATA=LOOK2 OUT=TRALOOK2; BY LOC DATE GROUP ION LOCNO; RUN; DATA TRALOOK3; SET TRALOOK2; LENGTH NEW $4; IF _NAME_='MGRES' THEN NEW='MG'; IF _NAME_='CARES' THEN NEW='CA'; IF _NAME_='NARES' THEN NEW='NA'; IF _NAME_='KRES' THEN NEW='K'; IF _NAME_='CARBRES' THEN NEW='CARB'; IF _NAME_='BICARES' THEN NEW='BICA'; IF _NAME_='SULFRES' THEN NEW='SULF'; IF _NAME_='CHLORES' THEN NEW='CHLO'; IF _NAME_='PH' THEN NEW='PH'; IF _NAME_='SD' THEN NEW='SD'; RUN; PROC SQL; CREATE TABLE WHOLE AS SELECT * FROM TRALOOK3 LEFT JOIN LOOK ON TRALOOK3.NEW=LOOK.CONST AND TRALOOK3.LOC=LOOK.LOC AND TRALOOK3.DATE=LOOK.DATE; QUIT; DATA WHOLE; FORMAT LOCNO LOC DATE CONST NEW CONC COL1 MISSING; SET WHOLE(DROP=_NAME_); RUN; PROC SORT DATA=WHOLE OUT=WHOLE; BY GROUP; RUN; DATA RULE; SET WHOLE; LENGTH RECORD $2; IF CONST=' ' THEN RECORD='**'; RUN; DATA RULE; SET RULE; LENGTH CONST1 $14; IF NEW='MG' THEN CONST1='MAGNESIUM'; IF NEW='CA' THEN CONST1='CALCIUM'; IF NEW='NA' THEN CONST1='SODIUM'; IF NEW='K' THEN CONST1='POTASSIUM'; IF NEW='CARB' THEN CONST1='CARBONATE'; IF NEW='BICA' THEN CONST1='BICARBONATE'; IF NEW='SULF' THEN CONST1='SULFATE'; IF NEW='CHLO' THEN CONST1='CHLORIDE'; IF NEW='PH' THEN CONST1='PH'; IF NEW='SD' THEN CONST1='TDS'; RUN; DATA RULE; FORMAT LOCNO LOC DATE CONST1 NEW DISTOT CONC COL1 MISSING RECORD ION; SET RULE(DROP=CONST); RUN; PROC SORT DATA=RULE OUT=RULE; BY GROUP CONST1; RUN; DATA RULE1; FORMAT LOCNO LOC DATE CONST1 NEW DISTOT CONC COL1 ION MISSING RECORD; SET RULE(DROP=GROUP DORT); RUN; TITLE ' '; TITLE3 'BROWNING-FERRIS INDUSTRIES, INC.'; TITLE4 'GROUND WATER SERVICES'; TITLE5 'DATA SERVICES'; TITLE7 "&SITE"; TITLE8 'TRILINEAR DIAGRAM DATA SUMMARY'; TITLE9 ' '; FOOTNOTE1 '+ UNITS FOR TDS IN MG/L, PH IN SU '; FOOTNOTE2 '* = VALUE MISSING FROM DATABASE (TREATED AS 0) D = DISSOLVED IONS '; FOOTNOTE3 '** = RECORD MISSING FROM DATABASE (TREATED AS 0) T = TOTAL IONS '; PROC SORT DATA=RULE1 OUT=RULE2; BY LOC DATE CONST1; RUN; /*OC PRINT DATA=RULE2 NOOBS SPLIT='#'; FORMAT DATE DATE:MMDDYY8.; FORMAT CONC COL1 10.3; LABEL LOCNO='LOCATION#ID' LOC='LOCATION' DATE='DATE' CONST1='CONSTITUENT' NEW='CODE' DISTOT='D/T' CONC='CONC#(MG/L)' COL1='CONC +#(MEQ/L) ' ION='ION#BALANCE#%' MISSING='MISSING#VALUE' RECORD='MISSING#RECORD'; RUN; */ TITLE; FOOTNOTE; DATA TWO; SET RULE1(DROP=CONST1 COL1 ION MISSING RECORD); RUN; DATA TORD; SET TWO; IF DISTOT='T' OR DISTOT='D' THEN OUTPUT; RUN; DATA TORD; SET TORD; LENGTH DORT $1.; DORT=DISTOT; RUN; DATA TORD; SET TORD(DROP=LOCNO DATE NEW DISTOT CONC); RUN; PROC SORT DATA=TORD OUT=SORTORD; BY LOC; RUN; DATA SORTORD; SET SORTORD; BY LOC; IF LAST.LOC THEN OUTPUT; RUN; PROC SQL; CREATE TABLE TD AS SELECT * FROM TWO LEFT JOIN SORTORD ON TWO.LOC=SORTORD.LOC; QUIT; DATA LOOK; SET TD; LENGTH MISSING $1; IF CONC=. THEN MISSING='*'; IF CONC=0 THEN CONC=0; RUN; PROC SORT DATA=TD OUT=SORTTWO; BY LOC DATE NEW; RUN; PROC TRANSPOSE DATA=SORTTWO OUT=TRANSTWO; BY LOC DATE DORT LOCNO; VAR CONC; ID NEW; RUN; PROC SORT DATA=TRANSTWO OUT=OUT1; BY LOC DATE; RUN; DATA OUT1; SET OUT1; BY LOC; RETAIN GROUP 100; IF FIRST.LOC THEN GROUP+1; RUN; DATA TRANSONE; FORMAT LOCNO LOC DATE MG CA NA K CARB BICA SULF CHLO SD PH DORT GROUP; SET OUT1(DROP=_NAME_); RUN; DATA BASIS(RENAME=(MG=MGVAL CA=CAVAL NA=NAVAL K=KVAL CARB=CO3VAL BICA=HCO3VAL SULF=SO4VAL CHLO=CLVAL)); SET TRANSONE(DROP=LOCNO); DATA RESULT; SET BASIS; IF MGVAL=. THEN MGVAL=0; IF CAVAL=. THEN CAVAL=0; IF NAVAL=. THEN NAVAL=0; IF KVAL=. THEN KVAL=0; IF CO3VAL=. THEN CO3VAL=0; IF HCO3VAL=. THEN HCO3VAL=0; IF SO4VAL=. THEN SO4VAL=0; IF CLVAL=. THEN CLVAL=0; IF SD=. THEN SD=0; IF PH=. THEN PH=.; RUN; DATA MINOR1; SET RESULT; RUN; PROC SORT DATA=MINOR1 OUT=MINOR1; BY DORT; RUN; DATA MINOR1; SET MINOR1; BY DORT; IF FIRST.DORT THEN OUTPUT; RUN; DATA RESULT; SET RESULT; IF SD=. OR SD=0 THEN SD=0; IF 0 < SD <= 500 THEN SD = 1000; ELSE IF 500 < SD <= 1000 THEN SD = 5000; ELSE IF 1000 < SD <= 999999 THEN SD = 10000; RUN; PROC UNIVARIATE DATA=RESULT NORMAL NOPRINT; VAR SD; OUTPUT OUT=SUM1 SUM=SUM; RUN; DATA SUM1; SET SUM1; SD=300000-SUM; GROUP=100; MGVAL=.; CAVAL=.; NAVAL=.; KVAL=.; CO3VAL=.; HCO3VAL=.; SO4VAL=.; CLVAL=.; PH=.; DATE=.; DORT=' '; LOC=' '; RUN; DATA DUMMY; SET SUM1(DROP=SUM); RUN; PROC APPEND BASE=RESULT DATA=DUMMY; RUN; PROC SORT DATA=RESULT OUT=RESULT; BY GROUP; RUN; DATA RESULT; SET RESULT; MGRES= MGVAL / 12.156; CARES= CAVAL / 20.04; NARES= NAVAL / 22.9898; KRES = KVAL / 39.102; LTOTAL =(MGRES + CARES + NARES + KRES); X1= (100 * CARES / LTOTAL) + ((100 * MGRES / LTOTAL) /(1.8 + .2)); Y1 = (100 * MGRES / LTOTAL); DATA MAJOR1; SET RESULT; RUN; DATA RESULT2; SET BASIS; IF MGVAL=. THEN MGVAL=0; IF CAVAL=. THEN CAVAL=0; IF NAVAL=. THEN NAVAL=0; IF KVAL=. THEN KVAL=0; IF CO3VAL=. THEN CO3VAL=0; IF HCO3VAL=. THEN HCO3VAL=0; IF SO4VAL=. THEN SO4VAL=0; IF CLVAL=. THEN CLVAL=0; IF SD=. THEN SD=0; IF PH=. THEN PH=.; RUN; DATA MINOR2; SET RESULT2; RUN; PROC SORT DATA=MINOR2 OUT=MINOR2; BY DORT; RUN; DATA MINOR2; SET MINOR2; BY DORT; IF FIRST.DORT THEN OUTPUT; RUN; DATA RESULT2; SET RESULT2; IF SD=. OR SD=0 THEN SD=0; IF 0 < SD <= 500 THEN SD = 1000; ELSE IF 500 < SD <= 1000 THEN SD = 5000; ELSE IF 1000 < SD <= 999999 THEN SD = 10000; RUN; PROC UNIVARIATE DATA=RESULT2 NORMAL NOPRINT; VAR SD; OUTPUT OUT=SUM1 SUM=SUM; RUN; DATA SUM1; SET SUM1; SD=300000-SUM; GROUP=100; MGVAL=.; CAVAL=.; NAVAL=.; KVAL=.; CO3VAL=.; HCO3VAL=.; SO4VAL=.; CLVAL=.; PH=.; DATE=.; DORT=' '; LOC=' '; RUN; DATA DUMMY; SET SUM1(DROP=SUM); RUN; PROC APPEND BASE=RESULT2 DATA=DUMMY; RUN; PROC SORT DATA=RESULT2 OUT=RESULT2; BY GROUP; RUN; DATA RESULT2; SET RESULT2; CO3RES= CO3VAL / 30.005; HCO3RES= HCO3VAL / 61.017; SO4RES = SO4VAL / 48.031; CLRES = CLVAL / 35.453; RTOTAL = (CO3RES + HCO3RES + SO4RES + CLRES); X1= (100 * CLRES / RTOTAL) + ((100 * SO4RES / RTOTAL) /(1.8 + .2)); Y1 = (100 * SO4RES / RTOTAL); DATA MAJOR2; SET RESULT2; RUN; DATA ANNO1 ; INPUT X Y FUNCTION $ SIZE COLOR $8. POSITION $1. XSYS $1. YSYS $1. HSYS $1. ANGLE ROTATE STYLE $8. TEXT $30.; DATALINES; 100 0 MOVE . . 522 . . . . 0 0 DRAW 1 BLUE 522 . . . . 50 100 DRAW 1 BLUE 522 . . . . 100 0 DRAW 1 BLUE 522 . . . . 90 0 MOVE . . 522 . . . . 45 90 DRAW 1 BLUE 522 . . . . 80 0 MOVE . . 522 . . . . 40 80 DRAW 1 BLUE 522 . . . . 70 0 MOVE . . 522 . . . . 35 70 DRAW 1 BLUE 522 . . . . 60 0 MOVE . . 522 . . . . 30 60 DRAW 1 BLUE 522 . . . . 50 0 MOVE . . 522 . . . . 25 50 DRAW 1 BLUE 522 . . . . 40 0 MOVE . . 522 . . . . 20 40 DRAW 1 BLUE 522 . . . . 30 0 MOVE . . 522 . . . . 15 30 DRAW 1 BLUE 522 . . . . 20 0 MOVE . . 522 . . . . 10 20 DRAW 1 BLUE 522 . . . . 10 0 MOVE . . 522 . . . . 5 10 DRAW 1 BLUE 522 . . . . 90 0 MOVE . . 522 . . . . 95 10 DRAW 1 BLUE 522 . . . . 80 0 MOVE . . 522 . . . . 90 20 DRAW 1 BLUE 522 . . . . 70 0 MOVE . . 522 . . . . 85 30 DRAW 1 BLUE 522 . . . . 60 0 MOVE . . 522 . . . . 80 40 DRAW 1 BLUE 522 . . . . 50 0 MOVE . . 522 . . . . 75 50 DRAW 1 BLUE 522 . . . . 40 0 MOVE . . 522 . . . . 70 60 DRAW 1 BLUE 522 . . . . 30 0 MOVE . . 522 . . . . 65 70 DRAW 1 BLUE 522 . . . . 20 0 MOVE . . 522 . . . . 60 80 DRAW 1 BLUE 522 . . . . 10 0 MOVE . . 522 . . . . 55 90 DRAW 1 BLUE 522 . . . . 95 10 MOVE . . 522 . . . . 5 10 DRAW 1 BLUE 522 . . . . 90 20 MOVE . . 522 . . . . 10 20 DRAW 1 BLUE 522 . . . . 85 30 MOVE . . 522 . . . . 15 30 DRAW 1 BLUE 522 . . . . 80 40 MOVE . . 522 . . . . 20 40 DRAW 1 BLUE 522 . . . . 75 50 MOVE . . 522 . . . . 25 50 DRAW 1 BLUE 522 . . . . 70 60 MOVE . . 522 . . . . 30 60 DRAW 1 BLUE 522 . . . . 65 70 MOVE . . 522 . . . . 35 70 DRAW 1 BLUE 522 . . . . 60 80 MOVE . . 522 . . . . 40 80 DRAW 1 BLUE 522 . . . . 55 90 MOVE . . 522 . . . . 45 90 DRAW 1 BLUE 522 . . . . 25.7 22 TEXT 2 GREEN B32 . . NONE 20 74.3 22 TEXT 2 GREEN B32 . . NONE 80 31.7 42 TEXT 2 GREEN B32 . . NONE 40 69.0 42 TEXT 2 GREEN B32 . . NONE 60 37.3 62 TEXT 2 GREEN B32 . . NONE 60 63.3 62 TEXT 2 GREEN B32 . . NONE 40 43.7 82 TEXT 2 GREEN B32 . . NONE 80 57.3 82 TEXT 2 GREEN B32 . . NONE 20 30 55 TEXT 2 RED B32 . . NONE M 32 62 TEXT 2 RED B32 . . NONE G 64 75 TEXT 2 RED B32 . . NONE N 66 67 TEXT 2 RED B32 . . NONE A 68 59 TEXT 2 RED B32 . . NONE + 70 51 TEXT 2 RED B32 . . NONE K 51 2 TEXT 2 BLUE B34 . . NONE CATIONS 50 5 TEXT 2 RED B34 . . NONE CA 33 7 TEXT 2 GREEN B34 . . NONE 80 44 7 TEXT 2 GREEN B34 . . NONE 60 55 7 TEXT 2 GREEN B34 . . NONE 40 67 7 TEXT 2 GREEN B34 . . NONE 20 ; RUN; DATA ANNO1A; LENGTH TEXT $30 FUNCTION $8; RETAIN FUNCTION 'TEXT' SIZE 2 COLOR 'BLUE' STYLE 'NONE' POSITION 'B' XSYS '3' YSYS '4'; SET MINOR1; BY DORT; IF FIRST.DORT THEN DO; X=38; Y=0; TEXT=DORT; OUTPUT; END; DATA ANNO1A; SET ANNO1A; LENGTH HSYS $1; HSYS=' '; ANGLE=.; ROTATE=.; RUN; DATA ANNO1A; SET ANNO1A(DROP=LOC DATE MGVAL CAVAL NAVAL KVAL CO3VAL HCO3VAL SO4VAL CLVAL SD PH); RUN; DATA ANNO1B; SET ANNO1 ANNO1A; RUN; PROC SORT DATA=ANNO1B OUT=ANNO1B; BY GROUP; RUN; PROC GPLOT DATA=RESULT ANNOTATE=ANNO1B GOUT=GRAPH1; SYMBOL; SYMBOL1 H=2 V=NONE COLOR=GREEN; SYMBOL2 H=2 V=A COLOR=GREEN; SYMBOL3 H=2 V=B COLOR=GREEN; SYMBOL4 H=2 V=C COLOR=GREEN; SYMBOL5 H=2 V=D COLOR=GREEN; SYMBOL6 H=2 V=E COLOR=GREEN; SYMBOL7 H=2 V=F COLOR=GREEN; SYMBOL8 H=2 V=G COLOR=GREEN; SYMBOL9 H=2 V=H COLOR=GREEN; SYMBOL10 H=2 V=I COLOR=GREEN; SYMBOL11 H=2 V=J COLOR=GREEN; SYMBOL12 H=2 V=K COLOR=GREEN; SYMBOL13 H=2 V=L COLOR=GREEN; SYMBOL14 H=2 V=M COLOR=GREEN; SYMBOL15 H=2 V=N COLOR=GREEN; SYMBOL16 H=2 V=O COLOR=GREEN; SYMBOL17 H=2 V=P COLOR=GREEN; SYMBOL18 H=2 V=Q COLOR=GREEN; SYMBOL19 H=2 V=R COLOR=GREEN; SYMBOL20 H=2 V=S COLOR=GREEN; SYMBOL21 H=2 V=T COLOR=GREEN; SYMBOL22 H=2 V=U COLOR=GREEN; SYMBOL23 H=2 V=V COLOR=GREEN; SYMBOL24 H=2 V=W COLOR=GREEN; SYMBOL25 H=2 V=X COLOR=GREEN; SYMBOL26 H=2 V=Y COLOR=GREEN; SYMBOL27 H=2 V=Z COLOR=GREEN; AXIS1 LABEL = NONE VALUE = NONE STYLE=0 MAJOR=NONE MINOR=NONE ORDER = 0 TO 100 BY 10 OFFSET = (0) LENGTH=4.7 IN ; AXIS2 ORDER = 100 TO 0 BY -10 OFFSET =(0) LENGTH=5.6 IN VALUE= NONE LABEL=NONE COLOR=BLUE MINOR= NONE MAJOR=NONE ; AXIS3 ORDER = 0 TO 100 BY 10 OFFSET =(0) LENGTH=5.6 IN LABEL =NONE COLOR=BLUE MINOR= NONE MAJOR=NONE VALUE =NONE ; PLOT Y1 * X1=GROUP / CTEXT=GREEN HAXIS=AXIS2 VAXIS=AXIS1 NOLEGEND; DATA ANNO2 ; INPUT X Y FUNCTION $ SIZE COLOR $8. POSITION $1. XSYS $1. YSYS $1. HSYS $1. ANGLE ROTATE STYLE $8. TEXT $30.; DATALINES; 100 0 MOVE . . 522 . . . . 0 0 DRAW 1 BLUE 522 . . . . 50 100 DRAW 1 BLUE 522 . . . . 100 0 DRAW 1 BLUE 522 . . . . 90 0 MOVE . . 522 . . . . 45 90 DRAW 1 BLUE 522 . . . . 80 0 MOVE . . 522 . . . . 40 80 DRAW 1 BLUE 522 . . . . 70 0 MOVE . . 522 . . . . 35 70 DRAW 1 BLUE 522 . . . . 60 0 MOVE . . 522 . . . . 30 60 DRAW 1 BLUE 522 . . . . 50 0 MOVE . . 522 . . . . 25 50 DRAW 1 BLUE 522 . . . . 40 0 MOVE . . 522 . . . . 20 40 DRAW 1 BLUE 522 . . . . 30 0 MOVE . . 522 . . . . 15 30 DRAW 1 BLUE 522 . . . . 20 0 MOVE . . 522 . . . . 10 20 DRAW 1 BLUE 522 . . . . 10 0 MOVE . . 522 . . . . 5 10 DRAW 1 BLUE 522 . . . . 90 0 MOVE . . 522 . . . . 95 10 DRAW 1 BLUE 522 . . . . 80 0 MOVE . . 522 . . . . 90 20 DRAW 1 BLUE 522 . . . . 70 0 MOVE . . 522 . . . . 85 30 DRAW 1 BLUE 522 . . . . 60 0 MOVE . . 522 . . . . 80 40 DRAW 1 BLUE 522 . . . . 50 0 MOVE . . 522 . . . . 75 50 DRAW 1 BLUE 522 . . . . 40 0 MOVE . . 522 . . . . 70 60 DRAW 1 BLUE 522 . . . . 30 0 MOVE . . 522 . . . . 65 70 DRAW 1 BLUE 522 . . . . 20 0 MOVE . . 522 . . . . 60 80 DRAW 1 BLUE 522 . . . . 10 0 MOVE . . 522 . . . . 55 90 DRAW 1 BLUE 522 . . . . 95 10 MOVE . . 522 . . . . 5 10 DRAW 1 BLUE 522 . . . . 90 20 MOVE . . 522 . . . . 10 20 DRAW 1 BLUE 522 . . . . 85 30 MOVE . . 522 . . . . 15 30 DRAW 1 BLUE 522 . . . . 80 40 MOVE . . 522 . . . . 20 40 DRAW 1 BLUE 522 . . . . 75 50 MOVE . . 522 . . . . 25 50 DRAW 1 BLUE 522 . . . . 70 60 MOVE . . 522 . . . . 30 60 DRAW 1 BLUE 522 . . . . 65 70 MOVE . . 522 . . . . 35 70 DRAW 1 BLUE 522 . . . . 60 80 MOVE . . 522 . . . . 40 80 DRAW 1 BLUE 522 . . . . 55 90 MOVE . . 522 . . . . 45 90 DRAW 1 BLUE 522 . . . . 25.7 22 TEXT 2 GREEN B32 . . NONE 80 74.3 22 TEXT 2 GREEN B32 . . NONE 20 31.7 42 TEXT 2 GREEN B32 . . NONE 60 69.0 42 TEXT 2 GREEN B32 . . NONE 40 37.3 62 TEXT 2 GREEN B32 . . NONE 40 63.3 62 TEXT 2 GREEN B32 . . NONE 60 43.2 82 TEXT 2 GREEN B32 . . NONE 20 57.3 82 TEXT 2 GREEN B32 . . NONE 80 25 35 TEXT 2 RED B32 . . NONE C 27.2 43 TEXT 2 RED B32 . . NONE O 29.5 51 TEXT 2 RED B32 . . NONE 3 32 59 TEXT 2 RED B32 . . NONE + 34.7 67 TEXT 2 RED B32 . . NONE H 36.7 75 TEXT 2 RED B32 . . NONE C 38.7 83 TEXT 2 RED B32 . . NONE O 40.7 90 TEXT 2 RED B32 . . NONE 3 66 71 TEXT 2 RED B32 . . NONE S 68 63 TEXT 2 RED B32 . . NONE O 70 55 TEXT 2 RED B32 . . NONE 4 51 2 TEXT 2 BLUE B34 . . NONE ANIONS 50 5 TEXT 2 RED B34 . . NONE CL 33 7 TEXT 2 GREEN B34 . . NONE 20 44 7 TEXT 2 GREEN B34 . . NONE 40 55 7 TEXT 2 GREEN B34 . . NONE 60 67 7 TEXT 2 GREEN B34 . . NONE 80 ; RUN; DATA ANNO2A; LENGTH TEXT $30 FUNCTION $8; RETAIN FUNCTION 'TEXT' SIZE 2 COLOR 'BLUE' STYLE 'NONE' POSITION 'B' XSYS '3' YSYS '4'; SET MINOR2; BY DORT; IF FIRST.DORT THEN DO; X=40; Y=0; TEXT=DORT; OUTPUT; END; DATA ANNO2A; SET ANNO2A; LENGTH HSYS $1; HSYS=' '; ANGLE=.; ROTATE=.; RUN; DATA ANNO2A; SET ANNO2A(DROP=LOC DATE MGVAL CAVAL NAVAL KVAL CO3VAL HCO3VAL SO4VAL CLVAL SD PH); RUN; DATA ANNO2B; SET ANNO2 ANNO2A; RUN; PROC SORT DATA=ANNO1B OUT=ANNO1B; BY GROUP; RUN; PROC GPLOT DATA=RESULT2 ANNOTATE=ANNO2B GOUT=GRAPH1; SYMBOL; SYMBOL1 H=2 V=NONE COLOR=GREEN; SYMBOL2 H=2 V=A COLOR=GREEN; SYMBOL3 H=2 V=B COLOR=GREEN; SYMBOL4 H=2 V=C COLOR=GREEN; SYMBOL5 H=2 V=D COLOR=GREEN; SYMBOL6 H=2 V=E COLOR=GREEN; SYMBOL7 H=2 V=F COLOR=GREEN; SYMBOL8 H=2 V=G COLOR=GREEN; SYMBOL9 H=2 V=H COLOR=GREEN; SYMBOL10 H=2 V=I COLOR=GREEN; SYMBOL11 H=2 V=J COLOR=GREEN; SYMBOL12 H=2 V=K COLOR=GREEN; SYMBOL13 H=2 V=L COLOR=GREEN; SYMBOL14 H=2 V=M COLOR=GREEN; SYMBOL15 H=2 V=N COLOR=GREEN; SYMBOL16 H=2 V=O COLOR=GREEN; SYMBOL17 H=2 V=P COLOR=GREEN; SYMBOL18 H=2 V=Q COLOR=GREEN; SYMBOL19 H=2 V=R COLOR=GREEN; SYMBOL20 H=2 V=S COLOR=GREEN; SYMBOL21 H=2 V=T COLOR=GREEN; SYMBOL22 H=2 V=U COLOR=GREEN; SYMBOL23 H=2 V=V COLOR=GREEN; SYMBOL24 H=2 V=W COLOR=GREEN; SYMBOL25 H=2 V=X COLOR=GREEN; SYMBOL26 H=2 V=Y COLOR=GREEN; SYMBOL27 H=2 V=Z COLOR=GREEN; AXIS1 LABEL = NONE VALUE = NONE STYLE=0 MAJOR=NONE MINOR=NONE ORDER = 0 TO 100 BY 10 OFFSET = (0) LENGTH=4.7 IN ; AXIS2 ORDER = 100 TO 0 BY -10 OFFSET =(0) LENGTH=5.6 IN VALUE= NONE LABEL=NONE COLOR=BLUE MINOR= NONE MAJOR=NONE ; AXIS3 ORDER = 0 TO 100 BY 10 OFFSET =(0) LENGTH=5.6 IN LABEL =NONE COLOR=BLUE MINOR= NONE MAJOR=NONE VALUE =NONE ; PLOT Y1 * X1=GROUP / CTEXT=RED HAXIS=AXIS3 VAXIS=AXIS1 NOLEGEND; DATA RESULT; SET BASIS; IF MGVAL=. THEN MGVAL=0; IF CAVAL=. THEN CAVAL=0; IF NAVAL=. THEN NAVAL=0; IF KVAL=. THEN KVAL=0; IF CO3VAL=. THEN CO3VAL=0; IF HCO3VAL=. THEN HCO3VAL=0; IF SO4VAL=. THEN SO4VAL=0; IF CLVAL=. THEN CLVAL=0; IF SD=. THEN SD=0; IF PH=. THEN PH=.; RUN; DATA MINOR3; SET RESULT; PROC SORT DATA=MINOR3 OUT=MINOR3; BY DORT; RUN; DATA MINOR3; SET MINOR3; BY DORT; IF FIRST.DORT THEN OUTPUT; RUN; DATA RESULT; SET RESULT; IF SD=. OR SD=0 THEN SD=0; IF 0 < SD <= 500 THEN SD = 1000; ELSE IF 500 < SD <= 1000 THEN SD = 5000; ELSE IF 1000 < SD <= 999999 THEN SD = 10000; RUN; PROC UNIVARIATE DATA=RESULT NORMAL NOPRINT; VAR SD; OUTPUT OUT=SUM1 SUM=SUM; RUN; DATA SUM1; SET SUM1; SD=300000-SUM; GROUP=100; MGVAL=.; CAVAL=.; NAVAL=.; KVAL=.; CO3VAL=.; HCO3VAL=.; SO4VAL=.; CLVAL=.; PH=.; DATE=.; DORT=' '; LOC=' '; RUN; DATA DUMMY; SET SUM1(DROP=SUM); RUN; PROC APPEND BASE=RESULT DATA=DUMMY; RUN; PROC SORT DATA=RESULT OUT=RESULT; BY GROUP; RUN; DATA RESULT; SET RESULT; MGRES= MGVAL / 12.156; CARES= CAVAL / 20.04; NARES= NAVAL / 22.9898; KRES = KVAL / 39.102; LTOTAL =(MGRES + CARES + NARES + KRES); CO3RES= CO3VAL / 30.005; HCO3RES= HCO3VAL / 61.017; SO4RES = SO4VAL / 48.031; CLRES = CLVAL / 35.453; RTOTAL = (CO3RES + HCO3RES + SO4RES + CLRES); X1= (-1 * (100 * CARES / LTOTAL))- ((100 * MGRES / LTOTAL)/(1.8 + .2)); Y1 = (100 * MGRES / LTOTAL); X2= (100 * CLRES / RTOTAL) + ((100 * SO4RES / RTOTAL) /(1.8 + .2)); Y2 = (100 * SO4RES / RTOTAL); XCONST=(360/(2 * 3.1416));/* CHANGES DEGREES TO RADIANS */ LSUB1= X1;/* ORGINAL LEFT POINT */ A =(Y1/ TAN(60 / XCONST)); APRIME =(Y1 / 2); /* JUSTINS TEST */ XSUB1=(X1-APRIME ) ; /* LEFT POINT ON AXIS */ LSUB2=X2; A = Y2/ TAN(60 / XCONST); APRIME= Y2 / 2; /* JUSTINS TEST AGAIN */ XSUB2=X2 + APRIME; /* RIGHT POINT ON AXIS */ LSUB3 = ABS(XSUB2)+ ABS(XSUB1); /* DISTANCE BETWEEN TWO POINTS */ XSUB4 =((XSUB2 + XSUB1)/ 2) ; /*MIDPOINT BETWEEN POINTS */ YSUB1 =(TAN(60 / XCONST) * (LSUB3 / 2)) * (200 / 173.20); /* HEIGHT OF NEW POINT */ /*X=1; Y=27; SIZE= 1; FUNCTION='LABEL'; COLOR='RED'; TEXT=XW; OUTPUT;*/ DATA ONE; SET RESULT; RUN; DATA ANNO3 ; INPUT X Y FUNCTION $ SIZE COLOR $8. POSITION $1. XSYS $1. YSYS $1. HSYS $1. ANGLE ROTATE STYLE $8. TEXT $30.; DATALINES; 0 0 MOVE . . 522 . . . . 50 100 DRAW 1 BLUE 522 . . . . 0 200 DRAW 1 BLUE 522 . . . . -50 100 DRAW 1 BLUE 522 . . . . 0 0 DRAW 1 BLUE 522 . . . . -45 110 MOVE . . 522 . . . . 5 10 DRAW 1 BLUE 522 . . . . -40 120 MOVE . . 522 . . . . 10 20 DRAW 1 BLUE 522 . . . . -35 130 MOVE . . 522 . . . . 15 30 DRAW 1 BLUE 522 . . . . -30 140 MOVE . . 522 . . . . 20 40 DRAW 1 BLUE 522 . . . . -25 150 MOVE . . 522 . . . . 25 50 DRAW 1 BLUE 522 . . . . -20 160 MOVE . . 522 . . . . 30 60 DRAW 1 BLUE 522 . . . . -15 170 MOVE . . 522 . . . . 35 70 DRAW 1 BLUE 522 . . . . -10 180 MOVE . . 522 . . . . 40 80 DRAW 1 BLUE 522 . . . . -05 190 MOVE . . 522 . . . . 45 90 DRAW 1 BLUE 522 . . . . 45 110 MOVE . . 522 . . . . -5 10 DRAW 1 BLUE 522 . . . . 40 120 MOVE . . 522 . . . . -10 20 DRAW 1 BLUE 522 . . . . 35 130 MOVE . . 522 . . . . -15 30 DRAW 1 BLUE 522 . . . . 30 140 MOVE . . 522 . . . . -20 40 DRAW 1 BLUE 522 . . . . 25 150 MOVE . . 522 . . . . -25 50 DRAW 1 BLUE 522 . . . . 20 160 MOVE . . 522 . . . . -30 60 DRAW 1 BLUE 522 . . . . 15 170 MOVE . . 522 . . . . -35 70 DRAW 1 BLUE 522 . . . . 10 180 MOVE . . 522 . . . . -40 80 DRAW 1 BLUE 522 . . . . 5 190 MOVE . . 522 . . . . -45 90 DRAW 1 BLUE 522 . . . . 26.5 179 TEXT 1 RED 522 . . NONE C 30.5 171 TEXT 1 RED 522 . . NONE A 34.5 163 TEXT 1 RED 522 . . NONE + 38.5 155 TEXT 1 RED 522 . . NONE M 42.5 147 TEXT 1 RED 522 . . NONE G -43.5 139 TEXT 1 RED 522 . . NONE S -40 147 TEXT 1 RED 522 . . NONE O -36.5 155 TEXT 1 RED 522 . . NONE 4 -32.5 163 TEXT 1 RED 522 . . NONE + -29 171 TEXT 1 RED 522 . . NONE C -24.5 179 TEXT 1 RED 522 . . NONE L 15 185 TEXT 1 GREEN 522 . . NONE 80 -15 185 TEXT 1 GREEN 522 . . NONE 80 25 165 TEXT 1 GREEN 522 . . NONE 60 -25 165 TEXT 1 GREEN 522 . . NONE 60 35 145 TEXT 1 GREEN 522 . . NONE 40 -35 145 TEXT 1 GREEN 522 . . NONE 40 45 125 TEXT 1 GREEN 522 . . NONE 20 -45 125 TEXT 1 GREEN 522 . . NONE 20 ; PROC SORT DATA=ONE OUT=OUTF1; BY GROUP; RUN; DATA OUTF2; SET OUTF1; BY GROUP; FILE PRINT; RETAIN COUNT 0; IF FIRST.GROUP THEN DO; COUNT=COUNT+1; END; IF COUNT= 1 THEN DO; VAL1 = SD; END; IF COUNT= 2 THEN DO; VAL2 = SD; END; IF COUNT= 3 THEN DO; VAL3 = SD; END; IF COUNT= 4 THEN DO; VAL4 = SD; END; IF COUNT= 5 THEN DO; VAL5 = SD; END; IF COUNT= 6 THEN DO; VAL6 = SD; END; IF COUNT= 7 THEN DO; VAL7 = SD; END; IF COUNT= 8 THEN DO; VAL8 = SD; END; IF COUNT= 9 THEN DO; VAL9 = SD; END; IF COUNT= 10 THEN DO; VAL10 = SD; END; IF COUNT= 11 THEN DO; VAL11 = SD; END; IF COUNT= 12 THEN DO; VAL12 = SD; END; IF COUNT= 13 THEN DO; VAL13 = SD; END; IF COUNT= 14 THEN DO; VAL14 = SD; END; IF COUNT= 15 THEN DO; VAL15 = SD; END; IF COUNT= 16 THEN DO; VAL16 = SD; END; IF COUNT= 17 THEN DO; VAL17 = SD; END; IF COUNT= 18 THEN DO; VAL18 = SD; END; IF COUNT= 19 THEN DO; VAL19 = SD; END; IF COUNT= 20 THEN DO; VAL20 = SD; END; IF COUNT= 21 THEN DO; VAL21 = SD; END; IF COUNT= 22 THEN DO; VAL22 = SD; END; IF COUNT= 23 THEN DO; VAL23 = SD; END; IF COUNT= 24 THEN DO; VAL24 = SD; END; IF COUNT= 25 THEN DO; VAL25 = SD; END; IF COUNT= 26 THEN DO; VAL26 = SD; END; IF COUNT= 27 THEN DO; VAL27 = SD; END; PROC SORT DATA=OUTF2 OUT=OUTF2A; BY GROUP; RUN; DATA ANNO4; LENGTH TEXT $30 FUNCTION $8; RETAIN FUNCTION 'TEXT' SIZE 1 COLOR 'GREEN' STYLE 'NONE' POSITION '6' XSYS YSYS '2'; SET OUTF2A; BY GROUP; IF FIRST.GROUP THEN DO; TEXT=LOC; IF VAL1 > 0 THEN DO; X= 95; Y=200; OUTPUT; TEXT=' '; X= 87; Y=200; OUTPUT; END; IF VAL2 >= 0 THEN DO; X= 95; Y=195; OUTPUT; TEXT='A ='; X= 87; Y=195; OUTPUT; END; IF VAL3 >= 0 THEN DO; X= 95; Y=190; OUTPUT; TEXT='B ='; X= 87; Y=190; OUTPUT; END; IF VAL4 >= 0 THEN DO; X= 95; Y=185; OUTPUT; TEXT='C ='; X= 87; Y=185; OUTPUT; END; IF VAL5 >= 0 THEN DO; X= 95; Y=180; OUTPUT; TEXT='D ='; X= 87; Y=180; OUTPUT; END; IF VAL6 >= 0 THEN DO; X= 95; Y=175; OUTPUT; TEXT='E ='; X= 87; Y=175; OUTPUT; END; IF VAL7 >= 0 THEN DO; X= 95; Y=170; OUTPUT; TEXT='F ='; X= 87; Y=170; OUTPUT; END; IF VAL8 >= 0 THEN DO; X= 95; Y=165; OUTPUT; TEXT='G ='; X= 87; Y=165; OUTPUT; END; IF VAL9 >= 0 THEN DO; X= 95; Y=160; OUTPUT; TEXT='H ='; X= 87; Y=160; OUTPUT; END; IF VAL10 >= 0 THEN DO; X= 95; Y=155; OUTPUT; TEXT='I ='; X= 87; Y=155; OUTPUT; END; IF VAL11 >= 0 THEN DO; X= 95; Y=150; OUTPUT; TEXT='J ='; X= 87; Y=150; OUTPUT; END; IF VAL12 >= 0 THEN DO; X= 95; Y=145; OUTPUT; TEXT='K ='; X= 87; Y=145; OUTPUT; END; IF VAL13 >= 0 THEN DO; X= 95; Y=140; OUTPUT; TEXT='L ='; X= 87; Y=140; OUTPUT; END; IF VAL14 >= 0 THEN DO; X= 95; Y=135; OUTPUT; TEXT='M ='; X= 87; Y=135; OUTPUT; END; IF VAL15 >= 0 THEN DO; X= 95; Y=130; OUTPUT; TEXT='N ='; X= 87; Y=130; OUTPUT; END; IF VAL16 >= 0 THEN DO; X= 95; Y=125; OUTPUT; TEXT='O ='; X= 87; Y=125; OUTPUT; END; IF VAL17 >= 0 THEN DO; X= 95; Y=120; OUTPUT; TEXT='P ='; X= 87; Y=120; OUTPUT; END; IF VAL18 >= 0 THEN DO; X= 95; Y=115; OUTPUT; TEXT='Q ='; X= 87; Y=115; OUTPUT; END; IF VAL19 >= 0 THEN DO; X= 95; Y=110; OUTPUT; TEXT='R ='; X= 87; Y=110; OUTPUT; END; IF VAL20 >= 0 THEN DO; X= 95; Y=105; OUTPUT; TEXT='S ='; X= 87; Y=105; OUTPUT; END; IF VAL21 >= 0 THEN DO; X= 95; Y=100; OUTPUT; TEXT='T ='; X= 87; Y=100; OUTPUT; END; IF VAL22 >= 0 THEN DO; X= 95; Y=95; OUTPUT; TEXT='U ='; X= 87; Y=95; OUTPUT; END; IF VAL23 >= 0 THEN DO; X= 95; Y=90; OUTPUT; TEXT='V ='; X= 87; Y=90; OUTPUT; END; IF VAL24 >= 0 THEN DO; X= 95; Y=85; OUTPUT; TEXT='W ='; X= 87; Y=85; OUTPUT; END; IF VAL25 >= 0 THEN DO; X= 95; Y=80; OUTPUT; TEXT='X ='; X= 87; Y=80; OUTPUT; END; IF VAL26 >= 0 THEN DO; X= 95; Y=75; OUTPUT; TEXT='Y ='; X= 87; Y=75; OUTPUT; END; IF VAL27 >= 0 THEN DO; X= 95; Y=70; OUTPUT; TEXT='Z ='; X= 87; Y=70; OUTPUT; END; END; DATA ANNO5; SET ANNO3 ANNO4; PROC SORT DATA=ANNO5 OUT=ANNO6; BY GROUP; RUN; DATA ANNO6; SET ANNO6(KEEP=X Y FUNCTION SIZE COLOR POSITION XSYS YSYS HSYS ANGLE ROTATE STYLE TEXT GROUP); RUN; DATA ANNO7; INPUT X Y FUNCTION $ SIZE COLOR $8. POSITION $1. XSYS $1. YSYS $1. HSYS $1. ANGLE ROTATE STYLE $8. TEXT $30.; DATALINES; -100 200 TEXT 1 GREEN 622 . . NONE TDS MG/L -100 195 TEXT 1 GREEN 622 . . NONE SCALE OF DIAMETERS -100 175 TEXT 1 GREEN 622 . . NONE 1000 < TDS <= 10000 -100 130 TEXT 1 GREEN 622 . . NONE 500 < TDS <= 1000 -100 98 TEXT 1 GREEN 622 . . NONE 0 < TDS <= 500 ; DATA ANNO8; SET ANNO6 ANNO7; PROC SORT DATA=ANNO8 OUT=ANNO8; BY GROUP; RUN; TITLE C=BLACK; TITLE6 F=NONE H=1 'BROWNING-FERRIS INDUSTRIES, INC.'; TITLE7 F=NONE H=1 'GROUNDWATER SERVICES / DATA SERVICES'; TITLE8 F=NONE H=1 "&SITE"; TITLE9 F=NONE H=1 "*************** TRILINEAR (PIPER) DIAGRAM ***************"; TITLE10 F=NONE H=1 'PERCENT OF TOTAL MILLIEQUIVALENTS PER LITER'; PROC GPLOT DATA=RESULT ANNOTATE=ANNO8 GOUT=GRAPH1 ; SYMBOL; SYMBOL1 V=NONE H=1 COLOR=WHITE; SYMBOL2 V=A H=1 COLOR=GREEN; SYMBOL3 V=B H=1 COLOR=GREEN; SYMBOL4 V=C H=1 COLOR=GREEN; SYMBOL5 V=D H=1 COLOR=GREEN; SYMBOL6 V=E H=1 COLOR=GREEN; SYMBOL7 V=F H=1 COLOR=GREEN; SYMBOL8 V=G H=1 COLOR=GREEN; SYMBOL9 V=H H=1 COLOR=GREEN; SYMBOL10 V=I H=1 COLOR=GREEN; SYMBOL11 V=J H=1 COLOR=GREEN; SYMBOL12 V=K H=1 COLOR=GREEN; SYMBOL13 V=L H=1 COLOR=GREEN; SYMBOL14 V=M H=1 COLOR=GREEN; SYMBOL15 V=N H=1 COLOR=GREEN; SYMBOL16 V=O H=1 COLOR=GREEN; SYMBOL17 V=P H=1 COLOR=GREEN; SYMBOL18 V=Q H=1 COLOR=GREEN; SYMBOL19 V=R H=1 COLOR=GREEN; SYMBOL20 V=S H=1 COLOR=GREEN; SYMBOL21 V=T H=1 COLOR=GREEN; SYMBOL22 V=U H=1 COLOR=GREEN; SYMBOL23 V=V H=1 COLOR=GREEN; SYMBOL24 V=W H=1 COLOR=GREEN; SYMBOL25 V=X H=1 COLOR=GREEN; SYMBOL26 V=Y H=1 COLOR=GREEN; SYMBOL27 V=Z H=1 COLOR=GREEN; AXIS4 LABEL = NONE VALUE = NONE STYLE=0 MAJOR=NONE MINOR=NONE ORDER = 0 TO 200 BY 10 OFFSET = (0) LENGTH=4.7 IN ; AXIS5 ORDER = -100 TO 100 BY 10 OFFSET =(0) LENGTH=5.6 IN LABEL = NONE VALUE = NONE STYLE=0 MAJOR=NONE MINOR=NONE ; PLOT YSUB1 * XSUB4=GROUP / HAXIS=AXIS5 VAXIS=AXIS4 NOLEGEND ; BUBBLE2 YSUB1 * XSUB4=SD / HAXIS=AXIS5 VAXIS=AXIS4 BSIZE=40 bcolor=red; RUN; DATA DUMMY1; INPUT X Y Z; DATALINES; 0.8 4.7 10000 0.8 3.5 5000 0.8 2.7 1000 . . 284000 ; RUN; TITLE; PROC GPLOT DATA=DUMMY1 GOUT=GRAPH1; AXIS1 ORDER=(0 TO 7); BUBBLE Y * X = Z / HAXIS=AXIS1 VAXIS=AXIS1 BSIZE=40 NOAXIS BCOLOR=RED; RUN; QUIT; GOPTIONS DISPLAY gsfname=out gsfmode=replace; /* NOTE J=L F=SIMPLEX H=1 &XTEST1;*/ PROC GREPLAY IGOUT=GRAPH1 GOUT=GRAPH1 NOFS; tc graph1; tdef piper 1/LLX=5 LLY=0 ULX=5 ULY=50 URX=55 URY=50 LRX=55 LRY=0 XLATEX=3.5 2/LLX=40 LLY=0 ULX=40 ULY=50 URX=90 URY=50 LRX=90 LRY=0 XLATEX=1.5 3/LLX=0 LLY=0 ULX=0 ULY=100 URX=100 URY=100 LRX=100 LRY=0 XLATEY=6.5 4/LLX=0 LLY=0 ULX=0 ULY=100 URX=100 URY=100 LRX=100 LRY=0; template piper; goption display; TREPLAY 1:1 2:2 3:3 4:4; run; quit;