105 SUBROUTINE ufbin3(LUNIT,USR,I1,I2,I3,IRET,JRET,STR)
111 COMMON /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
127 CALL status(lunit,lun,il,im)
131 IF(inode(lun).NE.inv(1,lun))
GOTO 903
135 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
136 errstr = .LE.
'BUFRLIB: UFBIN3 - 3rd ARG. (INPUT) IS 0, ' //
137 .
'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; ' //
141 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
147 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
148 errstr = .LE.
'BUFRLIB: UFBIN3 - 4th ARG. (INPUT) IS 0, ' //
149 .
'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; ' //
153 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
159 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
160 errstr = .LE.
'BUFRLIB: UFBIN3 - 5th ARG. (INPUT) IS 0, ' //
161 .
'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; ' //
165 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
1931
CALL conwin(lun,inc1,inc2)
197 ELSEIF(inc1.EQ.0)
THEN
201 IF(nods(i).GT.0)
THEN
203 CALL getwin(nods(i),lun,ins1,ins2)
204 IF(ins1.EQ.0)
GOTO 100
218 nnvn =
nevn(nods(i),lun,ins1,ins2,i1,i2,i3,usr(i,iret,1))
219 jret = max(jret,nnvn)
226 CALL nxtwin(lun,ins1,ins2)
227 IF(ins1.GT.0 .AND. ins1.LT.inc2)
GOTO 2
230 IF(iret.EQ.0 .OR. jret.EQ.0)
THEN
232 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
233 errstr =
'BUFRLIB: UFBIN3 - NO SPECIFIED VALUES READ IN, ' //
234 .
'SO RETURN WITH 6th AND/OR 7th ARGS. (IRET, JRET) = 0; ' //
238 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
247900
CALL bort(
'BUFRLIB: UFBIN3 - INPUT BUFR FILE IS CLOSED, IT MUST'//
248 .
' BE OPEN FOR INPUT')
249901
CALL bort(
'BUFRLIB: UFBIN3 - INPUT BUFR FILE IS OPEN FOR OUTPUT'//
250 .
', IT MUST BE OPEN FOR INPUT')
251902
CALL bort(
'BUFRLIB: UFBIN3 - A MESSAGE MUST BE OPEN IN INPUT '//
252 .
'BUFR FILE, NONE ARE')
253903
CALL bort(
'BUFRLIB: UFBIN3 - LOCATION OF INTERNAL TABLE FOR '//
254 .
'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN '//
255 .
'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 nevn(NODE, LUN, INV1, INV2, I1, I2, I3, USR)
THIS FUNCTION LOOKS FOR ALL STACKED DATA EVENTS FOR A SPECIFIED DATA VALUE AND LEVEL WITHIN THE PORTI...
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 ufbin3(LUNIT, USR, I1, I2, I3, IRET, JRET, STR)
THIS SUBROUTINE READS SPECIFIED VALUES FROM THE CURRENT BUFR DATA SUBSET WITHIN INTERNAL ARRAYS.