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)
115 idnb(n,lun) =
ifxy(numb)
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)
132 idnd(n,lun) =
ifxy(numb)
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
152 901 CALL
bort(
'BUFRLIB: STBFDX - UNEXPECTED DICTIONARY MESSAGE '//
153 .
'SUBTYPE OR LOCAL VERSION NUMBER (E.G., L.V.N. HIGHER THAN '//
155 902 CALL
bort(
'BUFRLIB: STBFDX - UNEXPECTED DICTIONARY MESSAGE '//
157 903
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
161 904 CALL
bort(
'BUFRLIB: STBFDX - BAD RETURN FROM BUFRLIB ROUTINE '//
162 .
'PKTDD, SEE PREVIOUS WARNING MESSAGE')
function iupb(MBAY, NBYT, NBIT)
THIS FUNCTION UNPACKS AND RETURNS A BINARY INTEGER WORD CONTAINED WITHIN NBIT BITS OF A BUFR MESSAGE ...
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...
This module contains array and variable declarations used to store DX BUFR tables internally for mult...
function idn30(ADN30, L30)
This function converts an FXY value from its 5 or 6 character representation to its bit-wise (integer...
subroutine upc(CHR, NCHR, IBAY, IBIT, CNVNULL)
THIS SUBROUTINE UNPACKS AND RETURNS A CHARACTER STRING OF LENGTH NCHR CONTAINED WITHIN NCHR BYTES OF ...
subroutine nenubd(NEMO, NUMB, LUN)
THIS SUBROUTINE CHECKS A MNEMONIC AND FXY VALUE PAIR THAT WERE READ FROM A USER-SUPPLIED BUFR DICTION...
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...
subroutine stbfdx(LUN, MESG)
THIS SUBROUTINE COPIES A BUFR TABLE (DICTIONARY) MESSAGE FROM THE INPUT ARRAY MESG INTO THE INTERNAL ...
subroutine pktdd(ID, LUN, IDN, IRET)
THIS SUBROUTINE STORES INFORMATION ABOUT A "CHILD" MNEMONIC WITHIN THE INTERNAL BUFR TABLE D ENTRY (I...
This module declares and initializes the MAXCD variable.
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
function iupbs01(MBAY, S01MNEM)
This function returns a specified value from within Section 0 or Section 1 of a BUFR message...
subroutine capit(STR)
This subroutine capitalizes all of the alphabetic characters in a string.
subroutine stntbia(N, LUN, NUMB, NEMO, CELSQ)
THIS SUBROUTINE STORES A NEW ENTRY WITHIN INTERNAL BUFR TABLE A.