41 COMMON /dxtab / maxdx,idxv,nxstr(10),ldxa(10),ldxb(10),ldxd(10),
44 CHARACTER*128 bort_str
56 CALL
status(lunot,lot,il,im)
60 CALL
status(lundx,ldx,il,im)
67 IF(lundx.NE.lunot) CALL
cpbfdx(ldx,lot)
72 CALL
dxmini(lot,mgwa,mbyt,mby4,mbya,mbyb,mbyd)
83 + (
iupb(mgwa,mbya,8).EQ.255))
THEN
84 CALL
msgwrt(lunot,mgwa,mbyt)
85 CALL
dxmini(lot,mgwa,mbyt,mby4,mbya,mbyb,mbyd)
88 CALL
pkb(
iupb(mgwa,mby4,24)+lda,24,mgwa,mbit)
90 CALL
pkb(
iupb(mgwa,mbya, 8)+ 1, 8,mgwa,mbit)
92 CALL
pkc(taba(i,lot),lda,mgwa,mbit)
93 CALL
pkb( 0, 8,mgwa,mbit)
94 CALL
pkb( 0, 8,mgwa,mbit)
104 + (
iupb(mgwa,mbyb,8).EQ.255))
THEN
105 CALL
msgwrt(lunot,mgwa,mbyt)
106 CALL
dxmini(lot,mgwa,mbyt,mby4,mbya,mbyb,mbyd)
109 CALL
pkb(
iupb(mgwa,mby4,24)+ldb,24,mgwa,mbit)
111 CALL
pkb(
iupb(mgwa,mbyb, 8)+ 1, 8,mgwa,mbit)
113 CALL
pkc(tabb(i,lot),ldb,mgwa,mbit)
114 CALL
pkb( 0, 8,mgwa,mbit)
122 nseq =
iupm(tabd(i,lot)(ldd+1:ldd+1),8)
123 lend = ldd+1 + l30*nseq
124 IF(
msgfull(mbyt,lend,maxdx).OR.
125 + (
iupb(mgwa,mbyd,8).EQ.255))
THEN
126 CALL
msgwrt(lunot,mgwa,mbyt)
127 CALL
dxmini(lot,mgwa,mbyt,mby4,mbya,mbyb,mbyd)
130 CALL
pkb(
iupb(mgwa,mby4,24)+lend,24,mgwa,mbit)
132 CALL
pkb(
iupb(mgwa,mbyd, 8)+ 1, 8,mgwa,mbit)
134 CALL
pkc(tabd(i,lot),ldd,mgwa,mbit)
135 CALL
pkb( nseq, 8,mgwa,mbit)
138 idn =
iupm(tabd(i,lot)(jj:jj),16)
139 CALL
pkc(
adn30(idn,l30),l30,mgwa,mbit)
146 CALL
msgwrt(lunot,mgwa,mbyt)
154 CALL
dxmini(lot,mgwa,mbyt,mby4,mbya,mbyb,mbyd)
155 CALL
getlens(mgwa,2,len0,len1,len2,l3,l4,l5)
156 mbit = (len0+len1+len2+4)*8
157 CALL
pkb(0,16,mgwa,mbit)
158 CALL
msgwrt(lunot,mgwa,mbyt)
164 900 CALL
bort(
'BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS CLOSED, IT '//
165 .
'MUST BE OPEN FOR OUTPUT')
166 901 CALL
bort(
'BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS OPEN FOR '//
167 .
'INPUT, IT MUST BE OPEN FOR OUTPUT')
168 902 CALL
bort(
'BUFRLIB: WRDXTB - DX TABLE FILE IS CLOSED, IT '//
subroutine msgwrt(LUNIT, MESG, MGBYT)
This subroutine performs final checks and updates on a BUFR message before writing it to a specified ...
subroutine cpbfdx(LUD, LUN)
THIS SUBROUTINE COPIES BUFR TABLE (DICTIONARY) MESSAGES FROM ONE LOCATION TO ANOTHER WITHIN INTERNAL ...
function iupb(MBAY, NBYT, NBIT)
THIS FUNCTION UNPACKS AND RETURNS A BINARY INTEGER WORD CONTAINED WITHIN NBIT BITS OF A BUFR MESSAGE ...
subroutine pkc(CHR, NCHR, IBAY, IBIT)
This subroutine encodes a character string within a specified number of bits of an integer array...
subroutine getlens(MBAY, LL, LEN0, LEN1, LEN2, LEN3, LEN4, LEN5)
This subroutine reads the lengths of all of the individual sections of a given BUFR message...
function iupm(CBAY, NBITS)
THIS FUNCTION UNPACKS AND RETURNS A BINARY INTEGER WORD CONTAINED WITHIN NBITS BITS OF A CHARACTER ST...
This module contains array and variable declarations used to store DX BUFR tables internally for mult...
subroutine dxmini(LUN, MBAY, MBYT, MB4, MBA, MBB, MBD)
THIS SUBROUTINE INITIALIZES A BUFR TABLE (DICTIONARY) MESSAGE, WRITING ALL THE PRELIMINARY INFORMATIO...
LOGICAL function msgfull(MSIZ, ITOADD, MXSIZ)
This function determines whether the current data subset in the internal arrays will fit within the c...
character *(*) function adn30(IDN, L30)
This function converts an FXY value from its bit-wise (integer) representation to its 5 or 6 characte...
subroutine status(LUNIT, LUN, IL, IM)
This subroutine checks whether a specified Fortran logical unit number is currently connected to the ...
subroutine wrdxtb(LUNDX, LUNOT)
THIS SUBROUTINE WRITES BUFR TABLE (DICTIONARY) MESSAGES ASSOCIATED WITH THE BUFR FILE IN LUNDX TO THE...
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
subroutine pkb(NVAL, NBITS, IBAY, IBIT)
This subroutine encodes an integer value within a specified number of bits of an integer array...