33 RECURSIVE SUBROUTINE ufbcpy(LUBIN,LUBOT)
51 CALL x84(lubin,my_lubin,1)
52 CALL x84(lubot,my_lubot,1)
53 CALL ufbcpy(my_lubin,my_lubot)
62 CALL status(lubin,lui,il,im)
66 IF(
inode(lui).NE.
inv(1,lui))
GOTO 903
68 CALL status(lubot,luo,il,im)
75 . (
iok2cpy(lui,luo).NE.1) )
GOTO 907
95 900
CALL bort(
'BUFRLIB: UFBCPY - INPUT BUFR FILE IS CLOSED, IT MUST'//
96 .
' BE OPEN FOR INPUT')
97 901
CALL bort(
'BUFRLIB: UFBCPY - INPUT BUFR FILE IS OPEN FOR '//
98 .
'OUTPUT, IT MUST BE OPEN FOR INPUT')
99 902
CALL bort(
'BUFRLIB: UFBCPY - A MESSAGE MUST BE OPEN IN INPUT '//
100 .
'BUFR FILE, NONE ARE')
101 903
CALL bort(
'BUFRLIB: UFBCPY - LOCATION OF INTERNAL TABLE FOR '//
102 .
'INPUT BUFR FILE DOES NOT AGREE WITH EXPECTED LOCATION IN '//
103 .
'INTERNAL SUBSET ARRAY')
104 904
CALL bort(
'BUFRLIB: UFBCPY - OUTPUT BUFR FILE IS CLOSED, IT '//
105 .
'MUST BE OPEN FOR OUTPUT')
106 905
CALL bort(
'BUFRLIB: UFBCPY - OUTPUT BUFR FILE IS OPEN FOR '//
107 .
'INPUT, IT MUST BE OPEN FOR OUTPUT')
108 906
CALL bort(
'BUFRLIB: UFBCPY - A MESSAGE MUST BE OPEN IN OUTPUT '//
109 .
'BUFR FILE, NONE ARE')
110 907
CALL bort(
'BUFRLIB: UFBCPY - INPUT AND OUTPUT BUFR FILES MUST '//
111 .
'HAVE THE SAME INTERNAL TABLES, THEY ARE DIFFERENT HERE')
subroutine bort(STR)
Log one error message and abort application program.
integer function iok2cpy(LUI, LUO)
This function determines whether a BUFR message, or a data subset from within a BUFR message,...
This module contains declarations for arrays used to store information about the current BUFR message...
integer, dimension(:), allocatable inode
Table A mnemonic for type of BUFR message.
This module contains array and variable declarations used to store the internal jump/link table.
character *10, dimension(:), allocatable tag
Mnemonics in the jump/link table.
This module contains an array declaration used to store, for each I/O stream index,...
integer, dimension(:), allocatable luncpy
Logical unit numbers used to copy long character strings between BUFR data subsets.
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 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...
recursive subroutine ufbcpy(LUBIN, LUBOT)
Copy a BUFR data subset.
subroutine x84(IIN8, IOUT4, NVAL)
Encode one or more 8-byte integer values as 4-byte integer values.