28 RECURSIVE SUBROUTINE ufbovr(LUNIT,USR,I1,I2,IRET,STR)
37 CHARACTER*128 bort_str1,bort_str2,errstr
41 DATA ifirst1/0/,ifirst2/0/
54 CALL x84(lunit,my_lunit,1)
57 CALL ufbovr(my_lunit,usr,my_i1,my_i2,iret,str)
69 CALL status(lunit,lun,il,im)
73 IF(
inode(lun).NE.
inv(1,lun))
GOTO 903
80 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
81 errstr = .LE.
'BUFRLIB: UFBOVR - 3rd ARG. (INPUT) IS 0, ' //
82 .
'SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
85 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
90 IF(iprt.EQ.-1) ifirst1 = 1
91 IF(io.EQ.0 .OR. ifirst1.EQ.0 .OR. iprt.GE.1)
THEN
92 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
93 errstr = .LE.
'BUFRLIB: UFBOVR - 4th ARG. (INPUT) IS 0, ' //
94 .
'SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
97 IF(iprt.EQ.0 .AND. io.EQ.1)
THEN
98 errstr =
'Note: Only the first occurrence of this WARNING ' //
99 .
'message is printed, there may be more. To output all ' //
102 errstr =
'modify your application program to add ' //
103 .
'"CALL OPENBF(0,''QUIET'',1)" prior to the first call ' //
104 .
'to a BUFRLIB routine.'
107 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
117 CALL string(str,lun,i1,io)
118 CALL trybump(lun,usr,i1,i2,io,iret)
120 IF(io.EQ.1 .AND. iret.NE.i2)
GOTO 904
123 IF(iprt.EQ.-1) ifirst2 = 1
124 IF(ifirst2.EQ.0 .OR. iprt.GE.1)
THEN
125 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
126 errstr =
'BUFRLIB: UFBOVR - NO SPECIFIED VALUES WRITTEN OUT, ' //
127 .
'SO RETURN WITH 5th ARG. (IRET) = 0; 6th ARG. (STR) ='
130 CALL errwrt(
'MAY NOT BE IN THE BUFR TABLE(?)')
132 errstr =
'Note: Only the first occurrence of this WARNING ' //
133 .
'message is printed, there may be more. To output all ' //
136 errstr =
'modify your application program to add ' //
137 .
'"CALL OPENBF(0,''QUIET'',1)" prior to the first call ' //
138 .
'to a BUFRLIB routine.'
141 CALL errwrt(
'+++++++++++++++++++++WARNING+++++++++++++++++++++++')
151 900
CALL bort(
'BUFRLIB: UFBOVR - OUTPUT BUFR FILE IS CLOSED, IT '//
152 .
'MUST BE OPEN FOR OUTPUT')
153 901
CALL bort(
'BUFRLIB: UFBOVR - OUTPUT BUFR FILE IS OPEN FOR '//
154 .
'INPUT, IT MUST BE OPEN FOR OUTPUT')
155 902
CALL bort(
'BUFRLIB: UFBOVR - A MESSAGE MUST BE OPEN IN OUTPUT '//
156 .
'BUFR FILE, NONE ARE')
157 903
CALL bort(
'BUFRLIB: UFBOVR - LOCATION OF INTERNAL TABLE FOR '//
158 .
'OUTPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN '//
159 .
'INTERNAL SUBSET ARRAY')
160 904
WRITE(bort_str1,
'("BUFRLIB: UFBOVR - MNEMONIC STRING READ IN IS'//
162 WRITE(bort_str2,
'(18X,"THE NUMBER OF ''LEVELS'' ACTUALLY '//
163 .
'WRITTEN (",I3,") DOES NOT EQUAL THE NUMBER REQUESTED (",I3,")'//
164 .
' - INCOMPLETE WRITE")') iret,i2
165 CALL bort2(bort_str1,bort_str2)
subroutine bort2(STR1, STR2)
Log two error messages and abort application program.
subroutine bort(STR)
Log one error message and abort application program.
subroutine errwrt(STR)
This subroutine allows the user to specify a custom location for the logging of error and diagnostic ...
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 IM8B variable.
logical, public im8b
Status indicator to keep track of whether all future calls to BUFRLIB subroutines and functions from ...
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 ...
subroutine trybump(LUN, USR, I1, I2, IO, IRET)
This subroutine checks the first node associated with a character string (parsed into arrays in commo...
recursive subroutine ufbovr(LUNIT, USR, I1, I2, IRET, STR)
This subroutine writes over specified values which exist in current internal BUFR subset arrays in a ...
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.