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)
82 IF(msgfull(mbyt,lda,maxdx).OR.
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)
103 IF(msgfull(mbyt,ldb,maxdx).OR.
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)
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)
164900
CALL bort(
'BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS CLOSED, IT '//
165 .
'MUST BE OPEN FOR OUTPUT')
166901
CALL bort(
'BUFRLIB: WRDXTB - OUTPUT BUFR FILE IS OPEN FOR '//
167 .
'INPUT, IT MUST BE OPEN FOR OUTPUT')
168902
CALL bort(
'BUFRLIB: WRDXTB - DX TABLE FILE IS CLOSED, IT '//
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
subroutine cpbfdx(LUD, LUN)
THIS SUBROUTINE COPIES BUFR TABLE (DICTIONARY) MESSAGES FROM ONE LOCATION TO ANOTHER WITHIN INTERNAL ...
subroutine dxmini(LUN, MBAY, MBYT, MB4, MBA, MBB, MBD)
THIS SUBROUTINE INITIALIZES A BUFR TABLE (DICTIONARY) MESSAGE, WRITING ALL THE PRELIMINARY INFORMATIO...
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 iupb(MBAY, NBYT, NBIT)
THIS FUNCTION UNPACKS AND RETURNS A BINARY INTEGER WORD CONTAINED WITHIN NBIT BITS OF A BUFR MESSAGE ...
function iupm(CBAY, NBITS)
THIS FUNCTION UNPACKS AND RETURNS A BINARY INTEGER WORD CONTAINED WITHIN NBITS BITS OF A CHARACTER ST...
subroutine msgwrt(LUNIT, MESG, MGBYT)
This subroutine performs final checks and updates on a BUFR message before writing it to a specified ...
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.
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,...
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.
subroutine pkb(NVAL, NBITS, IBAY, IBIT)
This subroutine encodes an integer value within a specified number of bits of an integer array,...
subroutine pkc(CHR, NCHR, IBAY, IBIT)
This subroutine encodes a character string within a specified number of bits of an integer array,...
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...