22 RECURSIVE SUBROUTINE ufbget(LUNIT,TAB,I1,IRET,STR)
33 COMMON /usrstr/ nnod,ncon,nods(20),nodc(10),ivls(10),kons(10)
37 equivalence(cval,rval)
39 real*8 rval,tab(i1),
ups
50 CALL x84(lunit,my_lunit,1)
52 CALL ufbget(my_lunit,tab,my_i1,iret,str)
68 CALL status(lunit,lun,il,im)
98 IF(node.EQ.nods(nnod))
THEN
101 ELSEIF(
itp(node).EQ.1)
THEN
118 IF(
itp(node).EQ.1)
THEN
120 ELSEIF(
itp(node).EQ.2)
THEN
121 IF(ival.LT.2_8**(
ibt(node))-1) tab(i) =
ups(ival,node)
122 ELSEIF(
itp(node).EQ.3)
THEN
125 CALL upc(cval,
nbit(invn)/8,
mbay(1,lun),kbit,.true.)
137 900
CALL bort(
'BUFRLIB: UFBGET - INPUT BUFR FILE IS CLOSED, IT MUST'//
138 .
' BE OPEN FOR INPUT')
139 901
CALL bort(
'BUFRLIB: UFBGET - INPUT BUFR FILE IS OPEN FOR OUTPUT'//
140 .
', IT MUST BE OPEN FOR INPUT')
141 902
CALL bort(
'BUFRLIB: UFBGET - A MESSAGE MUST BE OPEN IN INPUT '//
142 .
'BUFR FILE, NONE ARE')
subroutine bort(STR)
Log one error message and abort application program.
function invwin(NODE, LUN, INV1, INV2)
This function looks for a specified node within the portion of the current subset buffer bounded by t...
This module contains array and variable declarations used to store BUFR messages internally for multi...
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 used to store the internal jump/link table.
integer, dimension(:), allocatable ibt
Bit widths corresponding to tag and typ:
integer, dimension(:), allocatable itp
Integer type values corresponding to typ:
This module contains array declarations for internal storage of pointers to BUFR data subset values.
integer, dimension(:), allocatable nbit
Length (in bits) of each packed data value in data subset.
integer, dimension(:), allocatable mbit
Pointer in data subset to first bit of each packed data value.
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.
integer, dimension(:,:), allocatable, target inv
Inventory pointer which links each data value to its corresponding node in the internal jump/link tab...
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 IM8B variable.
logical, public im8b
Status indicator to keep track of whether all future calls to BUFRLIB subroutines and functions from ...
recursive subroutine status(LUNIT, LUN, IL, IM)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
subroutine string(STR, LUN, I1, IO)
This subroutine checks to see if a user-specified character string is in the string cache (arrays in ...
recursive subroutine ufbget(LUNIT, TAB, I1, IRET, STR)
Read one or more data values from a data subset.
subroutine upb8(nval, nbits, ibit, ibay)
This subroutine decodes an 8-byte integer value from within a specified number of bits of an integer ...
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.
subroutine x48(IIN4, IOUT8, NVAL)
Encode one or more 4-byte integer values as 8-byte integer values.
subroutine x84(IIN8, IOUT4, NVAL)
Encode one or more 8-byte integer values as 4-byte integer values.