: *********************************************** PIE/MULTI-PIE Version 1.0 --> PIE CHART AND MULTIPLE PIE CHART (c)1982 Zenith Data Systems *********************************************** ( BGR:FGR: :! "p": n(),$,$:7 : ()"y5":` (: L: ()"x5";:: No Cursorx )BGRCOLORS():  * ()"x1";:: 25th line enable + x 2PII <XM%8:: Maximum x-steps of circle generator FCX%@:: Circle center x4 PCY%p:: Circle center y ZEX%:: Amount to explode pie piece (Becomes r1%) dR2%:: Radius nR4%R2%:: arrowhead location xR3%R4%EX%:: Outside label radiusOA1%:: OUL array indexs by quadrant&OA2%2OA3%>OA4%iCON1%:: Quadrant 1 conflict flagCON2%:: Etc.CON3%CON4%SCRLN%:: display screen linesBXHT%:: height of display box AS:: Aspect of x-y-MR1%2::multple pies radius:XMX%HPIESMX%UPIESX%dMSCRNL%r"HEDLNS%,INCLN%6LBLMX%::8 lables maximum@LBOXX%JLBOXY%TLBXAD%@^LBYAD%%h:WIDTH 255  v::here read what.run; COLORS() (,)(,),COLORS(),BFHCURX% UCURY% _ bTFN$(AA$,(AA$,"."),) TFN$"PIE" TFN$"pie"  : TFN$"pis" TFN$"PIS"  : "menu" :: do PIE else do MultPIE else menu| COLORS() BGRCOLORS():  : ( )"A Z-100 with color capability is required for multiple pies chart...": "Preparing multiple pie chart...."; ::Set up files info & data array misc V "I",,AA$: #,TITLE$&#, NF%::number of files NF% NF%PIESMX% : : "Error in multiple pies request... there must be between 2 and"PIESMX%" pies.":  NFILE$(NF%)::Name of files-- number of files times J% NF%& #,NFILE$(J%)0 J%": NLEG$(NF%)3D J% NF%dN #,NLEG$(J%)::get legends' descriptionsmX J%b#, NRECORDS%l DESCRS$(NRECORDS%)v J% NRECORDS% #,DESCRS$(J%) J% VALUES%(NF%,NRECORDS%) J% NF%"I",,NFILE$(J%)0 K% NRECORDS%] #,IGNORE$::forget the descriptionst#,VALUES%(J%,K%)} K% J% PAY%(PIESX%)::prepare location for pies arrays PAY%()HEDLNS%INCLN% I% PIESX%/  PAY%(I%)PAY%(I%)INCLN%::print at y locs8* I%n4 PLB%(LBLMX%,)::legend lables placement array>: X, Y:'print locations for legendH 23, 3R 23, 4\ 23, 5f 23, 6p 43, 3z 43, 4 43, 5 43, 6 I% LBLMX%+ PLB%(I%,),PLB%(I%,)4 I%l DP%(PIESMX%,PIESX%)::display placment of pies -32767,-32767::0 Pie Undefined -32767,-32767::1 Pie Undefined 2,0::2 PIES 3,0::3 PIES 4,0::4 PIES  4,1::5 PIES 4,2::6 PIES2 4,3::7 PIESF 4,4::8 PIES[ I% PIESMX%r$ J% PIESX%. DP%(I%,J%)::Load display placement of pies array8 J%B I%LVNP%NF%::number of pies is number of files` xj: ,:" ":4t(,)(,),COLORS(),BS~ ::give chart a name ::label the legends & draw & fill pies(LBOXX%,LBOXY%)(LBOXX%LBXAD%,LBOXY%LBYAD%),COLORS(),BF I% NRECORDS% DESCRS$(I%)"" CURX%PLB%(I%,)'CURY%PLB%(I%,)o((CURX%),CURY%)((CURX%),(CURY%)),COLORS(),BF I% JRFI% : I% JRFI% : JRFI%I%((CURX%),CURY%)((CURX%),(CURY%)),COLORS(JRFI%),BF BGRCOLORS():  b' DESCRS$(I%);0 I%F  J% PIESX%` DP%(NP%,J%) CY%PAY%(J%)(MR1%AS)( F% DP%(NP%,J%)2ARIN%F%(J%(DP%(NP%,)))<CX%F%XMX%(DP%(NP%,J%))F: (S. Michael Sarna), (C) 1982, Zenith Data Systems$PCURY%PAY%(J%)JZCURX%CX%((NLEG$(ARIN% )))b[BGRCOLORS(): ld bn NLEG$(ARIN%);xMX:: Initialize "Maximum" variableTT:: Initialize "Total" variable OLY:: Initialize "Old Radian" variable5 I% NRECORDS%:: Sum all amounts R MXMXVALUES%(ARIN%,I%)[ I%dI%y I%NRECORDS%AMVALUES%(ARIN%,I%):: Get "Cut" AM h:: Blank amount, skipTTTTAM:: Running total of "Cuts"$NW(TTMXPI):: New radian for circleYPERCENTAGE%AMMXd:: Percentage CalculationeRAMR1%VA%I% : VA% VA% : VA% VA% >:: Draw the pieceRAgffMR1%"SR(NWOL), PERCENTAGE%  : : 6 PERCENTAGE% J:@ p::paint routine]JOLNW:: Old Radian = RadianfTXOo^YOhI%I%:: Go get next piecer:: Untill While is done|(CX%,CY%),MR1% F% J% COLORS() BGRCOLORS():  : BGRCOLORS(): ="Preparing pie chart....";~ ::Set up files information & data array miscellaneous (FY% )  CLMOD% : CLMOD% x: ,::" ":(,)(,),COLORS(),B   ::Give the Chart a name0   ::Draw & Fill the PieZ   ::gosub resolve outside labels~   ::display outside labels  :: finished - look at keyboard. :DRAWSHELL MX:: Initialize "Maximum" variable!&TT:: Initialize "Total" variableC!0OLY:: Initialize "Old Radian" variablek!: I% FY%:: Sum all amounts !D MXMX(IN$(,I%))!N I%!XI%!b I%FY%!lAM(IN$(,I%)):: Get "Cut"!v AM :: Blank amount, skipL" IN$(,I%)"Y" IN$(,I%)"y" R1%EX% : R1%:: Set radius for this "Cut"v"TTTTAM:: Running total of "Cuts""NW(TTMXPI):: New radian for circle"IN$(,I%)(AMMXd):: Percentage Calculation# :: Figure out Explosion Radius"# *:: Draw the pieceA# p:: Paint the Piece# :: Fit Description & label or build outside tables#OLNW:: Old Radian = Radian#I%I%:: Go get next piece#:: Untill While is done##:EXPLODE$YOR1%AS((NWOL))1$ XOR1%((NWOL))7$H$ :DRAWPIECES$*RAR2%j$4VA%(I% CLMOD%)t$>SROL~$HSPNW$R $\$f:PAINTPIECE$pRA(R1%R2%) $zSR(NWOL)$ (IN$(,I%)) : : % (IN$(,I%)) /% p::paint routine5%I%:INOROUTLABELq% j :: Fit the box in the piece% K%N%  : x :  : :: Label Description & Percentage%:Otherwise store data for outside lableing '&T1(YOAS)((R1%R4%)(XO(YOAS)))AST&S1XO((R1%R4%)(XO(YOAS)))&V1(YOAS)((R3%)(XO(YOAS)))AS&U1XO((R3%)(XO(YOAS)))& U1 V1 WS%: OA1%OA1%: OAI%OA1%' U1 V1 WS%: OA4%OA4%: OAI%OA4%W' U1 V1 WS%: OA2%OA2%: OAI%OA2%' U1 V1 WS%: OA3%OA3%: OAI%OA3%'$ OUL(OAI%,,WS%)U1:: outside x anglepoint coordinate(. OUL(OAI%,,WS%)V1:: outside y anglepoint coordinate1(8 OUL(OAI%,,WS%)I%:: data array indiceH(B OUL(OAI%,,WS%)S1_(L OUL(OAI%,,WS%)T1e(V (` :FIXBOX (Needs va% from drawpiece)(j CURX1%((CX%XO)):: Rubber band center point(t CURY1%((CY%YO)):: To closest Print location/)~ D$(IN$(,I%)"_",(IN$(,I%)"_","_"))G) M%(((D$)))d) M% N%M% : N%m) K%v) L%) J%CURX1%0* (J%L%,CURY1%)COLORS(VA%) (J%L%,((CURY1%)))COLORS(VA%) (J%L%,CURY1%)COLORS(VA%) (J%L%,((CURY1%)))COLORS(VA%) K%N%N* :PSET(J%-L%-1,CURY1%*9)t* :PSET(J%-L%-1,((CURY1%+2)*9)-1)* :PSET(J%+L%+8,CURY1%*9)* :PSET(J%+L%+8,((CURY1%+2)*9)-1)* L%L%* K%K%* * * :DRAWBORDER+ O% L% C+( (J%O%,CURY1%)(J%O%,((CURY1%))),COLORS(),BFv+2 (J%O%,CURY1%)(J%O%,((CURY1%)))+< (J%O%,CURY1%)(J%O%,((CURY1%)))+F (J%O%,(CURY1%))(J%O%,(CURY1%)),P (J%O%,((CURY1%)))(J%O%,((CURY1%))),Z O%",d :,n :LABELDESCRIPTIONP,x CURX%CURX1%N%a, CURY%CURY1%y, BGRCOLORS(): , b, D$;, , :LABELPERCENT (Needs xo,yo from paint calc), CURX%CURX1%, CURY%CURY1%- BGRCOLORS():  - b0- "##.#!";(IN$(,I%)),"%";6- G- :OUTLABELS- OA1% OAI%OA1%: WS%: : " :: sort first quadrant labels- OA2% OAI%OA2%: WS%: :  :: sort second quadrant labelsG. OA3% OAI%OA3%: WS%: :  :: sort third quadrant labels. OA4% OAI%OA4%: WS%: :  :: sort fourth quadrant labels. ." CPOS%(SCRLN%)(BXHT%)., PV1% OA1%.6 RBY%(((CY%OUL(PV1%,,))))/@ CPOS% CON1%: /J RBY%CPOS% OUL(PV1%,,)CPOS%: CPOS%CPOS%BXHT% : OUL(PV1%,,)RBY%: CPOS%RBY%BXHT%/T D$(IN$(,OUL(PV1%,,))"_",(IN$(,OUL(PV1%,,))"_","_"))/^ M%(((D$)))/h M% N%M% : N%,0r OUL(PV1%,,)((CX%OUL(PV1%,,)))A0| OUL(PV1%,,)N%L0 PV1%R0 q0 CPOS%(SCRLN%)(BXHT%)0 PV1% OA2%0 RBY%(((CY%OUL(PV1%,,))))0 CPOS% CON2%: 21 RBY%CPOS% OUL(PV1%,,)CPOS%: CPOS%CPOS%BXHT% : OUL(PV1%,,)RBY%: CPOS%RBY%BXHT%x1 D$(IN$(,OUL(PV1%,,))"_",(IN$(,OUL(PV1%,,))"_","_"))1 M%(((D$)))1 M% N%M% : N%1 OUL(PV1%,,)((CX%OUL(PV1%,,)))(N%)1 OUL(PV1%,,)N%2 PV1%2 2 CPOS%(SCRLN%)32 PV1% OA3%X2& RBY%(((CY%OUL(PV1%,,))))20 CPOS%SCRLN%BXHT% CON3%: 2: RBY%CPOS% OUL(PV1%,,)CPOS%: CPOS%CPOS%BXHT% : OUL(PV1%,,)RBY%: CPOS%RBY%BXHT%/3D D$(IN$(,OUL(PV1%,,))"_",(IN$(,OUL(PV1%,,))"_","_"))G3N M%(((D$)))d3X M% N%M% : N%3b OUL(PV1%,,)((CX%OUL(PV1%,,)))(N%)3l OUL(PV1%,,)N%3v PV1%3 3 CPOS%(SCRLN%)3 PV1% OA4%4 RBY%(((CY%OUL(PV1%,,))))84 CPOS%SCRLN%BXHT% CON4%: 4 RBY%CPOS% OUL(PV1%,,)CPOS%: CPOS%CPOS%BXHT% : OUL(PV1%,,)RBY%: CPOS%RBY%BXHT%4 D$(IN$(,OUL(PV1%,,))"_",(IN$(,OUL(PV1%,,))"_","_"))4 M%(((D$)))5 M% N%M% : N%I5 OUL(PV1%,,)((CX%OUL(PV1%,,)))^5 OUL(PV1%,,)N%i5 PV1%o5 5 :Display Outside Labels5 CON1% LCX%: LCY%: :  5 PV1% OA1%5 I%OUL(PV1%,,)6* N%OUL(PV1%,,)64 VA%(I% CLMOD%)06> CURX%OUL(PV1%,,)H6H CURY%OUL(PV1%,,)d6R EROX%CX%OUL(PV1%,,)6\ EROY%CY%OUL(PV1%,,)6f LSGX%(CURX%)6p LSGY%(CURY%)6z OSGX%CX%OUL(PV1%,,)6 OSGY%CY%OUL(PV1%,,)7 (LSGX%,LSGY%)(EROX%,EROY%),COLORS(VA%)>7 (EROX%,EROY%)(OSGX%,OSGY%),COLORS(VA%)n7 D$(IN$(,I%)"_",(IN$(,I%)"_","_"))7 BGRCOLORS(): 7 b7 D$;7 CURY%CURY%7 N% CURX%CURX%N%7 b7 "##.#!";(IN$(,I%)),"%";8 PV1%78 CON2% LCX%: LCY%: : K8 PV1% OA2%`8I%OUL(PV1%,,)u8N%OUL(PV1%,,)8VA%(I% CLMOD%)8$CURX%OUL(PV1%,,)8.CURY%OUL(PV1%,,)88EROX%CX%OUL(PV1%,,)8BEROY%CY%OUL(PV1%,,)9LLSGX%((CURX%N%))'9VLSGY%(CURY%)C9`OSGX%CX%OUL(PV1%,,)_9jOSGY%CY%OUL(PV1%,,)9t(LSGX%,LSGY%)(EROX%,EROY%),COLORS(VA%)9~(EROX%,EROY%)(OSGX%,OSGY%),COLORS(VA%)9D$(IN$(,I%)"_",(IN$(,I%)"_","_")):BGRCOLORS():  : b: D$;':CURY%CURY%F: N% CURX%CURX%N%P: bs: "##.#!";(IN$(,I%)),"%";~: PV1%: CON3% LCX%: LCY%: : : PV1% OA3%:I%OUL(PV1%,,):N%OUL(PV1%,,);VA%(I% CLMOD%) ; CURX%OUL(PV1%,,)8;CURY%OUL(PV1%,,)T;EROX%CX%OUL(PV1%,,)p;(EROY%CY%OUL(PV1%,,);2LSGX%((CURX%N%));<LSGY%(CURY%);FOSGX%CX%OUL(PV1%,,);POSGY%CY%OUL(PV1%,,)LSGX%(CURX%)>"LSGY%(CURY%)6>,OSGX%CX%OUL(PV1%,,)R>6OSGY%CY%OUL(PV1%,,)>@(LSGX%,LSGY%)(EROX%,EROY%),COLORS(VA%)>J(EROX%,EROY%)(OSGX%,OSGY%),COLORS(VA%)>TD$(IN$(,I%)"_",(IN$(,I%)"_","_"))>]BGRCOLORS(): >^ b?h D$;?rCURY%CURY%9?| N% CURX%CURX%N%C? bf? "##.#!";(IN$(,I%)),"%";q? PV1%w?? COLORS() (LCX%,LCY%)(LCX%,LCY%),COLORS(),BF?CURX%LCX%?CURY%LCY%@ COLORS() BGRCOLORS():  : BGRCOLORS(): "@ b<@"Labeling Conflict";N@CURY%CURY%X@ br@"in this quadrant.";x@@:CHARTNAME@TITLE$(TITLE$,P)@CURX%(P(TITLE$))@&CURY% A/ COLORS() BGRCOLORS():  : BGRCOLORS(): A0 b4AD ()"p";TITLE$;()"q":ANIAX:PRINTATAb CURY%,CURX%: PRINT CHR$(27)"Y"CHR$(32+CURY%)CHR$(32+CURX%);AlAv"R",,"WHAT.RUN", : A  :A$: AA #,AS A$,AS B$,AS C$,AS D$A ,BA(A$)BB(B$)"BTIMLOOP1(C$)6BTIMLOOP2(D$)ABMODEARB #, AS A$eB ,B:AA$A$kBqBB"I",,AA$B:B #,TITLE$: #,DATFIL$B  #,FY$:: Data field rows obtained from .PIE fileCFY%((FY$))(C FX%:: Data field columnsUC* :: dim arrays blank out in$ etc.C4 I% FY%: #,A$:XSTEVE(A$," "): XSTEVE A$(A$,XSTEVE)C>IN$(,I%) (A$(,"_"),FL%()): I%CH  : explodesCRD\"I",,DATFIL$3Df L:: read in descriptions and amounts9Dp?DzKD:CORED:COLS 1 DESCRIPTION 2 AMOUNT 3 EXPLODE (Y OR N) 4 PERCENTAGE (INTERNALLY CALC'D)D FL%(FX%):: Array for len of fieldsE IN$(FX%,FY%):: Array for input=E OUL(FY%,,):: Array for label at outside of Pie pEFL%():: Length of 0 field "Description"EFL%() :: Length of 1 field "Amount"EFL%():: Length of 2 field "Explode"E J% FY%:: Set array to Blanks F I% FX%(F IN$(I%,J%)(FL%(I%))3F I% ";()"q";MJACK$:COUNTCOUNT M MODE JACK$() N COUNTTIMLOOP2 MODE : "MENU"N COUNTTIMLOOP1 MODE  : JACK$( )  : : :"menu",0uN"R",,"WHAT.RUN", N& #, AS A$,AS B$N0 ,N:A(A$)NDB(B$)NNBBOX BA FL:B : FL&Ob B$(B)5Ol A$(A)?Ov ,QO #, AS C$dO ,B:CC$C$jOO FL : "MENU" : TYPE$(CC$,(CC$,"."),)O TYPE$"p" TYPE$"P" : : : TYPE$OOp COLORS() Pz(CX%XO,CY%YO),COLORS(VA%)#PcP BGR BGR BGRBGR : BGR BGR BGRBGRP FGR FGR FGRFGR : FGR FGR FGRFGRP COLORS() FGRBGR FGRCOLORS():BGRCOLORS()P FGR,BGR: QL (,),:PT(,): (,)XQV PT COLORS$"07777777" : COLORS$"01234567"Q` J :COLORS(J)((COLORS$,J,)): J:FGRCOLORS():Qx COLORS() : : : COLORS$"01234567"Q` J :COLORS(J)((COLORS$,J,)): J:FGRCOL