%EXTERNALROUTINE NODEMON(%STRING (255) S) %EXTERNALROUTINESPEC NODEGRAPHS(%STRING (255) S) %EXTERNALROUTINESPEC DEFINE(%STRING (255) S) %STRING (255) T, U, UU, TITLE, UUU %RECORDFORMAT FF( %C %INTEGER TIM, CPU, ATT,CON,NIF,ERR, %INTEGERARRAY A(4:21)) %OWNINTEGERARRAY AA(0:21)=0(22) %OWNINTEGERARRAY R(0:21) = 0(22) %INTEGER I, DIFF, K, L, US, CP, KB, PK, RJ %OWNINTEGER USERS, STA, CPU, PKTS, SBR, BYT, RJEO, TIM, RJEI %OWNINTEGER POINTS,ATT,CON,MES,COK,CFAIL,BL,ST,NIF,ERR %RECORD F(FF) !! %OWNINTEGER CPU IDLE = 141; ! 160=FAST STORE, 141=SLOW STORE !! !! %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 N = NEW-OLD %IF N < 0 %THEN N = -N N = N//DIFF; P = N %IF X = -1 %START P =100-((N*100)//CPU IDLE) 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) CP = CALC(F_CPU, CPU, -1); PRINTSYMBOL('%') OUT(F_ATT); OUT(F_CON) %CYCLE I = 19, 1, 21 F_A(I) = F_A(I)*1024+F_A(I-6) %REPEAT %CYCLE I = 4, 1, 21 %CONTINUE %IF 13<=I<=15 R(I) = CALC(F_A(I), AA(I), 1) %REPEAT OUT(F_NIF) NEWLINE SELECT OUTPUT(3) %IF CP < -2 %OR CP > 110 %START %CYCLE I = 1, 1, 22; PRINTSTRING(" 0"); %REPEAT NEWLINE %FINISHELSESTART WRITE(CP, 1) WRITE(F_ATT, 1); WRITE(F_CON, 1) %CYCLE I=4, 1, 21; WRITE(R(I), 1); %REPEAT WRITE(F_ERR+F_NIF, 1) %FINISH POINTS = POINTS+1 NEWLINE; SELECT OUTPUT(2) %END %UNLESS S -> T.("/").U %START PRINTSTRING("PARAMETERS A/B! ") %RETURN %FINISH %UNLESS U -> U.(":").UUU %THEN UUU="" %UNLESS U -> U.(",").UU %THEN UU = "MON#TMP" 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 NEWLINES(3) PRINTSTRING(" MINS CPU ATT CON MES CON (OK FAIL)") PRINTSTRING( %C " BLKS STATUS NIF ") %CYCLE RD(F_TIM) %EXIT %IF F_TIM > 32000 RD(F_CPU) RD(F_ATT); RD(F_CON) RD(F_NIF); RD(F_ERR) %CYCLE I = 4, 1, 21; RD(F_A(I)); %REPEAT DO REPLY %REPEAT SELECT OUTPUT(3) PRINTSTRING("-1 ") SELECT OUTPUT(0); SELECT INPUT(0); CLOSE STREAM(1) CLOSE STREAM(3) %UNLESS UUU="" %THEN NODEGRAPHS(UU.",".TITLE) %END %ENDOFFILE