SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/open_file.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE OPEN_FILE(HPROGRAM,KUNIT,HFILE,HFORM,HACTION,HACCESS,KRECL)
00003 !     #######################################################
00004 !
00005 !!****  *OPEN_FILE* - routine to open a namelist file
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      V. Masson   *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    01/2003 
00031 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.    DECLARATIONS
00034 !              ------------
00035 !
00036 #ifdef ASC
00037 USE MODI_OPEN_FILE_ASC
00038 #endif
00039 #ifdef FA
00040 USE MODI_OPEN_FILE_FA
00041 #endif
00042 #ifdef LFI
00043 USE MODI_OPEN_FILE_LFI
00044 #endif
00045 #ifdef OL
00046 USE MODI_OPEN_FILE_OL
00047 #endif
00048 #ifdef MNH
00049 USE MODI_OPEN_FILE_MNH
00050 #endif
00051 !
00052 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00053 USE PARKIND1  ,ONLY : JPRB
00054 !
00055 IMPLICIT NONE
00056 !
00057 !*       0.1   Declarations of arguments
00058 !              -------------------------
00059 !
00060  CHARACTER(LEN=6),  INTENT(IN)           :: HPROGRAM ! main program
00061 INTEGER,           INTENT(OUT)          :: KUNIT    ! logical unit
00062  CHARACTER(LEN=*),  INTENT(IN)           :: HFILE    ! file to open
00063  CHARACTER(LEN=*),  INTENT(IN)           :: HFORM    ! type of file
00064  CHARACTER(LEN=*),  INTENT(IN), OPTIONAL :: HACTION  ! action
00065  CHARACTER(LEN=*),  INTENT(IN), OPTIONAL :: HACCESS  ! access type
00066 INTEGER,           INTENT(IN), OPTIONAL :: KRECL    ! record length
00067 
00068 !
00069 !*       0.2   Declarations of local variables
00070 !              -------------------------------
00071 !
00072  CHARACTER(LEN=28) :: YFILE
00073  CHARACTER(LEN=11) :: YFORM
00074  CHARACTER(LEN=9)  :: YACTION
00075  CHARACTER(LEN=6)  :: YACCESS
00076 INTEGER           :: IRECL
00077 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00078 !
00079 !-------------------------------------------------------------------------------
00080 !
00081 IF (LHOOK) CALL DR_HOOK('OPEN_FILE',0,ZHOOK_HANDLE)
00082 YFILE = HFILE
00083 YFORM = HFORM
00084 IF (PRESENT(HACTION)) THEN
00085   YACTION = HACTION
00086 ELSE
00087   YACTION = 'READWRITE'
00088 END IF
00089 IF (PRESENT(HACCESS)) THEN
00090   YACCESS = HACCESS
00091 ELSE
00092   YACCESS = '      '
00093 END IF
00094 IF (PRESENT(KRECL)) THEN
00095   IRECL = KRECL
00096 ELSE
00097   IRECL = 0
00098 END IF
00099 !
00100 IF (HPROGRAM=='MESONH') THEN
00101 #ifdef MNH
00102   CALL OPEN_FILE_MNH(KUNIT,YFILE,YFORM,YACTION,YACCESS,IRECL)
00103 #endif
00104 ELSE IF (HPROGRAM=='OFFLIN') THEN
00105 #ifdef OL
00106   CALL OPEN_FILE_OL(KUNIT,YFILE,YFORM,YACTION,YACCESS,IRECL)
00107 #endif
00108 ELSE IF (HPROGRAM=='ASCII ' .OR. HPROGRAM=='AROME ') THEN
00109 #ifdef ASC || ARO
00110   CALL OPEN_FILE_ASC(KUNIT,YFILE,YFORM,YACTION,YACCESS,IRECL)
00111 #endif
00112 ELSE IF (HPROGRAM=='FA    ') THEN
00113 #ifdef FA
00114   CALL OPEN_FILE_FA(KUNIT,YFILE,YFORM,YACTION,YACCESS,IRECL)
00115 #endif
00116 ELSE IF (HPROGRAM=='LFI   ') THEN
00117 #ifdef LFI
00118   CALL OPEN_FILE_LFI(KUNIT,YFILE,YFORM,YACTION,YACCESS,'ASIS  ',IRECL)
00119 #endif
00120 END IF
00121 IF (LHOOK) CALL DR_HOOK('OPEN_FILE',1,ZHOOK_HANDLE)
00122 !
00123 !-------------------------------------------------------------------------------
00124 !
00125 END SUBROUTINE OPEN_FILE