%EXTERNALROUTINE MAINMON(%STRING (255) S) %EXTERNALROUTINESPEC PROMPT(%STRING (15) S) %DYNAMICROUTINESPEC FEPGRAPHS(%STRING (255) S) %EXTERNALROUTINESPEC DEFINE(%STRING (255) S) %STRING (255) T, U, UU, TITLE, UUU %RECORDFORMAT FF( %C %INTEGER TIM, USERS,STA,CPU,PKTS,SBR,BYT,RJEO,RJEI) %INTEGER I, DIFF, K, L, US, CP, KB, PK, RJ, WHO, WHO1, WHO2, JUNK %OWNINTEGER USERS, STA, CPU, PKTS, SBR, BYT, RJEO, TIM, RJEI %OWNINTEGER POINTS, FEP NO = -1 %CONSTINTEGERARRAY CPU F(0:3) = %C 354, 0, 0, 236; ! NB ASSUMES 2 FEPS ON 2972 %RECORD F(FF) !! !! !! %ROUTINE RD(%INTEGERNAME N) READ(N) %IF N< 0 %THEN N = N+32768*2 %END !! !! %ROUTINE DO REPLY %INTEGER K %ROUTINE OUT(%INTEGER N) SPACES(3); WRITE(N, 5) %END %INTEGERFN CALC(%INTEGER NEW, %INTEGERNAME OLD, %INTEGER X) %INTEGER N, P, K %IF OLD>NEW %THEN OLD = OLD-32768*2 %IF OLD>NEW %THEN OLD = OLD-32768*2 N = NEW-OLD %IF N < 0 %THEN N = -N N = N//DIFF; P = N %IF X = -1 %START P =100-((N*100)//CPU F(FEP NO)) OUT(P) %FINISHELSESTART %IF X = -2 %START; ! BYTES SPACES(3) N = N+2*PK; ! ALLOW FOR ROUNDING (SEE SBR) %IF N < 128 %THEN SPACES(2) %AND OUT(N*8) %ELSE %C %START K = N//128 N = (N-(K*128))*8 WRITE(K, 3); PRINTSTRING("K+") WRITE(N, 4) %FINISH %FINISHELSESTART P = N*2*X; OUT(P) %FINISH %FINISH OLD = NEW %RESULT = P %END !! DIFF = F_TIM-TIM DIFF = 1 %IF DIFF<=0 TIM = F_TIM WRITE(TIM//2, 4); SPACES(3) STA = F_STA %IF STA = 0 %THEN PRINTSTRING(" DOWN") %C %ELSE PRINTSTRING(" UP ") OUT(F_USERS) CP = CALC(F_CPU, CPU, -1); PRINTSYMBOL('%') I = CALC(F_PKTS, PKTS, 1) PK = I K = CALC(F_RJEO, RJEO, 1) L = CALC(F_SBR, SBR, 1) OUT(I-K-L) RJ = CALC(F_RJEI, RJEI, 1) KB = CALC(F_BYT, BYT, -2) PRINT((KB*16)/15000, 5, 1); PRINTSTRING(" KB/S ") SELECT OUTPUT(3) %IF CP < -2 %OR CP > 110 %START ! PRINTSTRING(" 0 0 0 0 0 0 0 0!"); ! DELETED FOR NOW %FINISHELSESTART WRITE((KB*16)//750, 1); WRITE(CP, 1) WRITE(F_USERS, 1); WRITE(I, 1) WRITE(K, 1); WRITE(L, 1); WRITE(I-K-L, 1) WRITE(RJ, 1); ! DUMMY FOR RJEI FOR NOW %FINISH POINTS = POINTS+1 NEWLINE; SELECT OUTPUT(2) %END %UNLESS S -> T.("/").U %START T = S; U = "SS#LIST"; UU = "MON#TMP"; UUU = "G" %FINISHELSESTART %UNLESS U -> U.(":").UUU %THEN UUU="" %UNLESS U -> U.(",").UU %THEN UU = "MON#TMP" %FINISH PROMPT("72(7) OR 80(8)?") READ(FEP NO) %IF FEPNO = 7 %THEN FEP NO = 3 %ELSE FEPNO = 0 DEFINE("1,".T); DEFINE("2,".U); DEFINE("3,".UU) SELECT INPUT(1); SELECT OUTPUT(2) NEWLINES(5) PRINTSTRING("MONITORING FILE:") PRINTSTRING(T); NEWLINES(4) PRINTSTRING("Title:") TITLE = "" %CYCLE READSYMBOL(I); PRINTSYMBOL(I) %EXIT %IF I = NL TITLE = TITLE.TOSTRING(I) %REPEAT %IF FEP NO = 0 %THEN TITLE="2980 ".TITLE %ELSE %C TITLE = "2972 ".TITLE NEWLINES(3) PRINTSTRING(" MINS STATE USERS CPU PKTS:-") PRINTSTRING( %C " (RJE SBR OTHER) RJE(IN) BYT KB/S ") RD(WHO) %CYCLE F_USERS = 0; F_CPU = 0; F_PKTS = 0; F_SBR = 0; F_BYT = 0 F_RJEO = 0; F_RJEI = 0 %CYCLE %IF (0<=WHO<=2 %AND FEP NO#0) %OR (3<=WHO<=5 %AND FEP NO %C = 0 ) %START %CYCLE WHO1 = 1, 1, 9 RD(WHO2) %REPEAT -> READ NEXT %FINISH RD(F_TIM) %EXIT %IF POINTS>270*4 %OR F_TIM > 32000 F_TIM = F_TIM//6 RD(I) %IF I>32766 %THEN I = 0 F_USERS = F_USERS+I RD(F_STA) RD(I); F_CPU = F_CPU+I RD(I); F_PKTS = F_PKTS+I RD(I); F_SBR = F_SBR+I RD(I); F_BYT = F_BYT+I RD(I); F_RJEO = F_RJEO+I RD(I); F_RJEI = F_RJEI+I READ NEXT: RD(WHO) -> END %IF WHO > 32000; ! END MARKER %EXIT %IF WHO = 0; ! ONE CYCLE DONE %REPEAT DO REPLY %REPEAT END: SELECT OUTPUT(3) PRINTSTRING("-1 ") SELECT OUTPUT(0); SELECT INPUT(0); CLOSE STREAM(1) CLOSE STREAM(3) %UNLESS UUU="" %THEN FEPGRAPHS(UU.",".TITLE) %END %ENDOFFILE