28 CHARACTER*128 BORT_STR
30 equivalence(cval,rval)
33 integer(8) :: ival,lref,ninc,lps
39 lps(lbit) = max(2_8**(lbit)-1,1)
83 IF(ityp.EQ.1.OR.ityp.EQ.2)
THEN
89 jbit =
ibit + linc*(nsbs-1)
90 CALL up8(ninc,linc,
mbay(1,lun),jbit)
91 IF(ninc.EQ.lps(linc))
THEN
102 IF(ival.LT.lps(nbit))
val(n,lun) =
ups(ival,node)
105 ELSEIF(ityp.EQ.3)
THEN
139 jbit =
ibit + linc*(nsbs-1)*8
146 CALL upc(cval,nchr,
mbay(1,lun),jbit,.true.)
148 IF (lelm.LE.8 .AND.
icbfms(cval,nchr).NE.0)
THEN
158 900
WRITE(bort_str,
'("BUFRLIB: RDCMPS - NUMBER OF LONG CHARACTER ' //
159 .
'STRINGS EXCEEDS THE LIMIT (",I4,")")')
mxrst
subroutine bort(STR)
Log one error message and abort application program.
recursive 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 ibit
Bit pointer within IBAY.
integer, dimension(:,:), allocatable mbay
Current BUFR message for each internal I/O stream.
integer, dimension(:), allocatable mbyt
Length (in bytes) of current BUFR message for each internal I/O stream.
This module contains declarations for arrays used to store information about the current BUFR message...
integer, dimension(:), allocatable msub
Total number of data subsets in message.
integer, dimension(:), allocatable nsub
Current subset pointer within message.
This module contains array and variable declarations needed to store information about long character...
integer nrst
Number of long character strings in data subset.
integer, dimension(:), allocatable irnch
Lengths (in bytes) of long character strings.
integer, dimension(:), allocatable irbit
Pointers in data subset to first bits of long character strings.
character *10, dimension(:), allocatable crtag
Table B mnemonics associated with long character strings.
This module contains an array declaration used to store a status code for each internal I/O stream in...
integer, dimension(:), allocatable iscodes
Abnormal status codes.
This module contains array and variable declarations used to store the internal jump/link table.
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
This module contains declarations for arrays used to store data values and associated metadata for th...
integer, dimension(:), allocatable nval
Number of data values in BUFR data subset.
real *8, dimension(:,:), allocatable, target val
Data values.
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
integer, dimension(:,:), allocatable nrfelm
Referenced data value, for data values which refer to a previous data value in the BUFR data subset v...
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)
Read the next compressed BUFR data subset into internal arrays.
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 decodes an 8-byte integer value from within a specified number of bits of an integer ...
subroutine upb(NVAL, NBITS, IBAY, IBIT)
This subroutine decodes an integer value from within a specified number of bits of an integer array,...
subroutine upc(CHR, NCHR, IBAY, IBIT, CNVNULL)
Decode a character string from an integer array.
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)
Store the subset template into internal arrays.