57 CHARACTER*128 BORT_STR
59 equivalence(cval,rval)
62 integer(8) :: ival,lref,ninc,lps
68 lps(lbit) = max(2_8**(lbit)-1,1)
112 IF(ityp.EQ.1.OR.ityp.EQ.2)
THEN
116 CALL up8(lref,nbit,
mbay(1,lun),ibit)
117 CALL upb(linc, 6,
mbay(1,lun),ibit)
118 jbit = ibit + linc*(nsbs-1)
119 CALL up8(ninc,linc,
mbay(1,lun),jbit)
120 IF(ninc.EQ.lps(linc))
THEN
126 nbmp=ival;
CALL usrtpl(lun,n,nbmp)
129 IF(ival.LT.lps(nbit)) val(n,lun) =
ups(ival,node)
131 ibit = ibit + linc*msub(lun)
132 ELSEIF(ityp.EQ.3)
THEN
147 CALL upc(cref,nchr,
mbay(1,lun),ibit,.true.)
149 ibit = ibit + (lelm-8)*8
151 IF(nrst.GT.
mxrst)
GOTO 900
152 crtag(nrst) =
tag(node)
158 CALL upb(linc, 6,
mbay(1,lun),ibit)
166 jbit = ibit + linc*(nsbs-1)*8
173 CALL upc(cval,nchr,
mbay(1,lun),jbit,.true.)
175 IF (lelm.LE.8 .AND.
icbfms(cval,nchr).NE.0)
THEN
180 ibit = ibit + 8*linc*msub(lun)
185900
WRITE(bort_str,
'("BUFRLIB: RDCMPS - NUMBER OF LONG CHARACTER ' //
186 .
'STRINGS EXCEEDS THE LIMIT (",I4,")")')
mxrst
subroutine bort(STR)
This subroutine calls subroutine errwrt() to log an error message, then calls subroutine bort_exit() ...
integer function icbfms(STR, LSTR)
This function provides a handy way to check whether a character string returned from a previous call ...
integer function igetrfel(N, LUN)
THIS FUNCTION CHECKS WHETHER THE INPUT ELEMENT REFERS TO A PREVIOUS ELEMENT WITHIN THE SAME SUBSET VI...
This module contains array and variable declarations used to store BUFR messages internally for multi...
integer, dimension(:), allocatable mbyt
Length (in bytes) of current BUFR message for each internal I/O stream.
integer, dimension(:,:), allocatable mbay
Current BUFR message for each internal I/O stream.
This module contains array and variable declarations used to store the internal jump/link table.
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
This module declares and initializes the BMISS variable.
real *8, public bmiss
Current placeholder value to represent "missing" data when reading from or writing to BUFR files; thi...
This module declares and initializes the MXRST variable.
integer mxrst
Maximum number of "long" character strings (greater than 8 bytes) that can be read from a data subset...
subroutine rdcmps(LUN)
THIS SUBROUTINE UNCOMPRESSES AND UNPACKS THE NEXT SUBSET FROM THE INTERNAL COMPRESSED MESSAGE BUFFER ...
subroutine strbtm(N, LUN)
THIS SUBROUTINE STORES INTERNAL INFORMATION IN MODULE BITMAPS IF THE INPUT ELEMENT IS PART OF A BITMA...
subroutine up8(nval, nbits, ibay, ibit)
THIS SUBROUTINE UNPACKS AND RETURNS AN 8-BYTE INTEGER CONTAINED WITHIN NBITS BITS OF IBAY,...
subroutine upb(NVAL, NBITS, IBAY, IBIT)
THIS SUBROUTINE UNPACKS AND RETURNS A BINARY INTEGER CONTAINED WITHIN NBITS BITS OF IBAY,...
subroutine upc(CHR, NCHR, IBAY, IBIT, CNVNULL)
THIS SUBROUTINE UNPACKS AND RETURNS A CHARACTER STRING OF LENGTH NCHR CONTAINED WITHIN NCHR BYTES OF ...
real *8 function ups(IVAL, NODE)
THIS FUNCTION UNPACKS A REAL*8 USER VALUE FROM A PACKED BUFR INTEGER BY APPLYING THE PROPER SCALE AND...
subroutine usrtpl(LUN, INVN, NBMP)
THIS SUBROUTINE STORES THE SUBSET TEMPLATE INTO INTERNAL SUBSET ARRAYS IN MODULE USRINT FOR CASES OF ...