<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='GETTBH'><A href='../../html_code/bufr/gettbh.f.html#GETTBH' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>
SUBROUTINE GETTBH ( LUNS, LUNL, TAB, IMT, IMTV, IOGCE, ILTV ) 3,5
C$$$ SUBPROGRAM DOCUMENTATION BLOCK
C
C SUBPROGRAM: GETTBH
C PRGMMR: ATOR ORG: NP12 DATE: 2007-01-19
C
C ABSTRACT: THIS SUBROUTINE READS AND PARSES THE HEADER LINES FROM TWO
C SEPARATE (I.E. ONE STANDARD AND ONE LOCAL) ASCII FILES CONTAINING
C EITHER MASTER TABLE B OR MASTER TABLE D INFORMATION.
C
C PROGRAM HISTORY LOG:
C 2007-01-19 J. ATOR -- ORIGINAL AUTHOR
C
C USAGE: CALL GETTBH
( LUNS, LUNL, TAB, IMT, IMTV, IOGCE, ILTV )
C
C INPUT ARGUMENT LIST:
C LUNS - INTEGER: FORTRAN LOGICAL UNIT NUMBER OF ASCII FILE
C CONTAINING STANDARD TABLE INFORMATION
C LUNL - INTEGER: FORTRAN LOGICAL UNIT NUMBER OF ASCII FILE
C CONTAINING LOCAL TABLE INFORMATION
C TAB - CHARACTER*1: TABLE TYPE ('B' OR 'D')
C
C OUTPUT ARGUMENT LIST:
C IMT - INTEGER: MASTER TABLE, READ FROM EACH ASCII FILE
C (NOTE: THESE VALUES MUST BE THE SAME IN EACH FILE!)
C IMTV - INTEGER: VERSION NUMBER OF MASTER TABLE, READ FROM
C STANDARD ASCII FILE
C IOGCE - INTEGER: ORIGINATING CENTER, READ FROM LOCAL ASCII FILE
C ILTV - INTEGER: VERSION NUMBER OF LOCAL TABLE, READ FROM
C LOCAL ASCII FILE
C
C REMARKS:
C THIS ROUTINE CALLS: BORT IGETNTBL PARSTR VALX
C THIS ROUTINE IS CALLED BY: RDMTBB RDMTBD
C Also called by application programs.
C
C ATTRIBUTES:
C LANGUAGE: FORTRAN 77
C MACHINE: PORTABLE TO ALL PLATFORMS
C
C$$$
CHARACTER*128 BORT_STR
CHARACTER*40 HEADER
CHARACTER*30 TAGS(5), LABEL
CHARACTER*3 CFTYP
CHARACTER*2 CTTYP
CHARACTER*1 TAB
LOGICAL BADLABEL
C-----------------------------------------------------------------------
C Statement function to check for bad header line label:
BADLABEL ( LABEL ) = ( ( INDEX ( LABEL, CTTYP ) .EQ. 0 ) .OR.
. ( INDEX ( LABEL, CFTYP ) .EQ. 0 ) )
C-----------------------------------------------------------------------
CTTYP = TAB // ' '
C Read and parse the header line of the standard file.
CFTYP = 'STD'
IF ( IGETNTBL ( LUNS, HEADER ) .NE. 0 ) GOTO 900
CALL PARSTR
( HEADER, TAGS, 5, NTAG, '|', .FALSE. )
IF ( NTAG .LT. 3 ) GOTO 900
IF ( BADLABEL ( TAGS(1) ) ) GOTO 900
IMT = VALX ( TAGS(2) )
IMTV = VALX ( TAGS(3) )
C Read and parse the header line of the local file.
CFTYP = 'LOC'
IF ( IGETNTBL ( LUNL, HEADER ) .NE. 0 ) GOTO 900
CALL PARSTR
( HEADER, TAGS, 5, NTAG, '|', .FALSE. )
IF ( NTAG .LT. 4 ) GOTO 900
IF ( BADLABEL ( TAGS(1) ) ) GOTO 900
IMT2 = VALX ( TAGS(2) )
IOGCE = VALX ( TAGS(3) )
ILTV = VALX ( TAGS(4) )
C Verify that both files are for the same master table.
IF ( IMT .NE. IMT2 ) GOTO 901
RETURN
900 WRITE(BORT_STR,'("BUFRLIB: GETTBH - BAD OR MISSING HEADER '//
. 'WITHIN ",A," TABLE ",A)') CFTYP, TAB
CALL BORT
(BORT_STR)
901 WRITE(BORT_STR,'("BUFRLIB: GETTBH - MASTER TABLE NUMBER '//
. 'MISMATCH BETWEEN STD AND LOC TABLE ",A)') TAB
CALL BORT
(BORT_STR)
END