File: get_name_unit.F

package info (click to toggle)
emoslib 000382%2Bdfsg-2
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 49,276 kB
  • sloc: fortran: 90,253; ansic: 26,730; makefile: 417; sh: 388; f90: 276
file content (120 lines) | stat: -rwxr-xr-x 2,626 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
C Copyright 1981-2007 ECMWF
C 
C Licensed under the GNU Lesser General Public License which
C incorporates the terms and conditions of version 3 of the GNU
C General Public License.
C See LICENSE and gpl-3.0.txt for details.
C

      SUBROUTINE GET_NAME_UNIT(KREFERENCE,YNAME,YUNIT)
C
C**** *GET_NAME_UNIT*
C
C
C     PURPOSE.
C     --------
C          FIND NAME AND THE UNIT FOR THE PARTICULAR REFERENCE NUMBER.
C
C
C**   INTERFACE.
C     ----------
C
C          *CALL* *GET_NAME_UNIT(KREFERENCE,YNAME,YUNIT)*
C
C
C        INPUT : *KREFERENCE* - TABLE B REFERENCE NUMBER
C        OUTPUT:
C                *CNAMES*     -  ARRAY CONTAINING ELEMENT NAMES
C                *CUNITS*     -  ARRAY CONTAINING ELEMENT UNITS
C                *KERR*       -  RETURN CODE
C
C
C     METHOD.
C     -------
C
C          NONE.
C
C     EXTERNALS.
C     ----------
C
C          NONE.
C
C     REFERENCE.
C     ----------
C
C          NONE.
C
C     AUTHOR.
C     -------
C
C          M. DRAGOSAVAC    *ECMWF*       15/01/2006.
C
C
C     MODIFICATIONS.
C     --------------
C
C          NONE.
C
C
      IMPLICIT LOGICAL(L,O,G), CHARACTER*8(C,H,Y)

C
#     include "parameter.F"

      CHARACTER*64 YNAME
      CHARACTER*24 YUNIT
C
#     include "bcomtab.F"
#     include "bcomtabc.F"
C
      CHARACTER*64 CTABBEN
      CHARACTER*24 CTABBU
      DIMENSION KREF(11)
      CHARACTER*64  CN(11)

C
      DATA KREF/222000,235000,236000,237000,224000,225000,223000,
     1          232000,235000,999999,0/ 
      DATA CN/'QUALITY INFORMATION FOLLOW',
     1        'CANCEL BACKWARD DATA REFERENCE',
     2        'BACKWARD REFERENCE BIT MAP',
     3        'USE PREVIOUSLY DEFINED BIT MAP',
     4        'FIRST ORDER STATISTICS FOLLOW',
     5        'DIFFERENCE STATISTICAL VALUES FOLLOW',
     6        'SUBSTITUTED VALUES FOLLOW',
     7        'REPLACE/RETAINED VALUES FOLLOW',
     8        'CANCEL BACKWARD DATA REFERENCE',
     9        'ASSOCIATED FIELD',
     1        'REFERENCE VALUE'/ 
C
      KERR=0
      DO I=1,11
      IF(KREFERENCE.EQ.KREF(I)) THEN
         YNAME=CN(I)
         YUNIT=' '
         RETURN 
      END IF
      END DO
      IF(KREFERENCE/1000.EQ.205) THEN
        YNAME='CHARACTERS'
        YUNIT='CCITT IA5 '
        RETURN
      END IF
C
      ICLASS=KREFERENCE/1000
      IYYY  =KREFERENCE-ICLASS*1000+1
      ICLASS=ICLASS+1
C
      if(ICLASS.GT.64.or.IYYY.gt.256) then
         print*,'KREFERENCE=',KREFERENCE
         print*,'ICLASS=',ICLASS
         print*,'IYYY=',IYYY
         KERR=57
         RETURN
      end if
      I=NTABP(ICLASS,IYYY)
      YNAME=CTABBEN(I)
      YUNIT=CTABBU(I)
C
      RETURN
      END