12 CHARACTER*8 sub(maxsub)
13 dimension ninv(3,maxsub)
25 open(lunbf,file=file,form=
'unformatted')
30 CALL
openbf(lunbf,
'IN',lunbf)
31 DO WHILE(
ireadmg(lunbf,subset,idate).EQ.0)
34 IF(subset.EQ.sub(i)) isub = i
37 IF(nsub+1.GT.maxsub) CALL
bort(
'NSUB TOO BIG')
42 ninv(1,isub) = ninv(1,isub)+1
43 ninv(2,isub) = ninv(2,isub)+
nmsub(lunbf)
44 ninv(3,isub) = ninv(3,isub)+nmbyt(lunbf)
60 print
'(a4,6x,3(a10,4x))',
'type',
'messages',
'subsets',
'bytes'
65 print
'(A8,2X,3(I10,4X),f8.2)',sub(j),(ninv(i,j),i=1,3),xsub/xmsg
67 ninv(1,1) = ninv(1,1)+ninv(1,j)
68 ninv(2,1) = ninv(2,1)+ninv(2,j)
69 ninv(3,1) = ninv(3,1)+ninv(3,j)
73 print
'(A8,2X,3(I10,4X))',
'TOTAL ',(ninv(i,1),i=1,3)
function ireadmg(LUNIT, SUBSET, IDATE)
This function calls BUFRLIB subroutine readmg() and passes back its return code as the function value...
subroutine openbf(LUNIT, IO, LUNDX)
This subroutine connects a new file to the BUFRLIB software for input or output operations.
function nmsub(LUNIT)
This function returns the total number of data subsets available within the BUFR message that was mos...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
function iupvs01(LUNIT, S01MNEM)
This function returns a specified value from within Section 0 or Section 1 of a BUFR message...