33 COMMON /dxtab / maxdx,idxv,nxstr(10),ldxa(10),ldxb(10),ldxd(10),
36 CHARACTER*128 BORT_STR
37 CHARACTER*128 TABB1,TABB2
44 dimension ldxbd(10),ldxbe(10)
48 DATA ldxbd /38,70,8*0/
49 DATA ldxbe /42,42,8*0/
52 ja(i) = ia+1+lda*(i-1)
53 jb(i) = ib+1+ldb*(i-1)
60 IF(idxs.GT.idxv+1) idxs =
iupbs01(mesg,
'MTVL')+1
61 IF(ldxa(idxs).EQ.0)
GOTO 901
62 IF(ldxb(idxs).EQ.0)
GOTO 901
63 IF(ldxd(idxs).EQ.0)
GOTO 901
65 CALL getlens(mesg,3,len0,len1,len2,len3,l4,l5)
69 CALL upc(dxcmp,nxstr(idxs),mesg,jbit,.false.)
70 IF(dxcmp.NE.dxstr(idxs))
GOTO 902
95 CALL upc(
taba(n,lun),lda,mesg,jbit,.true.)
96 numb =
' '//
taba(n,lun)(1:3)
97 nemo =
taba(n,lun)(4:11)
98 cseq =
taba(n,lun)(13:67)
99 CALL stntbia(n,lun,numb,nemo,cseq)
108 CALL upc(tabb1,ldbd,mesg,jbit,.true.)
109 jbit = 8*(jb(i)+ldbd-1)
110 CALL upc(tabb2,ldbe,mesg,jbit,.true.)
111 tabb(n,lun) = tabb1(1:ldxbd(idxv+1))//tabb2(1:ldxbe(idxv+1))
112 numb =
tabb(n,lun)(1:6)
113 nemo =
tabb(n,lun)(7:14)
114 CALL nenubd(nemo,numb,lun)
116 unit =
tabb(n,lun)(71:94)
118 tabb(n,lun)(71:94) = unit
128 CALL upc(
tabd(n,lun),ldd,mesg,jbit,.true.)
129 numb =
tabd(n,lun)(1:6)
130 nemo =
tabd(n,lun)(7:14)
131 CALL nenubd(nemo,numb,lun)
133 nd =
iupb(mesg,id+ldd+1,8)
134 IF(nd.GT.
maxcd)
GOTO 903
136 ndd = id+ldd+2 + (j-1)*l30
138 CALL upc(cidn,l30,mesg,jbit,.true.)
139 idn =
idn30(cidn,l30)
140 CALL pktdd(n,lun,idn,iret)
141 IF(iret.LT.0)
GOTO 904
143 id = id+ldd+1 + nd*l30
144 IF(
iupb(mesg,id+1,8).EQ.0) id = id+1
152901
CALL bort(
'BUFRLIB: STBFDX - UNEXPECTED DICTIONARY MESSAGE '//
153 .
'SUBTYPE OR LOCAL VERSION NUMBER (E.G., L.V.N. HIGHER THAN '//
155902
CALL bort(
'BUFRLIB: STBFDX - UNEXPECTED DICTIONARY MESSAGE '//
157903
WRITE(bort_str,
'("BUFRLIB: STBFDX - NUMBER OF DESCRIPTORS IN '//
158 .
'TABLE D ENTRY ",A," IN BUFR TABLE (",I4,") EXCEEDS THE LIMIT '//
159 .
' (",I4,")")') nemo,nd,
maxcd
161904
CALL bort(
'BUFRLIB: STBFDX - BAD RETURN FROM BUFRLIB ROUTINE '//
162 .
'PKTDD, SEE PREVIOUS WARNING MESSAGE')
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
subroutine capit(STR)
This subroutine capitalizes all of the alphabetic characters in a string.
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 idn30(ADN30, L30)
This function converts an FXY value from its 5 or 6 character representation to its bit-wise (integer...
function ifxy(ADSC)
This function converts an FXY value from its 6 character representation to its bit-wise (integer) rep...
function igetntbi(LUN, CTB)
This function returns the next available index for storing an entry within a specified internal DX BU...
function iupb(MBAY, NBYT, NBIT)
THIS FUNCTION UNPACKS AND RETURNS A BINARY INTEGER WORD CONTAINED WITHIN NBIT BITS OF A BUFR MESSAGE ...
function iupbs01(MBAY, S01MNEM)
This function returns a specified value from within Section 0 or Section 1 of a BUFR message.
This module contains array and variable declarations used to store DX BUFR tables internally for mult...
integer, dimension(:,:), allocatable idnb
Bit-wise representations of the FXY values corresponding to tabb.
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 idnd
Bit-wise representations of the FXY values corresponding to tabd.
character *600, dimension(:,:), allocatable tabd
Table D entries for each internal I/O stream.
This module declares and initializes the MAXCD variable.
integer, public maxcd
Maximum number of child descriptors that can be included within the sequence definition of a Table D ...
subroutine nenubd(NEMO, NUMB, LUN)
THIS SUBROUTINE CHECKS A MNEMONIC AND FXY VALUE PAIR THAT WERE READ FROM A USER-SUPPLIED BUFR DICTION...
subroutine pktdd(ID, LUN, IDN, IRET)
THIS SUBROUTINE STORES INFORMATION ABOUT A "CHILD" MNEMONIC WITHIN THE INTERNAL BUFR TABLE D ENTRY (I...
subroutine stbfdx(LUN, MESG)
THIS SUBROUTINE COPIES A BUFR TABLE (DICTIONARY) MESSAGE FROM THE INPUT ARRAY MESG INTO THE INTERNAL ...
subroutine stntbia(N, LUN, NUMB, NEMO, CELSQ)
THIS SUBROUTINE STORES A NEW ENTRY WITHIN INTERNAL BUFR TABLE A.
subroutine upc(CHR, NCHR, IBAY, IBIT, CNVNULL)
THIS SUBROUTINE UNPACKS AND RETURNS A CHARACTER STRING OF LENGTH NCHR CONTAINED WITHIN NCHR BYTES OF ...