wrf svn trunk commit r4103
[wrffire.git] / wrfv2_fire / var / external / bufr / ufbqcd.inc
blobdbed370596f783844e9463b806d58d960228dfcb
1       SUBROUTINE UFBQCD (LUNIT, NEMO, QCD) 
2                                                                         
3 !$$$  SUBPROGRAM DOCUMENTATION BLOCK                                    
4 !                                                                       
5 ! SUBPROGRAM:    UFBQCD                                                 
6 !   PRGMMR: WOOLLEN          ORG: NP20       DATE: 1994-01-06           
7 !                                                                       
8 ! ABSTRACT: THIS SUBROUTINE READS IN A MNEMONIC KNOWN TO BE IN THE BUFR 
9 !   TABLE ASSOCIATED WITH THE BUFR FILE IN LOGICAL UNIT LUNIT, AND      
10 !   RETURNS THE DESCRIPTOR ENTRY (Y) ASSOCIATED WITH IT WHEN THE FXY    
11 !   DESCRIPTOR IS A SEQUENCE DESCRIPTOR (F=3) WITH TABLE D CATEGORY 63  
12 !   (X=63).  THIS ROUTINE WILL NOT WORK FOR ANY OTHER TYPE OF           
13 !   DESCRIPTOR OR ANY OTHER SEQUENCE DESCRIPTOR TABLE D CATEGORY.       
14 !   LUNIT MUST ALREADY BE OPENED FOR INPUT OR OUTPUT VIA A CALL TO      
15 !   OPENBF.  THIS ROUTINE IS ESPECIALLY USEFUL WHEN THE CALLING PROGRAM 
16 !   IS WRITING "EVENTS" TO AN OUTPUT BUFR FILE (USUALLY THE "PREPBUFR"  
17 !   FILE) USING THE SAME BUFR TABLE SINCE THE DESCRIPTOR ENTRY (Y) HERE 
18 !   DEFINES THE EVENT PROGRAM CODE.  THUS, THE CALLING PROGRAM CAN PASS 
19 !   THE PROGRAM CODE INTO VARIOUS EVENTS WITHOUT ACTUALLY KNOWING ITS   
20 !   VALUE AS LONG AS IT KNOWS THE MNEMONIC NAME ASSOCIATED WITH IT.     
21 !                                                                       
22 ! PROGRAM HISTORY LOG:                                                  
23 ! 1994-01-06  J. WOOLLEN -- ORIGINAL AUTHOR                             
24 ! 1998-07-08  J. WOOLLEN -- REPLACED CALL TO CRAY LIBRARY ROUTINE       
25 !                           "ABORT" WITH CALL TO NEW INTERNAL BUFRLIB   
26 !                           ROUTINE "BORT"                              
27 ! 2003-11-04  S. BENDER  -- ADDED REMARKS/BUFRLIB ROUTINE               
28 !                           INTERDEPENDENCIES                           
29 ! 2003-11-04  D. KEYSER  -- UNIFIED/PORTABLE FOR WRF; ADDED             
30 !                           DOCUMENTATION (INCLUDING HISTORY); OUTPUTS  
31 !                           MORE COMPLETE DIAGNOSTIC INFO WHEN ROUTINE  
32 !                           TERMINATES ABNORMALLY                       
33 !                                                                       
34 ! USAGE:    CALL UFBQCD (LUNIT, NEMO, QCD)                              
35 !   INPUT ARGUMENT LIST:                                                
36 !     LUNIT    - INTEGER: FORTRAN LOGICAL UNIT NUMBER FOR BUFR FILE     
37 !                (ASSOCIATED BUFR TABLE MAY BE INTERNAL OR EXTERNAL)    
38 !     NEMO     - CHARACTER*(*): MNEMONIC                                
39 !                                                                       
40 !   OUTPUT ARGUMENT LIST:                                               
41 !     QCD      - REAL: SEQUENCE DESCRIPTOR ENTRY (I.E., EVENT PROGRAM   
42 !                CODE) IN BUFR TABLE ASSOCIATED WITH NEMO (Y IN FXY     
43 !                DESCRIPTOR, WHERE F=3 AND X=63)                        
44 !                                                                       
45 ! REMARKS:                                                              
46 !    THIS SUBROUTINE IS THE INVERSE OF BUFR ARCHIVE LIBRARY ROUTINE     
47 !    UFBQCP.                                                            
48 !                                                                       
49 !    THIS ROUTINE CALLS:        ADN30    BORT     NEMTAB   STATUS       
50 !    THIS ROUTINE IS CALLED BY: None                                    
51 !                               Normally called only by application     
52 !                               programs.                               
53 !                                                                       
54 ! ATTRIBUTES:                                                           
55 !   LANGUAGE: FORTRAN 77                                                
56 !   MACHINE:  PORTABLE TO ALL PLATFORMS                                 
57 !                                                                       
58 !$$$                                                                    
59                                                                         
60       CHARACTER ( * ) NEMO 
61       CHARACTER(128) BORT_STR 
62       CHARACTER(6) FXY, ADN30 
63       CHARACTER(1) TAB 
64                                                                         
65 !-----------------------------------------------------------------------
66 !-----------------------------------------------------------------------
67                                                                         
68       CALL STATUS (LUNIT, LUN, IL, IM) 
69       IF (IL.EQ.0) GOTO 900 
70                                                                         
71       CALL NEMTAB (LUN, NEMO, IDN, TAB, IRET) 
72       IF (TAB.NE.'D') GOTO 901 
73                                                                         
74       FXY = ADN30 (IDN, 6) 
75       IF (FXY (2:3) .NE.'63') GOTO 902 
76       READ (FXY (4:6) , '(F3.0)', ERR = 903) QCD 
77                                                                         
78 !  EXITS                                                                
79 !  -----                                                                
80                                                                         
81       RETURN 
82   900 CALL BORT ('BUFRLIB: UFBQCD - BUFR FILE IS CLOSED, IT MUST BE'//' &
83      &OPEN')                                                            
84   901 WRITE (BORT_STR, '("BUFRLIB: UFBQCD - INPUT MNEMONIC ",A," NOT '//&
85       'DEFINED AS A SEQUENCE DESCRIPTOR IN BUFR TABLE")') NEMO          
86       CALL BORT (BORT_STR) 
87   902 WRITE (BORT_STR, '("BUFRLIB: UFBQCD - BUFR TABLE SEQ. DESCRIPTOR '&
88      &//'ASSOC. WITH INPUT MNEMONIC ",A," HAS INVALID CATEGORY ",A," -'/&
89      &/' CATEGORY MUST BE 63")') NEMO, FXY (2:3)                        
90       CALL BORT (BORT_STR) 
91   903 WRITE (BORT_STR, '("BUFRLIB: UFBQCD - ERROR READING ENTRY '//'(PRO&
92      &GRAM CODE) FROM BUFR TBL SEQ. DESCRIPTOR ",A," ASSOC. '//'WITH INP&
93      &UT MNEM. ",A)') FXY, NEMO                                         
94       CALL BORT (BORT_STR) 
95       END SUBROUTINE UFBQCD