49 SUBROUTINE rdmemm(IMSG,SUBSET,JDATE,IRET)
58 CHARACTER*128 bort_str,errstr
69 CALL
status(munit,lun,il,im)
70 CALL
wtstat(munit,lun,il, 1)
75 IF(imsg.EQ.0 .OR.imsg.GT.msgp(0))
THEN
76 CALL
wtstat(munit,lun,il,0)
78 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
80 errstr =
'BUFRLIB: RDMEMM - REQUESTED MEMORY MESSAGE '//
81 .
'NUMBER {FIRST (INPUT) ARGUMENT} IS 0, RETURN WITH '//
84 WRITE ( unit=errstr, fmt=
'(A,I6,A,I6,A)' )
85 .
'BUFRLIB: RDMEMM - REQ. MEMORY MESSAGE #', imsg,
86 .
' {= 1ST (INPUT) ARG.} > # OF MESSAGES IN MEMORY (',
87 . msgp(0),
'), RETURN WITH IRET = -1'
90 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
104 DO WHILE ((.NOT.known).AND.(jj.GE.1))
105 IF (ipmsgs(jj).LE.imsg)
THEN
111 IF (.NOT.known) goto 902
115 IF (jj.NE.ldxts)
THEN
120 CALL
errwrt(
'+++++++++++++++++++++++++++++++++++++++++++++')
121 WRITE ( unit=errstr, fmt=
'(A,I3,A,I3,A,I6)' )
122 .
'BUFRLIB: RDMEMM - RESETTING TO USE DX TABLE #', jj,
123 .
' INSTEAD OF DX TABLE #', ldxts,
124 .
' FOR REQUESTED MESSAGE #', imsg
126 CALL
errwrt(
'+++++++++++++++++++++++++++++++++++++++++++++')
134 DO ii = ifdxts(jj), (ifdxts(jj)+icdxts(jj)-1)
136 nwrd = ldxm - ipdxm(ii) + 1
138 nwrd = ipdxm(ii+1) - ipdxm(ii)
141 mgwa(kk) = mdx(ipdxm(ii)+kk-1)
156 IF(imsg.LT.msgp(0)) lptr = msgp(imsg+1)-iptr
157 IF(imsg.EQ.msgp(0)) lptr = mlast-iptr+1
161 mbay(i,lun) = msgs(iptr+i)
167 CALL
cktaba(lun,subset,jdate,jret)
174 900 CALL
bort(
'BUFRLIB: RDMEMM - INPUT BUFR FILE IS CLOSED, IT '//
175 .
'MUST BE OPEN FOR INPUT')
176 901 CALL
bort(
'BUFRLIB: RDMEMM - INPUT BUFR FILE IS OPEN FOR '//
177 .
'OUTPUT, IT MUST BE OPEN FOR INPUT')
178 902
WRITE(bort_str,
'("BUFRLIB: RDMEMM - UNKNOWN DX TABLE FOR '//
179 .
'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...