56 RECURSIVE SUBROUTINE ufbevn(LUNIT,USR,I1,I2,I3,IRET,STR)
64 COMMON /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
65 COMMON /ufbn3c/ maxevn
82 CALL x84(lunit,my_lunit,1)
86 CALL ufbevn(my_lunit,usr,my_i1,my_i2,my_i3,iret,str)
99 CALL status(lunit,lun,il,im)
103 IF(
inode(lun).NE.
inv(1,lun))
GOTO 903
107 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
108 errstr = .LE.
'BUFRLIB: UFBEVN - 3rd ARG. (INPUT) IS 0, ' //
109 .
'SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
112 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
118 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
119 errstr = .LE.
'BUFRLIB: UFBEVN - 4th ARG. (INPUT) IS 0, ' //
120 .
'SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
123 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
129 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
130 errstr = .LE.
'BUFRLIB: UFBEVN - 5th ARG. (INPUT) IS 0, ' //
131 .
'SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
134 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
162 1
CALL conwin(lun,inc1,inc2)
166 ELSEIF(inc1.EQ.0)
THEN
170 IF(nods(i).GT.0)
THEN
172 CALL getwin(nods(i),lun,ins1,ins2)
173 IF(ins1.EQ.0)
GOTO 100
187 IF(nods(i).GT.0)
THEN
188 nnvn =
nvnwin(nods(i),lun,ins1,ins2,invn,i3)
189 maxevn = max(nnvn,maxevn)
191 usr(i,iret,n) =
val(invn(n),lun)
200 CALL nxtwin(lun,ins1,ins2)
201 IF(ins1.GT.0 .AND. ins1.LT.inc2)
GOTO 2
206 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
207 errstr =
'BUFRLIB: UFBEVN - NO SPECIFIED VALUES READ IN, ' //
208 .
'SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
211 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
220 900
CALL bort(
'BUFRLIB: UFBEVN - INPUT BUFR FILE IS CLOSED, IT MUST'//
221 .
' BE OPEN FOR INPUT')
222 901
CALL bort(
'BUFRLIB: UFBEVN - INPUT BUFR FILE IS OPEN FOR OUTPUT'//
223 .
', IT MUST BE OPEN FOR INPUT')
224 902
CALL bort(
'BUFRLIB: UFBEVN - A MESSAGE MUST BE OPEN IN INPUT '//
225 .
'BUFR FILE, NONE ARE')
226 903
CALL bort(
'BUFRLIB: UFBEVN - LOCATION OF INTERNAL TABLE FOR '//
227 .
'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN '//
228 .
'INTERNAL SUBSET ARRAY')
subroutine bort(STR)
Log one error message and abort application program.
subroutine conwin(LUN, INC1, INC2)
This subroutine searches consecutive subset buffer segments for an element identified in the user str...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
subroutine getwin(NODE, LUN, IWIN, JWIN)
Given a node index within the internal jump/link table, this subroutine looks within the current subs...
This module contains declarations for arrays used to store information about the current BUFR message...
integer, dimension(:), allocatable inode
Table A mnemonic for type of BUFR message.
This module contains declarations for arrays used to store data values and associated metadata for th...
real *8, dimension(:,:), allocatable, target val
Data values.
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
This module declares and initializes the BMISS variable.
real *8, public bmiss
Current placeholder value to represent "missing" data when reading from or writing to BUFR files; thi...
This module declares and initializes the IM8B variable.
logical, public im8b
Status indicator to keep track of whether all future calls to BUFRLIB subroutines and functions from ...
function nvnwin(NODE, LUN, INV1, INV2, INVN, NMAX)
This function looks for and returns all occurrences of a specified node within the portion of the cur...
subroutine nxtwin(LUN, IWIN, JWIN)
Given indices within the internal jump/link table which point to the start and end of an "rpc" window...
recursive subroutine status(LUNIT, LUN, IL, IM)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
subroutine string(STR, LUN, I1, IO)
This subroutine checks to see if a user-specified character string is in the string cache (arrays in ...
recursive subroutine ufbevn(LUNIT, USR, I1, I2, I3, IRET, STR)
Read one or more data values from an NCEP prepbufr file.
subroutine x48(IIN4, IOUT8, NVAL)
Encode one or more 4-byte integer values as 8-byte integer values.
subroutine x84(IIN8, IOUT4, NVAL)
Encode one or more 8-byte integer values as 4-byte integer values.