SUBROUTINE USRRPT C C REPORT ON TASK-HOURS USED BY EACH UIC C INCLUDE 'DAGCOM.FTN' C INTEGER UIC (MXRUIC) !LOW BYTE USER, HI BYTE GRP BYTE BUIC (2,MXRUIC) !SAME AS ABOVE EQUIVALENCE (UIC,BUIC) INTEGER COUNT (MXRUIC) !NUMBER OCCURANCES EACH UIC BYTE GRP C C FOR EACH SPYRC2, COUNT EACH UIC C NUIC = 0 !NUMBER OF DIFFERENT UIC'S 10 IF (GTREC() .EQ. EOF) GOTO 40 IF (SPYTKS .LE. 0) GOTO 10 !IF NO TASKS ACTIVE DO 1000 I=1,SPYTKS !FOR EACH ACTIVE TASK IUIC = SPYRC2(3*I) !EXTRACT THE UIC IPOINT = 1 !POINT TO START OF UIC TABLE 11 IF (IPOINT .GT. MXRUIC) GOTO 1000 IF (IPOINT .GT. NUIC) GOTO 12 IF (UIC(IPOINT) .EQ. IUIC) GOTO 13 IPOINT = IPOINT+1 !SEARCH FOR IUIC IN TABLE GOTO 11 12 UIC(IPOINT) = IUIC !PUT NEW ENTRY IN TABLE COUNT(IPOINT)=0 NUIC = IPOINT 13 COUNT(IPOINT) = COUNT(IPOINT)+1 1000 CONTINUE GOTO 10 C C SORT UIC'S BY GROUP, USER AND GET SCALE FACTOR C 40 CALL SORTUI (NUIC,UIC,COUNT) SCALE = STIME/60. !CONVERT OCCURANCE TO HOURS C C WRITE HEADER FOR OUTPUT C WRITE (RPTLUN,100) 100 FORMAT (X/20X,'REPORT OF SYSTEM USE BY UIC'/ 1 8X,4(' GROUP TSK-HRS',3X)) C C WRITE OUT GROUP TOTALS AND INDIVIDUAL TIMES C IPT1 = 1 !-> FIRST UIC NX = 80 20 IGTOT = 0 !GROUP TOTAL GRP = BUIC(2,IPT1) !GET GROUP NUMBER C DO 2000 I=IPT1,NUIC !FIND ALL MEMBERS OF THIS GROUP IF (BUIC(2,I) .NE. GRP) GOTO 24 IGTOT = IGTOT+COUNT(I) 2000 CONTINUE C 24 IPT2 = I-1 !LAST MEMBER OF THIS GROUP IPT1 = IPT2+1 NX = NX+17 !NUMBER OF SPACES TO GO IF (NX .LT. 80-13) GOTO 25 NX = 7 WRITE (RPTLUN,203) !GOTO NEXT LINE 25 WRITE (RPTLUN,201) GRP,IGTOT*SCALE IF (IPT1 .LE. NUIC) GOTO 20 !GET NEXT GROUP 201 FORMAT (1H+,X,1H[,O3,',*]',F6.1) 203 FORMAT (1H ) C REWIND (SPYLUN) END SUBROUTINE SORTUI (N,UIC,TIMES) C C SORT IN ASCENDING ORDER OF GRP,USR C INTEGER UIC (N) INTEGER TIMES(N) LOGICAL LESSER C IF (N .LT. 2) RETURN DO 100 I=1,N-1 DO 200 J=N,I+1,-1 IF (LESSER(UIC(J-1),UIC(J))) GOTO 200 CALL ISWTCH (UIC,J-1) CALL ISWTCH (TIMES,J-1) 200 CONTINUE 100 CONTINUE END C FUNCTION LESSER (I1,I2) C LOGICAL*1 I1(2),I2(2) INTEGER J1(2),J2(2) LOGICAL*1 L1(4),L2(4) EQUIVALENCE (J1,L1),(J2,L2) DATA J1,J2 /0,0,0,0/ C C RETURNS .TRUE. IF I1