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 A DESCRIPTOR FROM ITS FIVE OR SIX CHARACTER ASCII REPRESENTATION TO ITS BIT-WI...
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 RETURNS THE INTEGER CORRESPONDING TO THE BIT-WISE REPRESENTATION OF AN INPUT CHARACTER ...
function igetntbi(LUN, CTB)
THIS FUNCTION RETURNS THE NEXT AVAILABLE INDEX FOR STORING AN ENTRY WITHIN INTERNAL BUFR TABLE CTB...
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...
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 A STRING OF CHARACTERS.
This module declares and initializes the MAXCD variable.
subroutine stntbia(N, LUN, NUMB, NEMO, CELSQ)
THIS SUBROUTINE STORES A NEW ENTRY WITHIN INTERNAL BUFR TABLE A.