%EXTERNALROUTINE RINGANS(%STRING (255) S) %EXTERNALROUTINESPEC DEFINE(%STRING (255) S) %INTEGER I,J,K,PEAK,PN,NZ,N,X,MAX,SUM,TIME,PEAKI,PNI %OWNINTEGER TYPE = 0 %REAL Q %STRING (255) T %INTEGERARRAY NUM(0:13, 1:1000) %OWNINTEGERARRAY A(0:13) = 0(14) !! %ON %EVENT 9 %START -> FINISH %FINISH !! %ROUTINE SKIP TO END OF LINE %INTEGER I %CYCLE I = 0 READSYMBOL(I) %RETURN %IF I=NL %REPEAT %END !! %INTEGERFN MY READ(%INTEGERNAME N) %INTEGER I, J, K, SUM, SIGN, SIG SIGN = 0; SUM = 0; SIG = 0 %CYCLE I = NEXTSYMBOL %IF I = ' ' %OR I = NL %START %EXIT %IF SIG#0 %RESULT = 1 %IF I = NL SKIPSYMBOL; %CONTINUE %FINISH %IF I = '-' %START %EXIT %IF SIG # 0 SIGN = 1 SKIPSYMBOL; %CONTINUE %FINISH %UNLESS '0' <= I <= '9' %START %RESULT = 1 %FINISH SUM = SUM*10+(I-'0') SKIPSYMBOL SIG = 1 %REPEAT %IF SIGN # 0 %THEN SUM = 65536-SUM N = SUM %RESULT = 0 %END !! %ROUTINE PRINT RESULTS %INTEGER I,J,K,X,TIME2 %RETURN %IF A(9)=0 %OR A(10)=0 %OR A(11) = 0 PRINTSTRING(" Total o/p % of pkts Using 'n' retries Av no of ") PRINTSTRING %C (" Total i/p Av mini Av mini Av ints No of mini pkts 0 1 2 3 4 5 6&> tries ") PRINTSTRING %C ("mini pkts per I/P blk per o/p blk per i/p bl timeouts ") A(0) = A(0)+A(9) WRITE(A(0), 8) K = 0 %CYCLE I = 1, 1, 7; K=K+A(I); %REPEAT %CYCLE I = 1, 1, 7 PRINT(A(I)*100/K, 2, 1); PRINTSYMBOL('%') %REPEAT PRINT(A(0)/A(9), 6, 2); SPACES(3) WRITE(A(8), 10) PRINT(A(8)/A(11), 9, 0) PRINT(A(9)/A(12), 12, 0) PRINT(A(10)/A(11), 10, 2) WRITE(A(13), 10) NEWLINE PRINTSTRING(" All data ") PRINTSTRING("Non zero data") PRINTSTRING(" No of i/p No of o/p No of i/p No of o/p No of i/p ") PRINTSTRING("No of o/p No of i/p No of o/p Ring Capacity mini/sec mini/sec blks/sec blks/sec mini/sec ") PRINTSTRING("mini/sec blks/sec blks/sec used (%) ") WRITE(A(8)//TIME, 4) WRITE(A(9)//TIME, 12) PRINT(A(11)/TIME, 10, 1) PRINT(A(12)/TIME, 10, 1) TIME2 = TIME-NZ*60 %IF TYPE # 0 %THEN TIME2 = TIME-NZ*12 SPACES(4) WRITE(A(8)//TIME2, 10) WRITE(A(9)//TIME2, 12) PRINT(A(11)/TIME2, 8, 1) PRINT(A(12)/TIME2, 7, 1) Q = 1500*TIME2 PRINT((A(0)+A(8))/(Q), 6, 2); PRINTSTRING("% ") %END !! %UNLESS S->S.("/").T %START T = ".OUT" %FINISH DEFINE("1,".S) DEFINE("2,".T) SELECT INPUT(1) SELECT OUTPUT(2) NEWLINE; NEWPAGE PRINTSTRING("Title:") %IF NEXTSYMBOL = '*' %THEN TYPE = 1 %IF NEXTSYMBOL = '+' %THEN TYPE = 2 %CYCLE READSYMBOL(I); PRINTSYMBOL(I); %EXIT %IF I=NL %REPEAT NEWLINES(3) PEAK = 0; PN = 0; PEAKI = 0; PNI = 0 NZ = 0; N= 1 %CYCLE READSYMBOL(X) %IF X # 'R' %START SKIP TO END OF LINE %CONTINUE %FINISH !! SKIPSYMBOL; SKIPSYMBOL; SKIPSYMBOL; SKIPSYMBOL %CYCLE I = 0, 1, 13 X = MY READ(NUM(I, N)) %IF X # 0 %START SKIP TO END OF LINE; -> OUT %FINISH %REPEAT %CYCLE I = 0, 1, 12 A(I) = A(I)+NUM(I, N) %REPEAT %IF NUM(9, N) = 0 %THEN NZ=NZ+1 %IF NUM(9, N)>PN %THEN PN=NUM(9, N) %AND PEAK=N %IF NUM(8,N)>PNI %THEN PNI=NUM(8,N) %AND PEAKI=N SKIP TO END OF LINE N = N+1 OUT: %REPEAT !! FINISH: MAX = N-1 TIME = MAX*60 %IF TYPE # 0 %THEN TIME = MAX*12 A(13) = NUM(13, MAX) PRINTSTRING(" Total time covered was") %IF TYPE = 0 %THEN WRITE(MAX, 2) %ELSE PRINT(MAX/5, 2, 1) PRINTSTRING(" Mins ") NEWLINES(3) PRINT RESULTS PRINTSTRING(" Results for the peak (output) minute were:") NEWLINES(3) %CYCLE I = 0, 1, 13 A(I) = NUM(I, PEAK) %REPEAT TIME = 60; NZ = 0 %IF TYPE # 0 %THEN TIME = 12 PRINT RESULTS NEWLINES(3) PRINTSTRING("Results for the peak (input) minute were:") NEWLINES(3) %CYCLE I = 0, 1, 13 A(I) = NUM(I, PEAKI) %REPEAT PRINT RESULTS %IF TYPE = 2 %START NEWLINES(5) %CYCLE J = 1, 1, MAX %CYCLE I = 0, 1, 13 A(I) = NUM(I, J) %REPEAT NEWLINES(5) PRINT RESULTS %REPEAT %FINISH %END %EXTERNALROUTINE RINGAN2S(%STRING (255) S) %EXTERNALROUTINESPEC DEFINE(%STRING (255) S) %INTEGER I,J,K,PEAK,PN,NZ,N,X,MAX,SUM,TIME,PEAKI,PNI, TIME2 %OWNINTEGER TYPE = 0 %REAL Q %STRING (255) T %INTEGERARRAY NUM(0:13, 1:1000) %OWNINTEGERARRAY A(0:13) = 0(14) !! %ON %EVENT 9 %START -> FINISH %FINISH !! %ROUTINE SKIP TO END OF LINE %INTEGER I %CYCLE I = 0 READSYMBOL(I) %RETURN %IF I=NL %REPEAT %END !! %INTEGERFN MY READ(%INTEGERNAME N) %INTEGER I, J, K, SUM, SIGN, SIG SIGN = 0; SUM = 0; SIG = 0 %CYCLE I = NEXTSYMBOL %IF I = ' ' %OR I = NL %START %EXIT %IF SIG#0 %RESULT = 1 %IF I = NL SKIPSYMBOL; %CONTINUE %FINISH %IF I = '-' %START %EXIT %IF SIG # 0 SIGN = 1 SKIPSYMBOL; %CONTINUE %FINISH %UNLESS '0' <= I <= '9' %START %RESULT = 1 %FINISH SUM = SUM*10+(I-'0') SKIPSYMBOL SIG = 1 %REPEAT %IF SIGN # 0 %THEN SUM = 65536-SUM N = SUM %RESULT = 0 %END %ROUTINE PRINT RESULTS %OWNINTEGER FIRST = 0 %INTEGER I,J,K,X %RETURN %IF A(9)=0 %OR A(10)=0 %OR A(11) = 0 %IF FIRST = 0 %START FIRST = 1 PRINTSTRING(" No of o/p % of pkts Using 'n' retries Av no of ") PRINTSTRING %C (" No of i/p Av mini Av mini Av ints No of mini/sec 0 1 2 3 4 5 6&> tries ") PRINTSTRING %C ("mini/sec per I/P blk per o/p blk per i/p bl timeouts ") %FINISH A(0) = A(0)+A(9) WRITE(A(9)//TIME2, 8) K = 0 %CYCLE I = 1, 1, 7; K=K+A(I); %REPEAT %CYCLE I = 1, 1, 7 PRINT(A(I)*100/K, 2, 1); PRINTSYMBOL('%') %REPEAT PRINT(A(0)/A(9), 6, 2); SPACES(3) WRITE(A(8)//TIME2, 10) PRINT(A(8)/A(11), 9, 0) PRINT(A(9)/A(12), 12, 0) PRINT(A(10)/A(11), 10, 2) WRITE(A(13), 10) NEWLINE %END !! %UNLESS S->S.("/").T %START T = ".OUT" %FINISH DEFINE("1,".S) DEFINE("2,".T) SELECT INPUT(1) SELECT OUTPUT(2) NEWLINE; NEWPAGE PRINTSTRING("Title:") %IF NEXTSYMBOL = '*' %THEN TYPE = 1 %IF NEXTSYMBOL = '+' %THEN TYPE = 2 %CYCLE READSYMBOL(I); PRINTSYMBOL(I); %EXIT %IF I=NL %REPEAT NEWLINES(3) PEAK = 0; PN = 0; PEAKI = 0; PNI = 0 NZ = 0; N= 1 %CYCLE READSYMBOL(X) %IF X # 'R' %START SKIP TO END OF LINE %CONTINUE %FINISH !! SKIPSYMBOL; SKIPSYMBOL; SKIPSYMBOL; SKIPSYMBOL %CYCLE I = 0, 1, 13 X = MY READ(NUM(I, N)) %IF X # 0 %START SKIP TO END OF LINE; -> OUT %FINISH %REPEAT %CYCLE I = 0, 1, 12 A(I) = A(I)+NUM(I, N) %REPEAT %IF NUM(9, N) = 0 %THEN NZ=NZ+1 %IF NUM(9, N)>PN %THEN PN=NUM(9, N) %AND PEAK=N %IF NUM(8,N)>PNI %THEN PNI=NUM(8,N) %AND PEAKI=N SKIP TO END OF LINE N = N+1 OUT: %REPEAT !! FINISH: MAX = N-1 TIME = MAX*60; TIME2 = 60 %IF TYPE # 0 %THEN TIME = MAX*12 %AND TIME2 = 12 A(13) = NUM(13, MAX) PRINTSTRING(" Total time covered was") %IF TYPE = 0 %THEN WRITE(MAX, 2) %ELSE PRINT(MAX/5, 2, 1) PRINTSTRING(" Mins ") NEWLINES(3) %CYCLE I = 1, 1, MAX %IF NUM(0, I) # 0 %START %CYCLE J = 0, 1, 13; A(J) = NUM(J, I); %REPEAT PRINT RESULTS %FINISH %REPEAT %END %ENDOFFILE