53 RECURSIVE SUBROUTINE ufbdmp(LUNIN,LUPRT)
63 CHARACTER*20 lchr,pmiss
76 DATA pmiss /
' MISSING'/
88 CALL x84(lunin,my_lunin,1)
89 CALL x84(luprt,my_luprt,1)
90 CALL ufbdmp(my_lunin,my_luprt)
106 CALL status(lunit,lun,il,im)
110 IF(
inode(lun).NE.
inv(1,lun))
GOTO 903
116 IF(luprt.EQ.0 .AND. mod(nv,20).EQ.0)
THEN
121 print*,
'(<enter> for MORE, q <enter> to QUIT)'
131 print*,
'==> You have chosen to stop the dumping of this subset'
151 CALL nemtab(lun,tg,idn,tab,n)
152 IF(
tabb(n,lun)(71:75).EQ.
'FLAG')
THEN
157 CALL upftbv(lunit,tg,vl,mxfv,ifv,nifv)
163 WRITE(fmtf,
'(A2,I1,A4)')
'(I', isz,
',A1)'
164 IF((ipt+isz).LE.14)
THEN
165 WRITE(bits(ipt:ipt+isz),fmtf) ifv(ii),
','
168 bits(2:13) =
'MANY BITS ON'
172 bits(ipt-1:ipt-1) =
')'
176 IF(
ibfms(vl).NE.0)
THEN
177 WRITE(luout,2) nv,tp,it,tg_rj,pmiss,ib,is,ir,nd,jp,lk,jb
179 IF(lunit.EQ.lunin)
THEN
180 WRITE(luout,1) nv,tp,it,tg_rj,vl,bits,ib,is,ir,nd,jp,lk,
183 WRITE(luout,10) nv,tp,it,tg_rj,vl,bits,ib,is,ir,nd,jp,lk,
190 CALL readlc(lunit,lchr2,tg_rj)
191 IF (
icbfms(lchr2,nchr).NE.0)
THEN
197 IF(
ibfms(vl).NE.0)
THEN
203 IF ( nchr.LE.20 .OR. lchr.EQ.pmiss )
THEN
205 WRITE(luout,2) nv,tp,it,tg_rj,lchr,ib,is,ir,nd,jp,lk,jb
207 WRITE(luout,4) nv,tp,it,tg_rj,lchr2(1:nchr),ib,is,ir,nd,jp,
215 1
FORMAT(i5,1x,a3,
'-',i1,1x,a10,5x,g15.6,1x,a14,7(1x,i5))
216 10
FORMAT(i5,1x,a3,
'-',i1,1x,a10,5x,f15.6,1x,a14,7(1x,i5))
217 2
FORMAT(i5,1x,a3,
'-',i1,1x,a10,1x, a20, 14x,7(1x,i5))
218 3
FORMAT(/
' >>> END OF SUBSET <<< '/)
219 4
FORMAT(i5,1x,a3,
'-',i1,1x,a10,1x, a, 7(1x,i5))
225 900
CALL bort(
'BUFRLIB: UFBDMP - INPUT BUFR FILE IS CLOSED, IT '//
226 .
'MUST BE OPEN FOR INPUT')
227 901
CALL bort(
'BUFRLIB: UFBDMP - INPUT BUFR FILE IS OPEN FOR '//
228 .
'OUTPUT, IT MUST BE OPEN FOR INPUT')
229 902
CALL bort(
'BUFRLIB: UFBDMP - A MESSAGE MUST BE OPEN IN INPUT '//
230 .
'BUFR FILE, NONE ARE')
231 903
CALL bort(
'BUFRLIB: UFBDMP - LOCATION OF INTERNAL TABLE FOR '//
232 .
'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN '//
233 .
'INTERNAL SUBSET ARRAY')
subroutine bort(STR)
Log one error message and abort application program.
integer function ibfms(R8VAL)
Test whether a real*8 data value is "missing".
recursive function icbfms(STR, LSTR)
This function provides a handy way to check whether a character string returned from a previous call ...
integer function isize(NUM)
This function computes and returns the number of characters needed to encode the input integer NUM as...
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 array and variable declarations used to store DX BUFR tables internally for mult...
character *128, dimension(:,:), allocatable tabb
Table B entries for each internal I/O stream.
This module contains array and variable declarations used to store the internal jump/link table.
integer, dimension(:), allocatable irf
Reference values corresponding to tag and typ:
integer, dimension(:), allocatable isc
Scale factors corresponding to tag and typ:
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
integer, dimension(:), allocatable jmpb
Jump backward indices corresponding to tag and typ:
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
integer, dimension(:), allocatable jump
Jump forward indices corresponding to tag and typ:
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
integer, dimension(:), allocatable link
Link indices corresponding to tag, typ and jmpb:
This module contains declarations for arrays used to store data values and associated metadata for th...
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
real *8, dimension(:,:), allocatable, target val
Data values.
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 ...
subroutine nemtab(LUN, NEMO, IDN, TAB, IRET)
Get information about a descriptor, based on the mnemonic.
recursive subroutine readlc(LUNIT, CHR, STR)
Read a long character string (greater than 8 bytes) from a data subset.
recursive subroutine status(LUNIT, LUN, IL, IM)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
recursive subroutine ufbdmp(LUNIN, LUPRT)
Print the contents of a data subset.
recursive subroutine upftbv(LUNIT, NEMO, VAL, MXIB, IBIT, NIB)
Given a Table B mnemonic with flag table units and a corresponding numerical data value,...
subroutine x84(IIN8, IOUT4, NVAL)
Encode one or more 8-byte integer values as 4-byte integer values.