%REALSLONG ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! 2900 FEP STATISTICS PACKAGE ! ! ! ! GRAPH1 - USERS V KILO BYTES/SECOND AND CPU ! ! GRAPH2 - 2900 USERS V BLOCKS RXD & TXD ! ! GRAPH3 - 2970 USERS V BLOCKS RXD & TXD ! ! GRAPH4 - FREQUENCY V PKTS/MIN/USER ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! %EXTERNALROUTINESPEC OPENPLOTTER(%INTEGER N) %EXTERNALROUTINESPEC CLOSEPLOTTER %EXTERNALROUTINESPEC PLOTSTRING(%STRING(255) S) %EXTERNALROUTINESPEC PLOTSYMBOL(%INTEGER N) %EXTERNALROUTINESPEC SETPLOT(%REAL XL,YL,XH,YH,%INTEGER N) %EXTERNALROUTINESPEC POINTSYMBOL(%INTEGER ICODE,%REAL SIZE) %EXTERNALROUTINESPEC SCALE(%REAL X0,Y0,XS,YS,THETA) %EXTERNALROUTINESPEC AXIS(%REAL X,Y,%INTEGER M,%REAL D,%INTEGER N) %EXTERNALROUTINESPEC ANNOTATE(%REAL X,Y,SIZE,THETA) %EXTERNALROUTINESPEC PLOTNUMBER(%REAL X,%INTEGER M,N) %EXTERNALROUTINESPEC PLOT(%INTEGER IPEN,%REAL TOX,TOY,DASH,GAP) %EXTERNALROUTINESPEC CHANGEPEN(%INTEGER IPEN) %EXTERNALROUTINESPEC LINEGRAPH(%LONGREALARRAYNAME X,Y,%INTEGER M,N, %C %LONGREAL DASH,GAP,%INTEGER ICODE,%LONGREAL SIZE) %EXTERNALROUTINESPEC CURVE(%LONGREALARRAYNAME X,Y,%INTEGER M,N, %C %LONGREAL XON,XOFF,DX,DY,DASH,GAP,%INTEGER ICODE,%LONGREAL SIZE) ! %EXTERNALROUTINESPEC DEFINE(%STRING(63) S) %EXTERNALROUTINESPEC LIST(%STRING(63) S) %EXTERNALROUTINESPEC DESTROY(%STRING(63) S) %EXTERNALROUTINESPEC PROMPT(%STRING(15) S) ! ! ! ALL INPUT IS IN THE FORM OF LINES OF SEVEN NUMBERS ! THE NUMBERS ARE (IN A PER MIN FORM OR PERCENTAGE) ! KBITS/SEC, CPU, USERS, TOTAL PKTS, RJE PKTS, SBR PKTS, OTHER PKTS (ITP) ! ! ! %OWNINTEGER END = -1 %OWNLONGREALARRAY TIME(0:800) = 0(801) %OWNLONGREALARRAY KBS(0:800) = 0(801) %OWNLONGREALARRAY CPU(0:800) = 0(801) %OWNLONGREALARRAY USERS(0:800) = 0(801) %OWNLONGREALARRAY RJE(0:800) = 0(801) %OWNLONGREALARRAY PKTS(0:800) = 0(801) %OWNLONGREALARRAY SBR(0:800) = 0(801) %OWNLONGREALARRAY ITP(0:800) = 0(801) %OWNLONGREALARRAY RJEI(0:800) = 0(801) %OWNREAL TIMEI = 1 %ROUTINE READ RECORDS %INTEGER I,MAXNIB SELECT INPUT(1) %CYCLE READ(I); %EXITIF I<0 END=END+1; TIME(END)=END/2 KBS(END) = I READ(CPU(END)); READ(USERS(END)) %IF USERS(END) < 0 %THEN USERS(END) = 0 %IF CPU(END) < 0 %THEN CPU(END) = 0 READ(PKTS(END)); READ(RJE(END)); READ(SBR(END)) READ(ITP(END)); READ(RJEI(END)) %REPEAT %IF END > 540 %START %CYCLE I = 0, 1, END TIME(I) = TIME(I)/2 %REPEAT TIMEI = 2 %FINISH !! %IF END < 270 %START %CYCLE I = 0, 1, END TIME(I) = TIME(I)*2 %REPEAT TIMEI = TIMEI/2 %FINISH %END ! %ROUTINE BOX(%REAL X1, Y1, X2, Y2) %REAL X1I, Y1I, X2I, Y2I !! X1I = X1; Y1I = Y1; X2I = X2; Y2I = Y2 SCALE(0, 0, 1, 1, 0) !! PLOT(1,X1I, Y1I, 0, 0) PLOT(2, X2I, Y1I, 0, 0) PLOT(2, X2I, Y2I, 0, 0) PLOT(2, X1I, Y2I, 0, 0) PLOT(2, X1I, Y1I, 0, 0) %END %ROUTINE REGRESSION(%LONGREALARRAYNAME X,Y, %C %INTEGER END, %LONGREALNAME A0,B0,A1,B1) %INTEGER I %LONGREAL SX,SY,SX2,SXY,SY2 SX=0;SY=0;SX2=0;SXY=0;SY2=0 %CYCLE I = 1, 1, END SX = SX+X(I); SY = SY+Y(I) SX2 = SX2 + X(I)*X(I); SY2 = SY2+Y(I)*Y(I) SXY = SXY+X(I)*Y(I) %REPEAT %RETURN %IF SX=0 %OR SY=0 B0 = ((SY*SX2)-(SX*SXY))/((END*SX2-SX*SX)) B1 = ((SX*SY2)-(SY*SXY))/(END*SY2-SY*SY) A0 = (END*SXY-SX*SY)/(END*SX2-SX*SX) A1 = (END*SXY-SX*SY)/(END*SY2-SY*SY) %END ! %ROUTINE DRAW REGRESSION LINES(%LONGREALARRAYNAME X, Y, %C %INTEGER END, %LONGREAL MINX,MAXX,MINY,MAXY) %OWNLONGREAL A0=0,A1=0,B0=0,B1=0 %LONGREALARRAY NOS,AVS(0:1) REGRESSION(X,Y,END,A0,B0,A1,B1) NOS(0) = 0; NOS(1) = MAXX AVS(0) = B0; AVS(1) = MAXX*A0+B0 PRINTSTRING("'Y' AT MAX 'X'"); PRINT(AVS(1),4,1) PRINTSTRING(", AV ="); PRINT(AVS(1)/MAXX, 4, 2) NEWLINE %IF B0<0 %START %RETURN %IF A0=0 AVS(0) = 0; NOS(0) = -B0/A0 %FINISH %IF AVS(1) > MAXY %START %RETURN %IF A0=0 AVS(1) = MAXY; NOS(1) = MAXY/A0-B0/A0 %FINISH LINEGRAPH(NOS, AVS, 0, 1, 1, 0, 0, 0) NOS(0) = 0; NOS(1) = MAXX %RETURN %IF A1=0 AVS(0) = -B1/A1; AVS(1) = MAXX/A1-B1/A1 %IF AVS(0) < 0 %START AVS(0) = 0; NOS(0) = B1 %FINISH %IF AVS(1)>MAXY %START AVS(1) = MAXY NOS(1) = MAXY*A1+B1 %FINISH LINEGRAPH(NOS, AVS, 0, 1, 1, 0, 0, 0) %END ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! 2900 FEP STATISTICS GRAPH 1 ROUTINE ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! THIS ANALYSES THE DATA FROM THE #PRE FILE AND PRODUCES A ! GRAPH OF TIME V. TOTAL USERS,NIBBLES AND CPU RATE. ! THE FILE IS LISTED AUTOMATICALLY TO .GP ! ! %EXTERNALROUTINE GRAPH1(%STRING(63) S) %LONGREALARRAY NOS,AVS(0:400) %STRING(63) FILE,TITLE %INTEGER I,K %OWNLONGREAL A0=0,A1=0,B0=0,B1=0 ! ! %ROUTINE NIBYAX(%REAL S1,S2,S3,S4) AXIS(0,0,2,25,14) %CYCLE I=50,50,350; !NUMBER Y AXIS ANNOTATE(S3,I-15,S1,90) PLOTNUMBER(I/20,1,1) %REPEAT ANNOTATE(S4,125,S2,90); !TITLE PLOTSTRING("KBITS PER SECOND") %END ! %ROUTINE CPUYAX(%REAL S1,S2,S3,S4) AXIS(0,0,2,20,5) %CYCLE I=20,20,100 ANNOTATE(S3,I-12,S1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(S4,10,S2,90); !TITLE PLOTSTRING("% CPU USED") %END ! %ROUTINE ZAP %INTEGER I %CYCLE I=0,1,400 AVS(I)=0; NOS(I)=0 %REPEAT %END ! %ROUTINE AVG %INTEGER I %LONGREALARRAY TT(0:128) %CYCLE I=0,1,120 TT(I) = I %IF NOS(I)>0 %THEN AVS(I)=AVS(I)/NOS(I) %REPEAT LINEGRAPH(TT,AVS,0,120,1,0,0,0) %END %ROUTINE COMMON X(%REAL Y) %INTEGER I ! ! ! COMMON X AXIS ! AXIS(0,Y,1,10,27); !27 TICS %CYCLE I=10,10,270; !NUMBER AXIS ANNOTATE(I-4,Y-7,1,0) PLOTNUMBER(I*TIMEI,1,0) %REPEAT ANNOTATE(90,Y-20,2,0); !X AXIS TITLE PLOTSTRING("TIME (MINS)") ! %END ! ! %ROUTINE COMMON X 2(%REAL Y) %INTEGER I ! ! COMMON X AXIS ! AXIS(0,Y,1,10,12) %CYCLE I=10,10,120; !NUMBER USERS ANNOTATE(I-1,Y-20,0.4,0) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(14,Y-50,1,0); !TITLE PLOTSTRING("TOTAL USERS") %END ! ! CODE STARTS HERE ! S->FILE.(",").TITLE; !SEPARATE FILE AND TITLE DEFINE("1,".FILE) DEFINE("SQ40,GRAPH1#TMP"); !TEMP PLOT FILE READ RECORDS %IF END = -1 OPENPLOTTER(40) PLOTSTRING("ROOM 1013 ERCC") SETPLOT(0,0,40,30,M'CMS'); !40*30 CMS WINDOW BOX(3.1, 3, 33.1, 24) BOX(3.2, 3.1, 33.0, 23.9); ! 2 BOXES AT A4 SCALE(5,5,0.1,0.05,0); !1ST SCALE,X&Y 1CM=20 UNITS ! ! COMMON X AXIS ! COMMON X(0) COMMON X(130) COMMON X(290) ! ! 1ST Y AXIS USERS ! AXIS(0,0,2,10,12); !8 TICS %CYCLE I=10,10,120; !NUMBER AXIS ANNOTATE(-3,I-3,1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(-10,10,4,90); !Y AXIS TITLE PLOTSTRING("TOTAL USERS") LINEGRAPH(TIME,USERS,0,END,1,0,0,0) ! ! 2ND Y AXIS KBS ! SCALE(5,11.5,0.1,0.02,0); !CHANGE ORIGIN,1Y CM=50 UNITS NIBYAX(1,2,-3,-10) LINEGRAPH(TIME,KBS,0,END,1,0,0,0) ! ! 3RD Y AXIS CPU RATE ! SCALE(5,19.5,0.1,0.025,0); !CHANGE ORIGIN,1YCM=40 UNITS CPUYAX(1,2,-3,-10) LINEGRAPH(TIME,CPU,0,END,1,0,0,0) ANNOTATE(50,130,4,0); !OVERALL TITLE PLOTSTRING(TITLE) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! SECOND PLOT STARTS HERE ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! SETPLOT(0,0,30,40,M'CMS') BOX(2.1, 3, 23.1, 33) BOX(2.2, 3.1, 23.0, 32.9) SCALE(5,5,0.135,0.02,0) ! ! COMMON X AXIS ! COMMON X 2(0) COMMON X 2(10/.02) ! ! 1ST Y AXIS KBS ! ZAP NIBYAX(0.6,1.2,-1,-5) %CYCLE I=0,1,END; !SCATTER PLOT(1,USERS(I),KBS(I),0,0) POINTSYMBOL(1,0) K=INT PT(USERS(I)) AVS(K)=AVS(K)+KBS(I) NOS(K)=NOS(K)+1 %REPEAT AVG ! ! 2ND Y AXIS CPU ! SCALE(5,15,0.135,0.05,0) ZAP CPUYAX(0.6,1.2,-1,-5) %CYCLE I=0,1,END PLOT(1,USERS(I),CPU(I),0,0) POINTSYMBOL(1,0) K=INT PT(USERS(I)) AVS(K)=AVS(K)+CPU(I) NOS(K)=NOS(K)+1 %REPEAT AVG DRAW REGRESSION LINES(USERS, CPU,END,0,120,0,100) ANNOTATE(10,130,1.4,0) PLOTSTRING(TITLE) CLOSEPLOTTER ! LIST("GRAPH1#TMP,.GP") ! DESTROY("GRAPH#TMP") %END ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! 2900 FEP STATISTICS GRAPH 2 ROUTINE ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! THIS ANALYSES THE DATA FROM THE #PRE FILE AND PRODUCES A ! GRAPH OF TIME V NSI BLOCKS RECEIVED AND TRANSMITTEDTO 4 75 ! THE FILE IS LISTED AUTOMATICALLY TO .GP ! ! %EXTERNALROUTINE GRAPH2(%STRING(63) S) %LONGREALARRAY NOS,AVS(0:128) %STRING(63) FILE,TITLE %INTEGER I,K ! ! %ROUTINE NIBYAX(%REAL S1,S2,S3,S4) AXIS(0,0,2,100,20) %CYCLE I=200,200,2000; !NUMBER Y AXIS ANNOTATE(S3,I-25,S1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(S4,700,S2,90); !TITLE PLOTSTRING("NSI BLOCKS(PKTS)") %END ! %ROUTINE ZAP %INTEGER I %CYCLE I=0,1,128 AVS(I)=0; NOS(I)=0 %REPEAT %END ! %ROUTINE AVG %INTEGER I %LONGREALARRAY TT(0:128) %CYCLE I=0,1,128 TT(I) = I %IF NOS(I)>0 %THEN AVS(I)=AVS(I)/NOS(I) %REPEAT LINEGRAPH(TT,AVS,0,120,1,0,0,0) %END ! ! CODE STARTS HERE ! S->FILE.(",").TITLE; !SEPARATE FILE AND TITLE DEFINE("1,".FILE) DEFINE("SQ40,GRAPH2#TMP"); !TEMP PLOT FILE READ RECORDS %IF END = -1 OPENPLOTTER(40) PLOTSTRING("ROOM 1013 ERCC") SETPLOT(0,0,40,30,M'CMS'); !30*40 CMS WINDOW BOX(3.1, 3,33.1,24) BOX(3.2,3.1,33,23.9) SCALE(5,5,0.1,0.05,0); !1ST SCALE,X&Y 1CM=20 UNITS ! ! COMMON X AXIS ! AXIS(0,0,1,10,27); !27 TICS %CYCLE I=10,10,270; !NUMBER AXIS ANNOTATE(I-4,-7,1,0) PLOTNUMBER(I*TIMEI,1,0) %REPEAT ANNOTATE(90,-10,2,0); !X AXIS TITLE PLOTSTRING("TIME (MINS)") ! ! 1ST Y AXIS USERS ! AXIS(0,0,2,10,12); !8 TICS %CYCLE I=10,10,120; !NUMBER AXIS ANNOTATE(-3,I-3,.9,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(-10,20,2,90); !Y AXIS TITLE PLOTSTRING("2900 USERS") LINEGRAPH(TIME,USERS,0,END,1,0,0,0) ! ! 2ND Y AXIS BLOCKS ! SCALE(5,12,0.1,0.005,0); !CHANGE ORIGIN,1Y CM=100 UNITS NIBYAX(1,2,-3,-10) LINEGRAPH(TIME,PKTS,0,END,1,0,0,0) ANNOTATE(1,1800,1,0) PLOTSTRING("TOTAL PKTS") CHANGEPEN(4) LINEGRAPH(TIME,ITP,0,END,1,0,0,0) ANNOTATE(1,1600,1,0) PLOTSTRING("ITP PKTS") CHANGEPEN(2) LINEGRAPH(TIME,RJE,0,END,1,0,0,0) ANNOTATE(1,1400,1,0) PLOTSTRING("RJE PKTS") CHANGEPEN(1) ANNOTATE(50,2100,4,0); !OVERALL TITLE PLOTSTRING(TITLE) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! SECOND PLOT STARTS HERE ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! SETPLOT(0,0,30,40,M'CMS') BOX(2.1, 3, 23.1, 33) BOX(2.2, 3.1, 23.0, 32.9) SCALE(5,5,0.135,0.005,0) ! ! COMMON X AXIS ! AXIS(0,0,1,10,12) %CYCLE I=10,10,120; !NUMBER USERS ANNOTATE(I-1,-100,0.8,0) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(50,-200,1.4,0); !TITLE PLOTSTRING("2900 USERS") ! ! 1ST Y AXIS ! ZAP NIBYAX(0.6,1.2,-1,-5) %CYCLE I=0,1,END; !SCATTER PLOT(1,USERS(I),PKTS(I),0,0) POINTSYMBOL(1,0) K=INT PT(USERS(I)) AVS(K)=AVS(K)+PKTS(I) NOS(K)=NOS(K)+1 %REPEAT AVG ANNOTATE(2,1500,1,0) PLOTSTRING("TOTAL PKTS") ! ! 2ND Y AXIS ! SCALE(5,18,0.135,0.005,0) ZAP NIBYAX(0.6,1.2,-1,-5) %CYCLE I=0,1,END PLOT(1,USERS(I),ITP(I),0,0) POINTSYMBOL(1,0) K=INT PT(USERS(I)) AVS(K)=AVS(K)+ITP(I) NOS(K)=NOS(K)+1 %REPEAT AVG DRAW REGRESSION LINES(USERS, ITP, END, 0, 120, 0, 2000) ANNOTATE(2,1500,1,0) PLOTSTRING("ITP PKTS") ANNOTATE(10,2100,1.4,0) PLOTSTRING(TITLE) CLOSEPLOTTER ! LIST("GRAPH2#TMP,.GP") ! DESTROY("GRAPH2#TMP") %END ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! 2900 FEP STATISTICS GRAPH 4 ROUTINE ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! THIS PRODUCES A GRAPH OF THE FREQUENCY AGAINST ! PACKETS PER USER PER MIN AND CALCULATES THE AVERAGE AND ! STANDARD DEVIATION. ! ! %EXTERNALROUTINE GRAPH4(%STRING(63) S) %STRING(63) FILE,TITLE %REAL RAVER,TAVER,RDEVIATION,TDEVIATION %OWNINTEGERARRAY RFREQ(0:14) %OWNINTEGERARRAY TFREQ(0:14) %OWNINTEGERARRAY TKEEP(1:800) %OWNINTEGERARRAY RKEEP(1:800) %LONGINTEGER RCOUNT,TCOUNT %INTEGER CO %CONSTINTEGER MAXHOST=2 %INTEGER HOST,I ! %ROUTINE READ RECORDS %INTEGER I,J,USER,TX,RX CO=0; TCOUNT=0; RCOUNT=0 SELECT INPUT(1) %CYCLE READ(I); %IF I<0 %THEN %EXIT READ(I) READ(USER); READ(I); READ(I); READ(TX); READ(RX) CO=CO+1 %IF USER<=0 %THEN USER=1 J=TX//USER %IF J<0 %THEN J = 0 %IF J>=150 %START PRINTSTRING("TX BOUNDS"); WRITE(J,2); NEWLINE J = 149 %FINISH TFREQ(J//10)=TFREQ(J//10)+1 TCOUNT=TCOUNT+J TKEEP(CO)=J J=RX//USER %IF J<0 %THEN J=0 %IF J>=150 %START PRINTSTRING("RX BOUNDS"); WRITE(J,2); NEWLINE J = 149 %FINISH RFREQ(J//10)=RFREQ(J//10)+1 RCOUNT=RCOUNT+J RKEEP(CO)=J READ(I) %REPEAT RAVER=RCOUNT/CO TAVER=TCOUNT/CO PRINT(RAVER,2,2); PRINT(TAVER,2,2); NEWLINE %END ! %ROUTINE HIST(%INTEGERARRAYNAME D) %REAL TOX,TOY %INTEGER I PLOT(1,0,0,0,0); !RETURN TO ORIGIN %CYCLE I=0,1,14 TOX=I*10 TOY=D(I) PLOT(2,TOX,TOY,0,0) PLOT(2,TOX+10,TOY,0,0) PLOT(2,TOX+10,0,0,0) %REPEAT %END ! %ROUTINE COMPUTE DEVIATION %INTEGER I,RJ,TJ %REAL RTOT,TTOT RTOT=0; TTOT=0 %CYCLE I=1,1,CO RTOT=RTOT+((RAVER-RKEEP(I))**2) TTOT=TTOT+((TAVER-TKEEP(I))**2) %REPEAT RDEVIATION=SQRT(RTOT/CO) TDEVIATION=SQRT(TTOT/CO) %END ! ! CODE STARTS HERE ! S->FILE.(",").TITLE DEFINE("1,".FILE) DEFINE("SQ40,GRAPH4#TMP") READ RECORDS COMPUTE DEVIATION OPENPLOTTER(40) PLOTSTRING("ROOM 2006 ERCC") SETPLOT(0,0,30,40,M'CMS') BOX(3.1, 3, 24.1, 33) BOX(3.2, 3.1, 24.0, 32.9) SCALE(5,5,0.1,0.1,0); !1CM=10 UNITS ! ! X AXIS ! AXIS(0,0,1,10,15) %CYCLE I=0,10,140 ANNOTATE(I+1,-3,0.5,0) PLOTNUMBER(I,1,0) ANNOTATE(I+5,-3,0.5,0) POINTSYMBOL(12,1) ANNOTATE(I+7,-3,0.5,0) PLOTNUMBER(I+9,1,0) %REPEAT ANNOTATE(55,-10,2,0) PLOTSTRING("PACKETS/MIN/USER") ! ! Y AXIS ! AXIS(0,0,2,10,15) %CYCLE I=10,10,150 ANNOTATE(-3,I-4,1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(-10,65,2,90) PLOTSTRING("FREQUENCY") ! HIST(RFREQ) ANNOTATE(40,155,2,0) PLOTSTRING(TITLE) ANNOTATE(120,130,1,0) PLOTSTRING("ITP(BLACK) AVERAGE ST.DEV.") ANNOTATE(138,127,1,0) PLOTNUMBER(RAVER,3,2) ANNOTATE(152,127,1,0) PLOTNUMBER(RDEVIATION,3,2) ! CHANGEPEN(4) HIST(TFREQ) ANNOTATE(120,120,1,0) PLOTSTRING("SBR(RED) AVERAGE ST.DEV.") ANNOTATE(138,117,1,0) PLOTNUMBER(TAVER,3,2) ANNOTATE(152,117,1,0) PLOTNUMBER(TDEVIATION,3,2) CLOSEPLOTTER PRINTSTRING("ITP PKTS/MIN/USER ="); PRINT(RAVER, 3, 2) NEWLINE PRINTSTRING("SBR PKTS/MIN/USER ="); PRINT(TAVER, 3, 2) NEWLINE %END %EXTERNALROUTINE GRAPH5(%STRING(63) S) %LONGREALARRAY NOS,AVS(0:100) %STRING(63) FILE,TITLE %INTEGER I,K %OWNLONGREAL A0=0, A1=0, B0=0, B1=0 ! ! %ROUTINE NIBYAX(%REAL S1,S2,S3,S4) AXIS(0,0,2,100,20) %CYCLE I=200,200,2000; !NUMBER Y AXIS ANNOTATE(S3,I-25,S1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(S4,500,S2,90); !TITLE PLOTSTRING("NSI BLOCKS(PKTS)") %END ! %ROUTINE ZAP %INTEGER I %CYCLE I=0,1,100 AVS(I)=0; NOS(I)=0 %REPEAT %END ! %ROUTINE AVG %INTEGER I %LONGREALARRAY TT(0:100) %CYCLE I=0,1,100 TT(I) = I %IF NOS(I)>0 %THEN AVS(I)=AVS(I)/NOS(I) %REPEAT LINEGRAPH(TT,AVS,0,100,1,0,0,0) %END ! ! CODE STARTS HERE ! S->FILE.(",").TITLE; !SEPARATE FILE AND TITLE DEFINE("1,".FILE) DEFINE("SQ40,GRAPH5#TMP"); !TEMP PLOT FILE READ RECORDS %IF END = -1 OPENPLOTTER(40) PLOTSTRING("ROOM 1013 ERCC") !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! SECOND PLOT STARTS HERE ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! SETPLOT(0,0,30,40,M'CMS') BOX(2.1, 3, 23.1, 33) BOX(2.2, 3.1, 23.0, 32.9) SCALE(5,5,0.1,0.005,0) ! ! COMMON X AXIS ! AXIS(0,0,1,10,10) %CYCLE I=10,10,100; !NUMBER USERS ANNOTATE(I-1,-100,0.1,0) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(45,-250,3,0); !TITLE PLOTSTRING("% CPU USED") ! ! 1ST Y AXIS ! ZAP NIBYAX(1,3,-3,-15) %CYCLE I=0,1,END; !SCATTER PLOT(1,CPU(I),PKTS(I),0,0) POINTSYMBOL(1,0) K=INT PT(CPU(I)) AVS(K)=AVS(K)+PKTS(I) NOS(K)=NOS(K)+1 %REPEAT DRAW REGRESSION LINES(CPU,PKTS,END,0,100,0,2000) ANNOTATE(10,2000,3,0) PLOTSTRING("ALL PKTS (ONE DIRECTION)") ! ! 2ND Y AXIS ! SCALE(5,18,0.1,0.005,0) ZAP NIBYAX(1,3,-3,-15) %CYCLE I=0,1,END ITP(I) = PKTS(I)+RJEI(I) PLOT(1,CPU(I),ITP(I),0,0) POINTSYMBOL(1,0) K=INT PT(CPU(I)) AVS(K)=AVS(K)+ITP(I) NOS(K)=NOS(K)+1 %REPEAT DRAW REGRESSION LINES(CPU, ITP, END,0,100,0,2000) ANNOTATE(10,1500,3,0) PLOTSTRING("ONE DIR+RJE") ANNOTATE(50,2100,2.5,0) PLOTSTRING(TITLE) CLOSEPLOTTER ! LIST("GRAPH2#TMP,.GP") ! DESTROY("GRAPH2#TMP") %END ! %EXTERNALROUTINE FEPGRAPHS(%STRING (255) S) %EXTERNALROUTINESPEC CLEAR(%STRING (255) S) %EXTERNALROUTINESPEC LIST(%STRING (255) S) GRAPH1(S) SELECT INPUT(0); CLOSE STREAM(1); CLOSE STREAM(40) CLEAR("") GRAPH2(S) SELECT INPUT(0); CLOSE STREAM(1); CLOSE STREAM(40) CLEAR("") GRAPH4(S) SELECT INPUT(0); CLOSE STREAM(1); CLOSE STREAM(40) GRAPH5(S) SELECT INPUT(0); CLOSE STREAM(1); CLOSESTREAM(40) ! GRAPH6(S) ! LIST("GRAPH1#TMP,.GP") ! LIST("GRAPH2#TMP,.GP") ! LIST("GRAPH4#TMP,.GP") %END %ENDOFFILE