%REALSLONG ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! NODE STATISTICS PACKAGE ! ! ! ! GRAPH1 - CONNECTS V BLKS AND CPU ! ! GRAPH2 - 2900 USERS V BLOCKS RXD & TXD ! ! GRAPH3 - 2970 USERS V BLOCKS RXD & TXD ! ! GRAPH4 - FREQUENCY V CON/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) ! CPU, ATT, TOTAL CON, MES CON, COK CON, CFAIL, BLKS, OTHERS ! ! ! %OWNINTEGER END = -1 %OWNLONGREALARRAY TIME(0:1100) = 0(1101) %OWNLONGREALARRAY OTHERS(0:1100) = 0(1101) %OWNLONGREALARRAY CPU(0:1100) = 0(1101) %OWNLONGREALARRAY ATT(0:1100) = 0(1101) %OWNLONGREALARRAY MES(0:1100) = 0(1101) %OWNLONGREALARRAY CON(0:1100) = 0(1101) %OWNLONGREALARRAY COK(0:1100) = 0(1101) %OWNLONGREALARRAY CFAIL(0:1100) = 0(1101) %OWNLONGREALARRAY BL(0:1100) = 0(1101) %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 CPU(END) = I READ(ATT(END)) %IF ATT(END) < 0 %THEN ATT(END) = 0 %IF CPU(END) < 0 %THEN CPU(END) = 0 READ(CON(END)); READ(MES(END)); READ(COK(END)) READ(CFAIL(END)); READ(BL(END)) READ(OTHERS(I)) %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 = 0, 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) PRINT(A0, 2, 1); PRINT(B0, 2, 1) PRINT(A1, 2, 1); PRINT(B1, 2, 1); NEWLINE NOS(0) = 0; NOS(1) = MAXX AVS(0) = B0; AVS(1) = MAXX*A0+B0 %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 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! NODE 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 ! ! %ROUTINE GRAPH1(%STRING(63) S) %LONGREALARRAY NOS,AVS(0:400) %STRING(63) FILE,TITLE %INTEGER I,K ! ! %ROUTINE NIBYAX(%REAL S1,S2,S3,S4) AXIS(0,0,2,500,14) %CYCLE I=1000,1000,7000; !NUMBER Y AXIS ANNOTATE(S3,I-150,S1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(S4,1500,S2,90); !TITLE PLOTSTRING("BLKS PER MINUTE") %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:40) %CYCLE I=0,1,40 TT(I) = I %IF NOS(I)>0 %THEN AVS(I)=AVS(I)/NOS(I) %REPEAT LINEGRAPH(TT,AVS,0,40,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-3,1,0) PLOTNUMBER(I*TIMEI,1,0) %REPEAT ANNOTATE(90,Y-10,2,0); !X AXIS TITLE PLOTSTRING("TIME (MINS)") ! %END ! ! %ROUTINE COMMON X 2(%REAL Y) %INTEGER I ! ! COMMON X AXIS ! AXIS(0,Y,1,5,8) %CYCLE I=5,5,40; !NUMBER USERS ANNOTATE(I-1,Y-20,0.4,0) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(14,Y-50,0.7,0); !TITLE PLOTSTRING("TOTAL CONNECT") %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.1,0); !1ST SCALE,X&Y 1CM=10UNITS ! ! COMMON X AXIS ! COMMON X(0) COMMON X(50) COMMON X(130) ! ! 1ST Y AXIS ATT ! AXIS(0,0,2,5,8); !8 TICS %CYCLE I=5,5,40; !NUMBER AXIS ANNOTATE(-3,I-3,1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(-10,5,2,90); !Y AXIS TITLE PLOTSTRING("NO OF CONNS") LINEGRAPH(TIME,CON,0,END,1,0,0,0) ! ! 2ND Y AXIS OTHERS ! SCALE(5,10,0.1,0.001,0); !CHANGE ORIGIN,1Y CM=50 UNITS NIBYAX(1,2,-3,-10) LINEGRAPH(TIME,BL,0,END,1,0,0,0) ! ! 3RD Y AXIS CPU RATE ! SCALE(5,18,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 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ->SKIPIT; ! ********************************************************** 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.4,0.02,0) ! ! COMMON X AXIS ! COMMON X 2(0) COMMON X 2(10/.02) ! ! 1ST Y AXIS BL ! ZAP NIBYAX(0.3,0.6,-1,-5) %CYCLE I=0,1,END; !SCATTER PLOT(1,CON(I),OTHERS(I),0,0) POINTSYMBOL(1,0) K=INT PT(CON(I)) AVS(K)=AVS(K)+OTHERS(I) NOS(K)=NOS(K)+1 %REPEAT AVG ! ! 2ND Y AXIS CPU ! SCALE(5,15,0.4,0.05,0) ZAP CPUYAX(0.3,0.6,-1,-5) %CYCLE I=0,1,END PLOT(1,BL(I),CPU(I),0,0) POINTSYMBOL(1,0) K=INT PT(BL(I)/500) %IF K>400 %THEN K=400; ! *???????????????????????????????? AVS(K)=AVS(K)+CPU(I) NOS(K)=NOS(K)+1 %REPEAT AVG DRAW REGRESSION LINES(BL, CPU,END,0,40,0,100) SKIPIT: ANNOTATE(10,130,0.7,0) PLOTSTRING(TITLE) CLOSEPLOTTER ! LIST("GRAPH1#TMP,.GP") ! DESTROY("GRAPH#TMP") %END ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! NODE 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 ! ! %ROUTINE GRAPH2(%STRING(63) S) %LONGREALARRAY NOS,AVS(0:40) %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("NO OF PKTS") %END ! %ROUTINE ZAP %INTEGER I %CYCLE I=0,1,40 AVS(I)=0; NOS(I)=0 %REPEAT %END ! %ROUTINE AVG %INTEGER I %LONGREALARRAY TT(0:40) %CYCLE I=0,1,40 TT(I) = I %IF NOS(I)>0 %THEN AVS(I)=AVS(I)/NOS(I) %REPEAT LINEGRAPH(TT,AVS,0,40,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.1,0); !1ST SCALE,X&Y 1CM=10UNITS ! ! COMMON X AXIS ! AXIS(0,0,1,10,27); !27 TICS %CYCLE I=10,10,270; !NUMBER AXIS ANNOTATE(I-4,-3,1,0) PLOTNUMBER(I*TIMEI,1,0) %REPEAT ANNOTATE(90,-10,2,0); !X AXIS TITLE PLOTSTRING("TIME (MINS)") ! ! 1ST Y AXIS CON ! AXIS(0,0,2,5,8); !8 TICS %CYCLE I=5,5,40; !NUMBER AXIS ANNOTATE(-3,I-3,1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(-10,5,2,90); !Y AXIS TITLE PLOTSTRING("NO OF CONN") LINEGRAPH(TIME,CON,0,END,1,0,0,0) CHANGEPEN(4) LINEGRAPH(TIME, ATT, 0, END, 1, 0, 0,0) CHANGEPEN(1) ! ! 2ND Y AXIS BLOCKS ! SCALE(5,10,0.1,0.005,0); !CHANGE ORIGIN,1Y CM=100 UNITS NIBYAX(1,2,-3,-10) LINEGRAPH(TIME,MES,0,END,1,0,0,0) ANNOTATE(1,1800,1,0) PLOTSTRING("SM/MIN") CHANGEPEN(4) LINEGRAPH(TIME,CFAIL,0,END,1,0,0,0) ANNOTATE(1,1600,1,0) PLOTSTRING("FAILED CON/MIN") CHANGEPEN(2) LINEGRAPH(TIME,COK,0,END,1,0,0,0) ANNOTATE(1,1400,1,0) PLOTSTRING("OK CON/MIN") 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.4,0.005,0) ! ! COMMON X AXIS ! AXIS(0,0,1,5,8) %CYCLE I=5,5,40; !NUMBER ATT ANNOTATE(I-1,-100,0.4,0) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(14,-200,0.7,0); !TITLE PLOTSTRING("CONNECTS") ! ! 1ST Y AXIS ! ZAP NIBYAX(0.3,0.6,-1,-5) %CYCLE I=0,1,END; !SCATTER PLOT(1,CON(I),BL(I),0,0) POINTSYMBOL(1,0) K=INT PT(CON(I)) AVS(K)=AVS(K)+BL(I) NOS(K)=NOS(K)+1 %REPEAT DRAW REGRESSION LINES(CON, BL, END, 0, 40, 0, 2000) ANNOTATE(2,1500,0.3,0) PLOTSTRING("BLOCKS/CONNECT") ! ! 2ND Y AXIS ! SCALE(5,18,0.4,0.005,0) ZAP NIBYAX(0.3,0.6,-1,-5) %CYCLE I=0,1,END PLOT(1,COK(I),CFAIL(I),0,0) POINTSYMBOL(1,0) K=INT PT(COK(I)) AVS(K)=AVS(K)+CFAIL(I) NOS(K)=NOS(K)+1 %REPEAT AVG ANNOTATE(2,1500,0.3,0) PLOTSTRING("FAILED CON/CONNECTS") ANNOTATE(10,2100,0.7,0) PLOTSTRING(TITLE) CLOSEPLOTTER ! LIST("GRAPH2#TMP,.GP") ! DESTROY("GRAPH2#TMP") %END ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! NODE STATISTICS GRAPH 4 ROUTINE ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! THIS PRODUCES A GRAPH OF THE FREQUENCY AGAINST ! PACKETS PER USER PER MIN AND CALCULATES THE AVERAGE AND ! STANDARD DEVIATION. ! ! %ROUTINE GRAPH4(%STRING(63) S) %STRING(63) FILE,TITLE %REAL RAVER,TAVER,RDEVIATION,TDEVIATION %OWNINTEGERARRAY RFREQ(0:14) %OWNINTEGERARRAY TFREQ(0:14) %OWNINTEGERARRAY TKEEP(1:1000) %OWNINTEGERARRAY RKEEP(1:1000) %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 %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*10) %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("BLKS/MIN/CONNECT") ! ! 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("BL(BLACK) AVERAGE ST.DEV.") ANNOTATE(138,127,1,0) PLOTNUMBER(RAVER,3,2) ANNOTATE(152,127,1,0) PLOTNUMBER(RDEVIATION,3,2) ! -> SKIPIT2 CHANGEPEN(4) HIST(TFREQ) ANNOTATE(120,120,1,0) PLOTSTRING("FAIL(RED) AVERAGE ST.DEV.") ANNOTATE(138,117,1,0) PLOTNUMBER(TAVER,3,2) ANNOTATE(152,117,1,0) PLOTNUMBER(TDEVIATION,3,2) SKIPIT2: CLOSEPLOTTER %END %ROUTINE GRAPH5(%STRING(63) S) %STRING(63) FILE,TITLE %INTEGER I,K ! ! %ROUTINE NIBYAX(%REAL S1,S2,S3,S4) AXIS(0,0,2,1000,20) %CYCLE I=2000,2000,20000; !NUMBER Y AXIS ANNOTATE(S3,I-500,S1,90) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(S4,5000,S2,90); !TITLE PLOTSTRING("NO OF PKTS") %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") !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! SEBLD 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.0005,0) ! ! COMMON X AXIS ! AXIS(0,0,1,10,10) %CYCLE I=10,10,100; !NUMBER ATT ANNOTATE(I-1,-500,.8,0) PLOTNUMBER(I,1,0) %REPEAT ANNOTATE(45,-2500,3.5,0); !TITLE PLOTSTRING("% CPU USED") ! ! 1ST Y AXIS ! NIBYAX(1,3,-3,-15) %CYCLE I=0,1,END; !SCATTER PLOT(1,CPU(I),BL(I),0,0) POINTSYMBOL(1,0) %REPEAT DRAW REGRESSION LINES(CPU,BL,END,0,100,0,20000) ANNOTATE(10,17500,3,0) PLOTSTRING("NSI SBS VS CPU") ! ! 2ND Y AXIS ! SCALE(5,18,0.1,0.0005,0) NIBYAX(1,3,-3,-15) %CYCLE I=0,1,END CFAIL(I) = CFAIL(I)+BL(I)+COK(I)+MES(I) PLOT(1,CPU(I),CFAIL(I),0,0) POINTSYMBOL(1,0) %REPEAT DRAW REGRESSION LINES(CPU, CFAIL, END, 0, 100, 0, 20000) ANNOTATE(10,17000,3,0) PLOTSTRING("ALL PKTS V CPU") ANNOTATE(50,21000,2.5,0) PLOTSTRING(TITLE) CLOSEPLOTTER ! LIST("GRAPH2#TMP,.GP") ! DESTROY("GRAPH2#TMP") %END !! %EXTERNALROUTINE NODEGRAPHS(%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