SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
open_file.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE open_file(HPROGRAM,KUNIT,HFILE,HFORM,HACTION,HACCESS,KRECL)
7 ! #######################################################
8 !
9 !!**** *OPEN_FILE* - routine to open a namelist file
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !!** METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !!
21 !! IMPLICIT ARGUMENTS
22 !! ------------------
23 !!
24 !! REFERENCE
25 !! ---------
26 !!
27 !!
28 !! AUTHOR
29 !! ------
30 !! V. Masson *Meteo France*
31 !!
32 !! MODIFICATIONS
33 !! -------------
34 !! Original 01/2003
35 !-------------------------------------------------------------------------------
36 !
37 !* 0. DECLARATIONS
38 ! ------------
39 !
40 #if defined(SFX_ASC) || defined(SFX_ARO) || defined(SFX_MNH) || defined(SFX_NC)
41 USE modi_open_file_asc
42 #endif
43 #ifdef SFX_FA
44 USE modi_open_file_fa
45 #endif
46 #ifdef SFX_LFI
47 USE modi_open_file_lfi
48 #endif
49 #ifdef SFX_NC
50 USE modi_open_file_nc
51 #endif
52 #ifdef SFX_OL
53 USE modi_open_file_ol
54 #endif
55 #ifdef SFX_MNH
56 USE modi_open_file_mnh
57 #endif
58 !
59 USE yomhook ,ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 IMPLICIT NONE
63 !
64 !* 0.1 Declarations of arguments
65 ! -------------------------
66 !
67  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! main program
68 INTEGER, INTENT(OUT) :: kunit ! logical unit
69  CHARACTER(LEN=*), INTENT(IN) :: hfile ! file to open
70  CHARACTER(LEN=*), INTENT(IN) :: hform ! type of file
71  CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: haction ! action
72  CHARACTER(LEN=*), INTENT(IN), OPTIONAL :: haccess ! access type
73 INTEGER, INTENT(IN), OPTIONAL :: krecl ! record length
74 
75 !
76 !* 0.2 Declarations of local variables
77 ! -------------------------------
78 !
79  CHARACTER(LEN=28) :: yfile
80  CHARACTER(LEN=11) :: yform
81  CHARACTER(LEN=9) :: yaction
82  CHARACTER(LEN=6) :: yaccess
83 INTEGER :: irecl
84 REAL(KIND=JPRB) :: zhook_handle
85 !
86 !-------------------------------------------------------------------------------
87 !
88 IF (lhook) CALL dr_hook('OPEN_FILE',0,zhook_handle)
89 !
90 yfile = hfile
91 yform = hform
92 IF (present(haction)) THEN
93  yaction = haction
94 ELSE
95  yaction = 'READWRITE'
96 END IF
97 IF (present(haccess)) THEN
98  yaccess = haccess
99 ELSE
100  yaccess = ' '
101 END IF
102 IF (present(krecl)) THEN
103  irecl = krecl
104 ELSE
105  irecl = 0
106 END IF
107 !
108 IF (hprogram=='MESONH') THEN
109 #ifdef SFX_MNH
110  CALL open_file_mnh(kunit,yfile,yform,yaction,yaccess,irecl)
111 #endif
112 ELSE IF (hprogram=='OFFLIN') THEN
113 #ifdef SFX_OL
114  CALL open_file_ol(kunit,yfile,yform,yaction,yaccess,irecl)
115 #endif
116 ELSE IF (hprogram=='ASCII ' .OR. hprogram=='AROME ') THEN
117 #if defined(SFX_ASC) || defined(SFX_ARO) || defined(SFX_MNH) || defined(SFX_NC)
118  CALL open_file_asc(kunit,yfile,yform,yaction,yaccess,irecl)
119 #endif
120 ELSE IF (hprogram=='FA ') THEN
121 #ifdef SFX_FA
122  CALL open_file_fa(kunit,yfile,yform,yaction,yaccess,irecl)
123 #endif
124 ELSE IF (hprogram=='NC ') THEN
125 #ifdef SFX_NC
126  CALL open_file_nc(kunit,yfile,yform,yaction,yaccess,irecl)
127 #endif
128 ELSE IF (hprogram=='LFI ') THEN
129 #ifdef SFX_LFI
130  CALL open_file_lfi(kunit,yfile,yform,yaction,yaccess,'ASIS ',irecl)
131 #endif
132 END IF
133 !
134 IF (lhook) CALL dr_hook('OPEN_FILE',1,zhook_handle)
135 !
136 !-------------------------------------------------------------------------------
137 !
138 END SUBROUTINE open_file
subroutine open_file_nc(KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
Definition: open_file_nc.F90:6
subroutine open_file_lfi(KUNIT, HFILE, HFORM, HACTION, HACCESS, HPOSITION, KRECL)
subroutine open_file_asc(KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
subroutine open_file_ol(KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
Definition: open_file_ol.F90:6
subroutine open_file(HPROGRAM, KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
Definition: open_file.F90:6
subroutine open_file_fa(KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
Definition: open_file_fa.F90:6