160 SUBROUTINE ufbint(LUNIN,USR,I1,I2,IRET,STR)
166 COMMON /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
170 CHARACTER*128 bort_str1,bort_str2,errstr
173 DATA ifirst1/0/,ifirst2/0/
175 SAVE ifirst1, ifirst2
186 CALL
status(lunit,lun,il,im)
189 IF(inode(lun).NE.inv(1,lun)) goto 902
191 io = min(max(0,il),1)
192 IF(lunit.NE.lunin) io = 0
196 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
197 errstr = .LE.
'BUFRLIB: UFBINT - 3rd ARG. (INPUT) IS 0, ' //
198 .
'SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
201 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
206 IF(iprt.EQ.-1) ifirst1 = 1
207 IF(io.EQ.0 .OR. ifirst1.EQ.0 .OR. iprt.GE.1)
THEN
208 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
209 errstr = .LE.
'BUFRLIB: UFBINT - 4th ARG. (INPUT) IS 0, ' //
210 .
'SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
213 IF(iprt.EQ.0 .AND. io.EQ.1)
THEN
214 errstr =
'Note: Only the first occurrence of this WARNING ' //
215 .
'message is printed, there may be more. To output all ' //
218 errstr =
'modify your application program to add ' //
219 .
'"CALL OPENBF(0,''QUIET'',1)" prior to the first call ' //
220 .
'to a BUFRLIB routine.'
223 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
233 CALL
string(str,lun,i1,io)
249 CALL
ufbrw(lun,usr,i1,i2,io,iret)
254 IF(io.EQ.1 .AND. iret.NE.i2 .AND. iret.GE.0)
THEN
255 CALL
trybump(lunit,lun,usr,i1,i2,io,iret)
256 IF(iret.NE.i2) goto 903
257 ELSEIF(iret.EQ.-1)
THEN
264 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
265 errstr =
'BUFRLIB: UFBINT - NO SPECIFIED VALUES READ IN, ' //
266 .
'SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
269 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
273 IF(iprt.EQ.-1) ifirst2 = 1
274 IF(ifirst2.EQ.0 .OR. iprt.GE.1)
THEN
275 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
276 errstr =
'BUFRLIB: UFBINT - NO SPECIFIED VALUES WRITTEN OUT, ' //
277 .
'SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
280 CALL
errwrt(
'MAY NOT BE IN THE BUFR TABLE(?)')
282 errstr =
'Note: Only the first occurrence of this WARNING ' //
283 .
'message is printed, there may be more. To output all ' //
286 errstr =
'modify your application program to add ' //
287 .
'"CALL OPENBF(0,''QUIET'',1)" prior to the first call ' //
288 .
'to a BUFRLIB routine.'
291 CALL
errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
302 900 CALL
bort(
'BUFRLIB: UFBINT - BUFR FILE IS CLOSED, IT MUST BE'//
304 901 CALL
bort(
'BUFRLIB: UFBINT - A MESSAGE MUST BE OPEN IN BUFR '//
306 902 CALL
bort(
'BUFRLIB: UFBINT - LOCATION OF INTERNAL TABLE FOR '//
307 .
'BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN INTERNAL '//
309 903
WRITE(bort_str1,
'("BUFRLIB: UFBINT - MNEMONIC STRING READ IN IS'//
311 WRITE(bort_str2,
'(18X,"THE NUMBER OF ''LEVELS'' ACTUALLY '//
312 .
'WRITTEN (",I3,") DOES NOT EQUAL THE NUMBER REQUESTED (",I3,")'//
313 .
' - INCOMPLETE WRITE")') iret,i2
314 CALL
bort2(bort_str1,bort_str2)
subroutine ufbrw(LUN, USR, I1, I2, IO, IRET)
THIS SUBROUTINE WRITES OR READS SPECIFIED VALUES TO OR FROM THE CURRENT BUFR DATA SUBSET WITHIN INTER...
subroutine bort2(STR1, STR2)
This subroutine calls subroutine errwrt() to log two error messages, then calls subroutine bort_exit(...
This module declares and initializes the BMISS variable.
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 trybump(LUNIT, LUN, USR, I1, I2, IO, IRET)
THIS SUBROUTINE CHECKS THE FIRST NODE ASSOCIATED WITH A CHARACTER STRING (PARSED INTO ARRAYS IN COMMO...
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
subroutine ufbint(LUNIN, USR, I1, I2, IRET, STR)
This subroutine reads or writes one or more data values from or to the BUFR data subset that is curre...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...