wrf svn trunk commit r4103
[wrffire.git] / wrfv2_fire / var / external / bufr / mesgbf.inc
blob1ce978919b9bdc00a7450ebd92b393ee5e423f36
1       SUBROUTINE MESGBF (LUNIT, MESGTYP) 
2                                                                         
3 !$$$  SUBPROGRAM DOCUMENTATION BLOCK                                    
4 !                                                                       
5 ! SUBPROGRAM:    MESGBF                                                 
6 !   PRGMMR: WOOLLEN          ORG: NP20       DATE: 1994-01-06           
7 !                                                                       
8 ! ABSTRACT: THIS SUBROUTINE READS AND EXAMINES SECTION 1 OF MESSAGES    
9 !  IN A BUFR FILE IN SEQUENCE UNTIL IT FINDS THE FIRST MESSAGE THAT     
10 !  IS NOT A BUFR TABLE (DICTIONARY) (I.E., NOT MESSAGE TYPE 11).  IT    
11 !  THEN RETURNS THE MESSAGE TYPE FOR THIS FIRST NON-DICTIONARY MESSAGE. 
12 !  THE BUFR FILE SHOULD NOT BE OPEN VIA BUFR ARCHIVE LIBRARY SUBROUTINE 
13 !  OPENBF PRIOR TO CALLING THIS SUBROUTINE HOWEVER THE BUFR FILE MUST   
14 !  BE CONNECTED TO UNIT LUNIT.  THIS SUBROUTINE IS IDENTICAL TO BUFR    
15 !  ARCHIVE LIBRARY SUBROUTINE MESGBC EXCEPT MESGBC RETURNS THE MESSAGE  
16 !  TYPE FOR THE FIRST NON-DICTIONARY MESSAGE THAT ACTUALLY CONTAINS     
17 !  REPORT DATA (WHEREAS MESGBF WOULD RETURN THE REPORT TYPE OF A DUMMY  
18 !  MESSAGE CONTAINING THE CENTER TIME FOR DUMP FILES), AND MESGBC ALSO  
19 !  INDICATES WHETHER OR NOT THE FIRST REPORT DATA MESSAGE CONTAINS      
20 !  REPORT DATA IS BUFR COMPRESSED.  (MESGBC ALSO HAS AN OPTION TO       
21 !  OPERATE ON THE CURRENT BUFR STORED IN MEMORY, SOMETHING MESGBF       
22 !  CANNOT DO.)                                                          
23 !                                                                       
24 ! PROGRAM HISTORY LOG:                                                  
25 ! 1994-01-06  J. WOOLLEN -- ORIGINAL AUTHOR                             
26 ! 2000-09-19  J. WOOLLEN -- MAXIMUM MESSAGE LENGTH INCREASED FROM       
27 !                           10,000 TO 20,000 BYTES                      
28 ! 2003-11-04  S. BENDER  -- ADDED REMARKS/BUFRLIB ROUTINE               
29 !                           INTERDEPENDENCIES                           
30 ! 2003-11-04  D. KEYSER  -- UNIFIED/PORTABLE FOR WRF; ADDED             
31 !                           DOCUMENTATION (INCLUDING HISTORY)           
32 ! 2004-08-09  J. ATOR    -- MAXIMUM MESSAGE LENGTH INCREASED FROM       
33 !                           20,000 TO 50,000 BYTES                      
34 ! 2005-11-29  J. ATOR    -- USE IUPBS01 AND RDMSGW                      
35 !                                                                       
36 ! USAGE:    CALL MESGBF (LUNIT, MESGTYP)                                
37 !   INPUT ARGUMENT LIST:                                                
38 !     LUNIT    - INTEGER: FORTRAN LOGICAL UNIT NUMBER FOR BUFR FILE     
39 !                                                                       
40 !   OUTPUT ARGUMENT LIST:                                               
41 !     MESGTYP  - INTEGER: BUFR MESSAGE TYPE FOR FIRST NON-DICTIONARY    
42 !                MESSAGE                                                
43 !                      -1 = no messages read or error                   
44 !                      11 = if only BUFR table messages in BUFR file    
45 !                                                                       
46 !   INPUT FILES:                                                        
47 !     UNIT "LUNIT" - BUFR FILE                                          
48 !                                                                       
49 ! REMARKS:                                                              
50 !    THIS ROUTINE CALLS:        IUPBS01  RDMSGW   WRDLEN                
51 !    THIS ROUTINE IS CALLED BY: None                                    
52 !                               Normally called only by application     
53 !                               programs.                               
54 !                                                                       
55 ! ATTRIBUTES:                                                           
56 !   LANGUAGE: FORTRAN 77                                                
57 !   MACHINE:  PORTABLE TO ALL PLATFORMS                                 
58 !                                                                       
59 !$$$                                                                    
60                                                                         
61       INCLUDE 'bufrlib.prm' 
62                                                                         
63       DIMENSION MBAY (MXMSGLD4) 
64                                                                         
65 !-----------------------------------------------------------------------
66 !-----------------------------------------------------------------------
67                                                                         
68       MESGTYP = - 1 
69                                                                         
70 !  SINCE OPENBF HAS NOT YET BEEN CALLED, MUST CALL WRDLEN TO GET        
71 !  MACHINE INFO NEEDED LATER                                            
72 !  -------------------------------------------------------------        
73                                                                         
74       CALL WRDLEN 
75                                                                         
76 !  READ PAST ANY BUFR TABLES AND RETURN THE FIRST MESSAGE TYPE FOUND    
77 !  -----------------------------------------------------------------    
78                                                                         
79       REWIND LUNIT 
80                                                                         
81     1 CALL RDMSGW (LUNIT, MBAY, IER) 
82       IF (IER.LT.0) GOTO 100 
83                                                                         
84       MESGTYP = IUPBS01 (MBAY, 'MTYP') 
85       IF (MESGTYP.EQ.11) GOTO 1 
86                                                                         
87       REWIND LUNIT 
88                                                                         
89 !  EXIT                                                                 
90 !  ----                                                                 
91                                                                         
92   100 RETURN 
93       END SUBROUTINE MESGBF