62 SUBROUTINE rdmemm(IMSG,SUBSET,JDATE,IRET)
71 CHARACTER*128 bort_str,errstr
82 CALL
status(munit,lun,il,im)
83 CALL
wtstat(munit,lun,il, 1)
88 IF(imsg.EQ.0 .OR.imsg.GT.msgp(0))
THEN
89 CALL
wtstat(munit,lun,il,0)
91 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
93 errstr =
'BUFRLIB: RDMEMM - REQUESTED MEMORY MESSAGE '//
94 .
'NUMBER {FIRST (INPUT) ARGUMENT} IS 0, RETURN WITH '//
97 WRITE ( unit=errstr, fmt=
'(A,I6,A,I6,A)' )
98 .
'BUFRLIB: RDMEMM - REQ. MEMORY MESSAGE #', imsg,
99 .
' {= 1ST (INPUT) ARG.} > # OF MESSAGES IN MEMORY (',
100 . msgp(0),
'), RETURN WITH IRET = -1'
103 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
117 DO WHILE ((.NOT.known).AND.(jj.GE.1))
118 IF (ipmsgs(jj).LE.imsg)
THEN
124 IF (.NOT.known) goto 902
128 IF (jj.NE.ldxts)
THEN
133 CALL
errwrt(
'+++++++++++++++++++++++++++++++++++++++++++++')
134 WRITE ( unit=errstr, fmt=
'(A,I3,A,I3,A,I6)' )
135 .
'BUFRLIB: RDMEMM - RESETTING TO USE DX TABLE #', jj,
136 .
' INSTEAD OF DX TABLE #', ldxts,
137 .
' FOR REQUESTED MESSAGE #', imsg
139 CALL
errwrt(
'+++++++++++++++++++++++++++++++++++++++++++++')
147 DO ii = ifdxts(jj), (ifdxts(jj)+icdxts(jj)-1)
149 nwrd = ldxm - ipdxm(ii) + 1
151 nwrd = ipdxm(ii+1) - ipdxm(ii)
154 mgwa(kk) = mdx(ipdxm(ii)+kk-1)
169 IF(imsg.LT.msgp(0)) lptr = msgp(imsg+1)-iptr
170 IF(imsg.EQ.msgp(0)) lptr = mlast-iptr+1
174 mbay(i,lun) = msgs(iptr+i)
180 CALL
cktaba(lun,subset,jdate,jret)
187 900 CALL
bort(
'BUFRLIB: RDMEMM - INPUT BUFR FILE IS CLOSED, IT '//
188 .
'MUST BE OPEN FOR INPUT')
189 901 CALL
bort(
'BUFRLIB: RDMEMM - INPUT BUFR FILE IS OPEN FOR '//
190 .
'OUTPUT, IT MUST BE OPEN FOR INPUT')
191 902
WRITE(bort_str,
'("BUFRLIB: RDMEMM - UNKNOWN DX TABLE FOR '//
192 .
'REQUESTED MESSAGE #",I5)') imsg
subroutine cktaba(LUN, SUBSET, JDATE, IRET)
THIS SUBROUTINE PARSES THE TABLE A MNEMONIC AND THE DATE OUT OF SECTION 1 OF A BUFR MESSAGE PREVIOUSL...
subroutine dxinit(LUN, IOI)
THIS SUBROUTINE INITIALIZES THE INTERNAL ARRAYS (IN MODULE TABABD) HOLDING THE DICTIONARY TABLE...
This module contains array and variable declarations used to store the contents of one or more BUFR f...
subroutine rdmemm(IMSG, SUBSET, JDATE, IRET)
This subroutine reads a specified BUFR message from internal arrays in memory, so that it is now in s...
subroutine wtstat(LUNIT, LUN, IL, IM)
This subroutine can be used to connect or disconnect a specified Fortran logical unit number to/from ...
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...
subroutine makestab
THIS SUBROUTINE CONSTRUCTS AN INTERNAL JUMP/LINK TABLE WITHIN MODULE TABLES, USING THE INFORMATION WI...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
subroutine stbfdx(LUN, MESG)
THIS SUBROUTINE COPIES A BUFR TABLE (DICTIONARY) MESSAGE FROM THE INPUT ARRAY MESG INTO THE INTERNAL ...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
This module contains array and variable declarations used to store BUFR messages internally for multi...