25 RECURSIVE SUBROUTINE invmrg(LUBFI,LUBFJ)
31 COMMON /mrgcom/ nrpl,nmrg,namb,ntot
33 CHARACTER*128 bort_str
34 LOGICAL herei,herej,missi,missj,samei
45 CALL x84(lubfi,my_lubfi,1)
46 CALL x84(lubfj,my_lubfj,1)
47 CALL invmrg(my_lubfi,my_lubfj)
59 CALL status(lubfi,luni,il,im)
60 CALL status(lubfj,lunj,jl,jm)
65 DO WHILE(is.LE.
nval(luni))
72 IF(node.NE.nodj)
GOTO 900
80 IF(
typ(node).EQ.
'DRB') ioff = 0
81 IF(
typ(node).NE.
'DRB') ioff = 1
82 iwrds =
nwords(is,luni)+ioff
83 jwrds =
nwords(js,lunj)+ioff
84 IF(iwrds.GT.ioff .AND. jwrds.EQ.ioff)
THEN
85 DO n=
nval(lunj),js+1,-1
86 inv(n+iwrds-jwrds,lunj) =
inv(n,lunj)
87 val(n+iwrds-jwrds,lunj) =
val(n,lunj)
90 inv(js+n,lunj) =
inv(is+n,luni)
91 val(js+n,lunj) =
val(is+n,luni)
104 IF((ityp.EQ.2).OR.(ityp.EQ.3))
THEN
109 samei =
val(is,luni).EQ.
val(js,lunj)
110 IF(herei.AND.missj)
THEN
111 val(js,lunj) =
val(is,luni)
113 ELSEIF(herei.AND.herej.AND..NOT.samei)
THEN
131 900
WRITE(bort_str,
'("BUFRLIB: INVMRG - NODE FROM INPUT BUFR FILE '//
132 .
'(",I7,") DOES NOT EQUAL NODE FROM OUTPUT BUFR FILE (",I7,"), '//
133 .
'TABULAR MISMATCH")') node,nodj
subroutine bort(STR)
Log one error message and abort application program.
integer function ibfms(R8VAL)
Test whether a real*8 data value is "missing".
recursive subroutine invmrg(LUBFI, LUBFJ)
This subroutine merges parts of data subsets which have duplicate space and time coordinates but diff...
This module contains array and variable declarations used to store the internal jump/link table.
character *3, dimension(:), allocatable typ
Type indicators corresponding to tag:
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...
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 ...
function nwords(N, LUN)
This function adds up the complete length of the delayed replication sequence beginning at index N of...
recursive subroutine status(LUNIT, LUN, IL, IM)
Check whether a specified Fortran logical unit number is currently connected to the NCEPLIBS-bufr sof...
subroutine x84(IIN8, IOUT4, NVAL)
Encode one or more 8-byte integer values as 4-byte integer values.