38 RECURSIVE SUBROUTINE dxdump(LUNIT,LDXOT)
44 COMMON /reptab/ idnr(5,2),typs(5,2),reps(5,2),lens(5)
46 CHARACTER*80 card,cardi1,cardi2,cardi3,cardi4
54 LOGICAL tbskip, tdskip, xtrci1
67 . /
' |-------------|'/
69 . /
'|---------------------------------------'/
71 . /
'---------------------------------------|'/
74 tbskip(adn) = ((adn.EQ.
'063000').OR.(adn.EQ.
'063255').OR.
75 . (adn.EQ.
'031000').OR.(adn.EQ.
'031001').OR.
77 tdskip(adn) = ((adn.EQ.
'360001').OR.(adn.EQ.
'360002').OR.
78 . (adn.EQ.
'360003').OR.(adn.EQ.
'360004'))
86 CALL x84(lunit,my_lunit,1)
87 CALL x84(ldxot,my_ldxot,1)
88 CALL dxdump(my_lunit,my_ldxot)
96 CALL status(lunit,lun,il,im)
105 WRITE (ldxot,
'(A)') card
110 card(15:64)=
' USER DEFINITIONS FOR TABLE-A TABLE-B TABLE D '
111 WRITE (ldxot,
'(A)') card
113 WRITE (ldxot,
'(A)') cardi4
116 card( 3:10)=
'MNEMONIC'
118 card(23:33)=
'DESCRIPTION'
119 WRITE (ldxot,
'(A)') card
124 WRITE (ldxot,
'(A)') card
129 WRITE (ldxot,
'(A)') cardi1
133 IF(.NOT.tdskip(
tabd(n,lun)(1:6)))
THEN
135 card( 3:10)=
tabd(n,lun)( 7:14)
136 card(14:19)=
tabd(n,lun)( 1: 6)
137 card(23:77)=
tabd(n,lun)(16:70)
146 IF(
taba(na,lun)(4:11).EQ.
tabd(n,lun)(7:14))
THEN
148 IF(na.EQ.
ntba(lun)) xtrci1=.true.
152 10
WRITE (ldxot,
'(A)') card
154 WRITE (ldxot,
'(A)') cardi1
163 WRITE (ldxot,
'(A)') cardi1
166 IF(.NOT.tbskip(
tabb(n,lun)(1:6)))
THEN
168 card( 3:10)=
tabb(n,lun)( 7:14)
169 card(14:19)=
tabb(n,lun)( 1: 6)
170 card(23:77)=
tabb(n,lun)(16:70)
171 WRITE (ldxot,
'(A)') card
175 WRITE (ldxot,
'(A)') cardi1
180 WRITE (ldxot,
'(A)') cardi4
183 card( 3:10)=
'MNEMONIC'
184 card(14:21)=
'SEQUENCE'
185 WRITE (ldxot,
'(A)') card
189 WRITE (ldxot,
'(A)') card
194 WRITE (ldxot,
'(A)') cardi2
197 IF(.NOT.tdskip(
tabd(n,lun)(1:6)))
THEN
199 card( 3:10)=
tabd(n,lun)( 7:14)
212 IF(
irp(nc,1).NE.0)
THEN
217 cmstr(icms:icms)=reps(
irp(nc,1),1)
219 cmstr(icms+1:icms+nch)=wrk2(1:nch)
221 IF(
irp(nc,1).NE.0)
THEN
226 cmstr(icms:icms)=reps(
irp(nc,1),2)
228 IF(
krp(nc,1).NE.0)
THEN
233 WRITE (wrk1,
'(I3)')
krp(nc,1)
234 CALL strsuc(wrk1,wrk2,nch)
235 cmstr(icms+1:icms+nch)=wrk2(1:nch)
244 IF(ic.GT.(79-icms))
THEN
245 WRITE (ldxot,
'(A)') card
247 card( 3:10)=
tabd(n,lun)( 7:14)
250 card(ic:ic+icms-1)=cmstr(1:icms)
258 WRITE (ldxot,
'(A)') card
259 WRITE (ldxot,
'(A)') cardi2
267 WRITE (ldxot,
'(A)') cardi4
270 card( 3:10)=
'MNEMONIC'
272 card(21:29)=
'REFERENCE'
275 WRITE (ldxot,
'(A)') card
283 WRITE (ldxot,
'(A)') card
288 WRITE (ldxot,
'(A)') cardi3
291 IF(.NOT.tbskip(
tabb(n,lun)(1:6)))
THEN
293 card( 3:10)=
tabb(n,lun)( 7:14)
294 card(41:64)=
tabb(n,lun)(71:94)
299 card(17-nch+1:17)=wrk2
300 IF(
tabb(n,lun)(95:95).EQ.
'-') card(17-nch:17-nch)=
'-'
305 card(31-nch+1:31)=wrk3
306 IF(
tabb(n,lun)(99:99).EQ.
'-') card(31-nch:31-nch)=
'-'
311 card(37-nch+1:37)=wrk2
312 WRITE (ldxot,
'(A)') card
316 WRITE (ldxot,
'(A)') cardi3
323 WRITE (ldxot,
'(A)') card
326 900
CALL bort(
'BUFRLIB: DXDUMP - BUFR FILE IS CLOSED, IT MUST BE'//
subroutine bort(STR)
Log one error message and abort application program.
recursive subroutine dxdump(LUNIT, LDXOT)
This subroutine prints a copy of the DX BUFR table associated with a specified Fortran logical unit.
This module contains declarations for arrays used by various subroutines to hold information about Ta...
integer, dimension(:,:), allocatable krp
Replication counts corresponding to nem:
integer, dimension(:,:), allocatable irp
Replication indicators corresponding to nem:
character *8, dimension(:,:), allocatable nem
Child mnemonics within Table D sequences.
This module contains array and variable declarations used to store DX BUFR tables internally for mult...
integer, dimension(:), allocatable ntba
Number of Table A entries for each internal I/O stream (up to a maximum of MAXTBA,...
character *600, dimension(:,:), allocatable tabd
Table D entries for each internal I/O stream.
character *128, dimension(:,:), allocatable taba
Table A entries for each internal I/O stream.
integer, dimension(:), allocatable ntbd
Number of Table D entries for each internal I/O stream (up to a maximum of MAXTBD,...
integer, dimension(:), allocatable ntbb
Number of Table B entries for each internal I/O stream (up to a maximum of MAXTBB,...
character *128, dimension(:,:), allocatable tabb
Table B entries for each internal I/O stream.
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 nemtbd(LUN, ITAB, NSEQ, NEMS, IRPS, KNTS)
This subroutine returns information about a Table D descriptor from the internal DX BUFR tables.
recursive subroutine status(LUNIT, LUN, IL, IM)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
subroutine strsuc(str1, str2, lens)
This subroutine removes leading and trailing blanks from a character string.
subroutine x84(IIN8, IOUT4, NVAL)
Encode one or more 8-byte integer values as 4-byte integer values.