PROGRAM BINV PARAMETER (MAXSUB=100) CHARACTER*80 FILE CHARACTER*8 SUBSET CHARACTER*8 SUB(MAXSUB) DIMENSION NINV(3,MAXSUB) DATA BMISS /10E10/ DATA LUNBF /20/ C----------------------------------------------------------------------- C----------------------------------------------------------------------- NINV = 0 NSUB = 0 C COMPUTE AN MESSAGE INVENTORY BY SUBSETS C --------------------------------------- CALL OPENBF(LUNBF,'IN',LUNBF) DO WHILE(IREADMG(LUNBF,SUBSET,IDATE).EQ.0) ISUB = 0 DO I=1,NSUB IF(SUBSET.EQ.SUB(I)) ISUB = I ENDDO IF(ISUB.EQ.0) THEN IF(NSUB+1.GT.MAXSUB) CALL BORT('NSUB TOO BIG') SUB(NSUB+1) = SUBSET NSUB = NSUB+1 ISUB = NSUB ENDIF NINV(1,ISUB) = NINV(1,ISUB)+1 NINV(2,ISUB) = NINV(2,ISUB)+NMSUB(LUNBF) NINV(3,ISUB) = NINV(3,ISUB)+NMBYT(LUNBF) ENDDO C PRINT THE INVEBTORY C ------------------- PRINT* PRINT'(a4,6x,3(a10,4x))','type','messages','subsets','bytes' PRINT* DO J=1,NSUB PRINT'(A8,2X,3(I10,4X))',SUB(J),(NINV(I,J),I=1,3) IF(J.GT.1) THEN NINV(1,1) = NINV(1,1)+NINV(1,J) NINV(2,1) = NINV(2,1)+NINV(2,J) NINV(3,1) = NINV(3,1)+NINV(3,J) ENDIF ENDDO PRINT'(A8,2X,3(I10,4X))','TOTAL ',(NINV(I,1),I=1,3) PRINT* STOP END