IMPLICIT INTEGER*2 (A-Z) INTEGER*4 TEMP4,NEWDAT(5),OLDDAT(5) INTEGER*2 TEMP2(2),STUFF(10) INTEGER*2 STRING(9) REAL DELTIM,CNULL,CUSER,CSWAP,CBATCH,CREAL,CRATIO,CDENOM REAL TNULL,TUSER,TSWAP,TBATCH,TREAL,TRATIO,TDENOM REAL TEMPR EQUIVALENCE(TEMP2,TEMP4) C C OPEN DATA FILE OPEN(UNIT=1,NAME='STAT.DAT',TYPE='OLD',READONLY) C C SET OLDDAT TO A LARGE VALUE TO FORCE INITIAL HEADING OLDDAT(1) = 9999999 C C READ NEXT RECORD C 5 READ(1,20,END=9999)STRING,USERS,STUFF 20 FORMAT(9A2,X,11I7) C C CONVERT INT*2 TO DOUBLE WORD INT*4 DO 100 I=1,5 TEMP2(2)=STUFF(I*2-1) TEMP2(1)=STUFF(I*2) NEWDAT(I)=TEMP4 100 CONTINUE C C CHECK FOR TRANSITION IF (NEWDAT(1) .GE. OLDDAT(1)) GOTO 1000 ! SKIP HEADING C C OUTPUT HEADING WRITE(2,110)STRING 110 FORMAT('1SYSTEM RE-BOOT AT ',9A2,//) WRITE(2,111) 111 FORMAT(20X,'TOTAL',X,'........INCREMENTAL UTILIZATION........', 1 3X,'........CUMULATIVE UTILIZATION.........',/, 2 4X,'DATE',5X,'TIME',3X,'USERS',X, 3 2('USER BATCH SWAP NULL REAL EFF ')) GOTO 8000 ! COPY NEWDAT TO OLDDAT 1000 CONTINUE DELTIM = NEWDAT(1) - OLDDAT(1) C CNULL = 100. * ((NEWDAT(2)-OLDDAT(2))/DELTIM) CUSER = 100. * ((NEWDAT(3)-OLDDAT(3))/DELTIM) CSWAP = 100. * ((NEWDAT(4)-OLDDAT(4))/DELTIM) CBATCH = 100. * ((NEWDAT(5)-OLDDAT(5))/DELTIM) CREAL = 100. - CNULL - CUSER - CSWAP - CBATCH CRATIO = 0. CDENOM = 100. - CNULL - CSWAP C C CALCULATE CRATIO IF CDENOM .GE. .0001 IF(CDENOM.GE. .0001) CRATIO = 100.0*((CUSER+CBATCH)/CDENOM) C TNULL = 100. * NEWDAT(2)/NEWDAT(1) TUSER = 100. * NEWDAT(3)/NEWDAT(1) TSWAP = 100. * NEWDAT(4)/NEWDAT(1) TBATCH = 100. * NEWDAT(5)/NEWDAT(1) TREAL = 100. - TNULL - TUSER - TSWAP - TBATCH TRATIO = 0. TDENOM = 100. - TNULL - TSWAP C CALCULATE TRATIO IF TDENOM .GE. .0001 IF(TDENOM.GE. .0001) TRATIO = 100.0*((TUSER+TBATCH)/TDENOM) C C OUTPUT STATS WRITE(2,1010)STRING,USERS,CUSER,CBATCH,CSWAP,CNULL,CREAL, 1 CRATIO,TUSER,TBATCH,TSWAP,TNULL,TREAL,TRATIO 1010 FORMAT(X,9A2,2X,I2,12(2X,F5.1)) C C MOVE NEWDAT INTO OLDDAT 8000 CONTINUE DO 8010 I=1,5 OLDDAT(I) = NEWDAT(I) 8010 CONTINUE C C READ NEXT RECORD GOTO 5 C C END OF FILE 9999 CLOSE (UNIT=1) CALL EXIT END