SUBROUTINE TSKRPT C C REPORT ON TASK USAGE C INCLUDE 'DAGCOM.FTN' C INTEGER*4 TSK (MXRTSK) !MAX TASKS TO REPORT INTEGER ITSK (2,MXRTSK) !SAME IN INTEGERS EQUIVALENCE (TSK,ITSK) INTEGER COUNT (MXRTSK) !NUMBER OCCURANCES EACH TASK INTEGER*4 TASK !HOLDING BIN INTEGER ITASK (2) !SAME BYTE STR (6) !TO HOLD ASCII TASKNAME EQUIVALENCE (ITASK,TASK) INTEGER DOTS DATA DOTS /3R.../ C C FOR EACH SPYRC2, COUNT EACH TASK C WE CONVERT TASK NAMES ...TSK TO TSK C WE CONVERT TSKTN TO TSK (AS PIPT2 TO PIP) C NTSK = 0 !NUMBER OF DIFFERENT TASKS 10 IF (GTREC() .EQ. EOF) GOTO 40 IF (SPYTKS .LE. 0) GOTO 10 !IF NO TASKS ACTIVE DO 1000 I=1,SPYTKS IPOINT = 1 !POINT TO START OF TASK TABLE ITASK(1) = SPYRC2(3*I-2) !FIRST RAD50 WORD OF TASKNAME ITASK(2) = SPYRC2(3*I-1) !SECOND IF (ITASK(1) .NE. DOTS) GOTO 11 !IF IT WAS ...TSK ITASK(1) = ITASK(2) ITASK(2) = 0 11 CALL R50ASC (3,ITASK(2),STR) !GET ASCII NAME IF (STR(1) .NE. 1HT) GOTO 12 !IF IT COULDNT BE TSKTN IF (STR(2) .LT. "60 .OR. STR(2) .GT. "71) GOTO 12 ITASK(2) = 0 12 IF (IPOINT .GT. MXRTSK) GOTO 1000 IF (IPOINT .GT. NTSK) GOTO 13 IF (TSK(IPOINT) .EQ. TASK) GOTO 14 IPOINT = IPOINT+1 !SEARCH FOR TASK IN TSK TABLE GOTO 12 13 TSK(IPOINT) = TASK COUNT(IPOINT) = 0 NTSK = IPOINT 14 COUNT(IPOINT) = COUNT(IPOINT) + 1 1000 CONTINUE GOTO 10 C C SORT TASKS BY AMOUNT OF USE C 40 CALL SORTSK (NTSK,TSK,COUNT) SCALE = STIME/60. C C C WRITE OUT HEADERS C WRITE (RPTLUN,100) 100 FORMAT (X/20X,'REPORT OF SYSTEM USE BY TASKNAME'/ 1 8X,4(' TASK TSK-HRS',3X)) C C WRITE OUT TIME FOR EACH TASK C NX = 80 DO 2000 I=1,NTSK NX = NX+17 IF (NX .LT. 80-13) GOTO 25 NX = 7 WRITE (RPTLUN,203) 203 FORMAT (1H ) 25 CONTINUE CALL R50ASC (6,TSK(I),STR) !GET ASCII NAME OF TASK WRITE (RPTLUN,204) STR,COUNT(I)*SCALE 204 FORMAT (1H+,X,6A1,F7.1) 2000 CONTINUE C REWIND (SPYLUN) END C C C SUBROUTINE SORTSK (N,TASKS,ICNTS) C INTEGER N,TASKS(N),ICNTS(N) C C SORTS TASKS IN ORDER OF ICNTS C IF (N .LT. 2) RETURN DO 100 I=1,N-1 DO 200 J=N,I+1,-1 IF (ICNTS(J-1) .GE. ICNTS(J)) GOTO 200 CALL SWITCH (TASKS,J-1) CALL ISWTCH (ICNTS,J-1) 200 CONTINUE 100 CONTINUE END C SUBROUTINE SWITCH(ARRAY,J) REAL ARRAY(1) TEMP = ARRAY(J) ARRAY(J) = ARRAY(J+1) ARRAY(J+1) = TEMP END