129 SUBROUTINE ufbevn(LUNIT,USR,I1,I2,I3,IRET,STR)
135 COMMON /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
136 COMMON /ufbn3c/ maxevn
153 CALL status(lunit,lun,il,im)
157 IF(inode(lun).NE.inv(1,lun))
GOTO 903
161 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
162 errstr = .LE.
'BUFRLIB: UFBEVN - 3rd ARG. (INPUT) IS 0, ' //
163 .
'SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
166 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
172 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
173 errstr = .LE.
'BUFRLIB: UFBEVN - 4th ARG. (INPUT) IS 0, ' //
174 .
'SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
177 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
183 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
184 errstr = .LE.
'BUFRLIB: UFBEVN - 5th ARG. (INPUT) IS 0, ' //
185 .
'SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
188 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
2161
CALL conwin(lun,inc1,inc2)
220 ELSEIF(inc1.EQ.0)
THEN
224 IF(nods(i).GT.0)
THEN
226 CALL getwin(nods(i),lun,ins1,ins2)
227 IF(ins1.EQ.0)
GOTO 100
241 IF(nods(i).GT.0)
THEN
242 nnvn =
nvnwin(nods(i),lun,ins1,ins2,invn,i3)
243 maxevn = max(nnvn,maxevn)
245 usr(i,iret,n) = val(invn(n),lun)
254 CALL nxtwin(lun,ins1,ins2)
255 IF(ins1.GT.0 .AND. ins1.LT.inc2)
GOTO 2
260 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
261 errstr =
'BUFRLIB: UFBEVN - NO SPECIFIED VALUES READ IN, ' //
262 .
'SO RETURN WITH 6th ARG. (IRET) = 0; 7th ARG. (STR) ='
265 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
274900
CALL bort(
'BUFRLIB: UFBEVN - INPUT BUFR FILE IS CLOSED, IT MUST'//
275 .
' BE OPEN FOR INPUT')
276901
CALL bort(
'BUFRLIB: UFBEVN - INPUT BUFR FILE IS OPEN FOR OUTPUT'//
277 .
', IT MUST BE OPEN FOR INPUT')
278902
CALL bort(
'BUFRLIB: UFBEVN - A MESSAGE MUST BE OPEN IN INPUT '//
279 .
'BUFR FILE, NONE ARE')
280903
CALL bort(
'BUFRLIB: UFBEVN - LOCATION OF INTERNAL TABLE FOR '//
281 .
'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN '//
282 .
'INTERNAL SUBSET ARRAY')
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
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 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...
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...
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...
subroutine string(STR, LUN, I1, IO)
THIS SUBROUTINE CHECKS TO SEE IF A USER-SPECIFIED CHARACTER STRING IS IN THE STRING CACHE (ARRAYS IN ...
subroutine ufbevn(LUNIT, USR, I1, I2, I3, IRET, STR)
THIS SUBROUTINE READS SPECIFIED VALUES FROM THE CURRENT BUFR DATA SUBSET WITHIN INTERNAL ARRAYS.