64 RECURSIVE SUBROUTINE ufbin3(LUNIT,USR,I1,I2,I3,IRET,JRET,STR)
72 COMMON /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
88 CALL x84(lunit,my_lunit,1)
92 CALL ufbin3(my_lunit,usr,my_i1,my_i2,my_i3,iret,jret,str)
106 CALL status(lunit,lun,il,im)
110 IF(
inode(lun).NE.
inv(1,lun))
GOTO 903
114 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
115 errstr = .LE.
'BUFRLIB: UFBIN3 - 3rd ARG. (INPUT) IS 0, ' //
116 .
'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; ' //
120 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
126 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
127 errstr = .LE.
'BUFRLIB: UFBIN3 - 4th ARG. (INPUT) IS 0, ' //
128 .
'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; ' //
132 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
138 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
139 errstr = .LE.
'BUFRLIB: UFBIN3 - 5th ARG. (INPUT) IS 0, ' //
140 .
'SO RETURN WITH 6th AND 7th ARGS. (IRET, JRET) = 0; ' //
144 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
172 1
CALL conwin(lun,inc1,inc2)
176 ELSEIF(inc1.EQ.0)
THEN
180 IF(nods(i).GT.0)
THEN
182 CALL getwin(nods(i),lun,ins1,ins2)
183 IF(ins1.EQ.0)
GOTO 100
197 nnvn =
nevn(nods(i),lun,ins1,ins2,i1,i2,i3,usr(i,iret,1))
198 jret = max(jret,nnvn)
205 CALL nxtwin(lun,ins1,ins2)
206 IF(ins1.GT.0 .AND. ins1.LT.inc2)
GOTO 2
209 IF(iret.EQ.0 .OR. jret.EQ.0)
THEN
211 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
212 errstr =
'BUFRLIB: UFBIN3 - NO SPECIFIED VALUES READ IN, ' //
213 .
'SO RETURN WITH 6th AND/OR 7th ARGS. (IRET, JRET) = 0; ' //
217 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
226 900
CALL bort(
'BUFRLIB: UFBIN3 - INPUT BUFR FILE IS CLOSED, IT MUST'//
227 .
' BE OPEN FOR INPUT')
228 901
CALL bort(
'BUFRLIB: UFBIN3 - INPUT BUFR FILE IS OPEN FOR OUTPUT'//
229 .
', IT MUST BE OPEN FOR INPUT')
230 902
CALL bort(
'BUFRLIB: UFBIN3 - A MESSAGE MUST BE OPEN IN INPUT '//
231 .
'BUFR FILE, NONE ARE')
232 903
CALL bort(
'BUFRLIB: UFBIN3 - LOCATION OF INTERNAL TABLE FOR '//
233 .
'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN '//
234 .
'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...
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 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...
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 ufbin3(LUNIT, USR, I1, I2, I3, IRET, JRET, STR)
Read one or more data values from an NCEP prepfits 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.