wrf svn trunk commit r4103
[wrffire.git] / wrfv2_fire / var / external / bufr / mova2i.inc
blob56cb1474587ef383c70a3e5f4e785971ee8f2ba8
1       FUNCTION MOVA2I (A) 
2                                                                         
3 !$$$  SUBPROGRAM DOCUMENTATION BLOCK                                    
4 !                                                                       
5 ! SUBPROGRAM:    MOVA2I                                                 
6 !   PRGMMR: GILBERT          ORG: NP11       DATE: 2003-11-04           
7 !                                                                       
8 ! ABSTRACT: THIS FUNCTION COPIES A BIT STRING FROM A CHARACTER*1        
9 !   VARIABLE TO AN INTEGER VARIABLE.  IT IS INTENDED TO REPLACE THE     
10 !   FORTRAN INTRINSIC FUNCTION ICHAR, WHICH ONLY SUPPORTS VALUES OF     
11 !   ICHAR(A) BETWEEN ZERO AND 127, INCLUSIVE ON SOME PLATFORMS (E.G.,   
12 !   THE NCEP IBM SP).  IF "A" IS GREATER THAN 127 IN THE COLLATING      
13 !   SEQUENCE, ICHAR(A) DOES NOT RETURN THE EXPECTED BIT VALUE.  THIS    
14 !   FUNCTION CAN BE USED FOR ALL VALUES OF ICHAR(A) BETWEEN ZERO AND    
15 !   255.  SINCE THIS FUNCTION IS PRESENT IN THE W3 LIBRARIES (IN C      
16 !   LANGUAGE), AND SINCE IT IS NO LONGER CALLED BY ANY BUFR ARCHIVE     
17 !   LIBRARY ROUTINES, IT MAY BE REMOVED FROM THE BUFR ARCHIVE LIBRARY   
18 !   IN A FUTURE VERSION.  USERS SHOULD MIGRATE TO MOVA2I IN THE W3      
19 !   LIBRARIES WHICH IS USED IN THE SAME WAY AS MOVA2I IS USED HERE.     
20 !                                                                       
21 ! PROGRAM HISTORY LOG:                                                  
22 ! 2003-11-04  S. GILBERT -- ORIGINAL AUTHOR                             
23 ! 2003-11-04  D. KEYSER  -- UNIFIED/PORTABLE FOR WRF                    
24 ! 2005-11-29  D. KEYSER  -- MARKED AS OBSOLETE AND ADDED PRINT          
25 !                           NOTIFICATION                                
26 !                                                                       
27 ! USAGE:    CALL MOVA2I (A)                                             
28 !   INPUT ARGUMENT LIST:                                                
29 !     A        - CHARACTER*1: VARIABLE THAT HOLDS THE BITSTRING TO      
30 !                EXTRACT                                                
31 !                                                                       
32 !   OUTPUT ARGUMENT LIST:                                               
33 !     MOVA2I   - INTEGER: VALUE OF THE BITSTRING IN CHARACTER A         
34 !                                                                       
35 ! REMARKS:                                                              
36 !    THIS ROUTINE CALLS:        None                                    
37 !    THIS ROUTINE IS CALLED BY: None                                    
38 !                               Possibly called by application          
39 !                               programs?                               
40 !                                                                       
41 ! ATTRIBUTES:                                                           
42 !   LANGUAGE: FORTRAN 77                                                
43 !   MACHINE:  PORTABLE TO ALL PLATFORMS                                 
44 !                                                                       
45 !$$$                                                                    
46                                                                         
47       COMMON / QUIET / IPRT 
48                                                                         
49       CHARACTER(1) A 
50       CHARACTER(4) CTEMP 
51       INTEGER ITEMP, FF 
52                                                                         
53       EQUIVALENCE (CTEMP, ITEMP) 
54                                                                         
55       DATA IFIRST / 0 / 
56                                                                         
57       SAVE IFIRST 
58                                                                         
59       IF (IFIRST.EQ.0) THEN 
60          IF (IPRT.GE.0) THEN 
61             PRINT * 
62       PRINT * , '+++++++++++++++++BUFR ARCHIVE LIBRARY++++++++++++++++++&
63      &++'                                                               
64             PRINT 101 
65   101 FORMAT(' BUFRLIB: MOVA2I - THIS SUBROUTINE IS NOW OBSOLETE; ',    &
66      & 'USE IDENTICAL SUBROUTINE MOVA2I IN W3 LIBRARIES INSTEAD')       
67       PRINT * , '+++++++++++++++++BUFR ARCHIVE LIBRARY++++++++++++++++++&
68      &++'                                                               
69             PRINT * 
70          ENDIF 
71          IFIRST = 1 
72       ENDIF 
73                                                                         
74       FF = 255 
75       CTEMP = A//A//A//A 
76       MOVA2I = IAND (ITEMP, FF) 
77       RETURN 
78       END FUNCTION MOVA2I