<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='CPBFDX'><A href='../../html_code/bufr/cpbfdx.f.html#CPBFDX' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>
SUBROUTINE CPBFDX(LUD,LUN) 7,2
C$$$ SUBPROGRAM DOCUMENTATION BLOCK
C
C SUBPROGRAM: CPBFDX
C PRGMMR: WOOLLEN ORG: NP20 DATE: 1994-01-06
C
C ABSTRACT: THIS SUBROUTINE COPIES BUFR TABLE (DICTIONARY) MESSAGES
C FROM ONE LOCATION TO ANOTHER WITHIN INTERNAL MEMORY (ARRAYS IN
C COMMON BLOCKS /MSGCWD/ AND /TABABD/).
C
C PROGRAM HISTORY LOG:
C 1994-01-06 J. WOOLLEN -- ORIGINAL AUTHOR
C 1995-06-28 J. WOOLLEN -- INCREASED THE SIZE OF INTERNAL BUFR TABLE
C ARRAYS IN ORDER TO HANDLE BIGGER FILES
C 1999-11-18 J. WOOLLEN -- THE NUMBER OF BUFR FILES WHICH CAN BE
C OPENED AT ONE TIME INCREASED FROM 10 TO 32
C (NECESSARY IN ORDER TO PROCESS MULTIPLE
C BUFR FILES UNDER THE MPI)
C 2003-11-04 S. BENDER -- ADDED REMARKS/BUFRLIB ROUTINE
C INTERDEPENDENCIES
C 2003-11-04 D. KEYSER -- UNIFIED/PORTABLE FOR WRF; ADDED
C DOCUMENTATION (INCLUDING HISTORY)
C
C USAGE: CALL CPBFDX
(LUD, LUN)
C INPUT ARGUMENT LIST:
C LUD - INTEGER: I/O STREAM INDEX INTO INTERNAL MEMORY ARRAYS
C FOR INPUT TABLE LOCATION
C LUN - INTEGER: I/O STREAM INDEX INTO INTERNAL MEMORY ARRAYS
C FOR OUTPUT TABLE LOCATION
C
C REMARKS:
C THIS ROUTINE CALLS: DXINIT
C THIS ROUTINE IS CALLED BY: MAKESTAB READDX WRDXTB
C Normally not called by any application
C programs.
C
C ATTRIBUTES:
C LANGUAGE: FORTRAN 77
C MACHINE: PORTABLE TO ALL PLATFORMS
C
C$$$
INCLUDE 'bufrlib.prm'
COMMON /MSGCWD/ NMSG(NFILES),NSUB(NFILES),MSUB(NFILES),
. INODE(NFILES),IDATE(NFILES)
COMMON /TABABD/ NTBA(0:NFILES),NTBB(0:NFILES),NTBD(0:NFILES),
. MTAB(MAXTBA,NFILES),IDNA(MAXTBA,NFILES,2),
. IDNB(MAXTBB,NFILES),IDND(MAXTBD,NFILES),
. TABA(MAXTBA,NFILES),TABB(MAXTBB,NFILES),
. TABD(MAXTBD,NFILES)
CHARACTER*600 TABD
CHARACTER*128 TABB
CHARACTER*128 TABA
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
C INITIALIZE THE DICTIONARY TABLE PARTITION
C -----------------------------------------
CALL DXINIT
(LUN,0)
C COPY ONE TABLE PARTITION TO ANOTHER
C -----------------------------------
c .... Positional index for Table A mnem.
INODE(LUN) = INODE(LUD)
c .... Set the number of Table A entries
NTBA(LUN) = NTBA(LUD)
c .... Set the number of Table B entries
NTBB(LUN) = NTBB(LUD)
c .... Set the number of Table D entries
NTBD(LUN) = NTBD(LUD)
c .... Copy Table A entries
DO I=1,NTBA(LUD)
c .... Message type
IDNA(I,LUN,1) = IDNA(I,LUD,1)
c .... Message subtype
IDNA(I,LUN,2) = IDNA(I,LUD,2)
c .... Table A entries
TABA(I,LUN) = TABA(I,LUD)
c .... Pointer indices into internal tbl
MTAB(I,LUN) = MTAB(I,LUD)
ENDDO
c .... Copy Table B entries
DO I=1,NTBB(LUD)
c .... Integer repr. of FXY descr.
IDNB(I,LUN) = IDNB(I,LUD)
c .... Table B entries
TABB(I,LUN) = TABB(I,LUD)
ENDDO
c .... Copy Table D entries
DO I=1,NTBD(LUD)
c .... Integer repr. of FXY descr.
IDND(I,LUN) = IDND(I,LUD)
c .... Table B entries
TABD(I,LUN) = TABD(I,LUD)
ENDDO
RETURN
END