%EXTERNALROUTINE MYUSERS(%STRING(255)S) %externalintegerfnspec fecount(%integername a, b) %EXTERNALINTEGERFNSPEC DPROCEDURE(%INTEGER ACT, ADR) %RECORDFORMAT RF1(%INTEGER N, A) %RECORD(RF1) R1 %RECORDFORMAT PF(%STRING(6)USER, %STRING(23)TCP, %BYTEINTEGER A, INVOC, B, N, F, %INTEGER LOGS, %BYTEINTEGER site, reason, cons1, cons2, %c %INTEGER ID, PROC, G, H, Z) %RECORD(PF)%ARRAY P(1:256) %record (pf) %name pp %INTEGER J, feusers,tcpusers, i, k, f, l, max %integerarray fe(0:5) %ownintegerarray index(0:255) %string (24) t,u,v,q %string(20)%array nam(1:50) %ownintegerarray nuf(1:50) %ownintegerarray nus(1:50) %ownintegerarray itp(1:50) %ownintegerarray xxx(1:50) feusers=0;tcpusers=0 %routine sort(%integer n) %integer flag, i, j, k %record (pf) %name s, t %cycle i = n-1, -1, 1 flag = 0 %cycle j = 1, 1, i s==p(index(j)); t == p(index(j+1)) %if s_tcp > t_tcp %start k = index(j); index(j)=index(j+1); index(j+1)=k; flag=1 %finish %repeat %exit %if flag = 0 %repeat %end index(i)=i %for i=0, 1, 255 j = fecount(feusers, tcpusers) %if j # 0 %start printstring("feuser count failed ! ") %stop %finish R1_A = ADDR(P(1)) J = DPROCEDURE(1, ADDR(R1)) %IF J = 0 %START max = r1_n printstring("Users ="); write(max-3, 1) printstring(", No of fep users =") write(feusers, 1) printstring(", No of TCP users =") write(tcpusers, 1); newline k = 0 sort(max) %if s = "TCP" %start nam(i) = "" %for i = 1, 1, 50 k = 1 q = "" %cycle i = 1, 1, max pp == p(index(i)) t = pp_tcp %if length(t) = 14 %start length(t) = 12 %finish %if t -> v.("0000").u %and v = "" %then t = u %cycle j = 1, 1, k %if t = nam(j) %then %exit %repeat nus(j) = nus(j)+1 %if j = k %start nam(j) = t; nuf(j) = pp_id>>16 &255 k = k+1 %finish %repeat j= 0 %cycle i = 1, 1, k-1 printstring(nam(i)); spaces(15-length(nam(i))) printstring("Fe"); printsymbol(nuf(i)+'0') write(nus(I), 2) j = j+1 %if j = 3 %then newline %and j = 0 %else spaces(5) %repeat newline -> count users %finish %if s # "FEP" %start %cycle i = 1, 1, max pp == p(index(i)) %if pp_reason = 2 %and i > 3 %start %cycle l = 1, 1, 4 charno(pp_user, l) = charno(pp_user, l) +'a'-'A' %repeat %finish printstring(pp_user); space t = pp_tcp q = "" %if length(t) = 14 %start q = " "; charno(q, 1) = charno(t, 13); charno(q,2)=charno(t,14) length(t) = 12 %finish %if t -> v.("0000").u %and v = "" %start t = u %if q = "" %then t = t." " %else t = t."+".q %finish printstring(t) %if length(t)>6 %start k = k+1 %if k < 3 %then spaces(15) %finish %else %start spaces(6-length(pp_tcp)) %if '0'<= pp_cons1 <= '9' %start printsymbol('+'); printsymbol(pp_cons1); printsymbol(pp_cons2) %finish %else spaces(3) %finish printstring(" (") printsymbol(pp_id>>16&255+'0'); printsymbol(')') k = k+1; %if k >= 3 %then newline %and k = 0 %else spaces(2) %repeat newlines(2) %finish count users: %cycle i = 0, 1, 5; fe(i) = 0; %repeat %cycle i = 1, 1, r1_n pp == p(i) f = (pp_id>>16)&255 %unless f < 0 %or f > 5 %or( pp_tcp = "null" %c %and f = 0) %start fe(f) = fe(f)+1 %if length(p(i)_tcp)>6 %then xxx(f) = xxx(f)+1 %else itp(f)=itp(f)+1 %finish %repeat %cycle i = 0, 1, 5 %if fe(i) # 0 %start printstring("Fep"); write(i, 1); write(fe(i), 3) printstring(" xxx users ="); write(xxx(i), 2) printstring(" itp users ="); write(itp(i), 2) newline %finish %repeat %FINISH %ELSE %START PRINTSTRING("FLAG") WRITE(J, 1) %FINISH %END %end %of %file