NCEPLIBS-bufr  11.7.0
 All Data Structures Files Functions Variables Pages
numtbd.f
Go to the documentation of this file.
1 C> @file
2 C> @brief Search for a Table B or Table D descriptor within the
3 C> internal DX BUFR tables
4 
5 C> This subroutine searches for a descriptor within Table B and
6 C> Table D of the internal DX BUFR tables.
7 C>
8 C> @author J. Woollen
9 C> @date 2002-05-14
10 C>
11 C> @param[in] LUN -- integer: Internal I/O stream index associated
12 C> with DX BUFR tables
13 C> @param[in] IDN -- integer: Bit-wise representation of FXY value
14 C> for Table B or Table D descriptor
15 C> @param[out] NEMO -- character*(*): Mnemonic associated with IDN
16 C> @param[out] TAB -- character: Type associated with IDN
17 C> - 'B' = Table B descriptor
18 C> - 'D' = Table D descriptor
19 C> @param[out] IRET -- integer:
20 C> - Positional index of IDN within internal
21 C> Table B, if TAB = 'B'
22 C> - Positional index of IDN within internal
23 C> Table D, if TAB = 'D'
24 C> - 0, otherwise
25 C>
26 C> <b>Program history log:</b>
27 C> | Date | Programmer | Comments |
28 C> | -----|------------|----------|
29 C> | 2002-05-14 | J. Woollen | Original author |
30 C> | 2003-11-04 | S. Bender | Added remarks and routine interdependencies |
31 C> | 2003-11-04 | D. Keyser | Unified/portable for WRF; added history documentation |
32 C> | 2009-04-21 | J. Ator | Use ifxy() for more efficient searching |
33 C> | 2014-12-10 | J. Ator | Use modules instead of COMMON blocks |
34 C>
35  SUBROUTINE numtbd(LUN,IDN,NEMO,TAB,IRET)
36 
37  USE moda_tababd
38 
39  CHARACTER*(*) nemo
40  CHARACTER*1 tab
41 
42 C-----------------------------------------------------------------------
43 C-----------------------------------------------------------------------
44 
45  nemo = ' '
46  iret = 0
47  tab = ' '
48 
49  IF(idn.GE.ifxy('300000')) THEN
50 
51 C LOOK FOR IDN IN TABLE D
52 C -----------------------
53 
54  DO i=1,ntbd(lun)
55  IF(idn.EQ.idnd(i,lun)) THEN
56  nemo = tabd(i,lun)(7:14)
57  tab = 'D'
58  iret = i
59  goto 100
60  ENDIF
61  ENDDO
62 
63  ELSE
64 
65 C LOOK FOR IDN IN TABLE B
66 C -----------------------
67 
68  DO i=1,ntbb(lun)
69  IF(idn.EQ.idnb(i,lun)) THEN
70  nemo = tabb(i,lun)(7:14)
71  tab = 'B'
72  iret = i
73  goto 100
74  ENDIF
75  ENDDO
76 
77  ENDIF
78 
79 C EXIT
80 C ----
81 
82 100 RETURN
83  END
This module contains array and variable declarations used to store DX BUFR tables internally for mult...
Definition: moda_tababd.F:10
subroutine numtbd(LUN, IDN, NEMO, TAB, IRET)
This subroutine searches for a descriptor within Table B and Table D of the internal DX BUFR tables...
Definition: numtbd.f:35
function ifxy(ADSC)
This function converts an FXY value from its 6 character representation to its bit-wise (integer) rep...
Definition: ifxy.f:42