SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
open_file_lfi.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_lfi(KUNIT,HFILE,HFORM,HACTION,HACCESS,HPOSITION,KRECL)
7 ! #######################################################
8 !
9 !!**** *OPEN_FILE_LFI* - routine to open a 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 ! 10/2014 : test if file exist for 'read' E. Martin
36 !-------------------------------------------------------------------------------
37 !
38 !* 0. DECLARATIONS
39 ! ------------
40 !
41 USE modd_io_surf_lfi, ONLY : cluout_lfi
42 !
43 !
44 USE yomhook ,ONLY : lhook, dr_hook
45 USE parkind1 ,ONLY : jprb
46 !
47 USE modi_abor1_sfx
48 !
49 USE modi_get_luout
50 IMPLICIT NONE
51 !
52 !* 0.1 Declarations of arguments
53 ! -------------------------
54 !
55 INTEGER, INTENT(OUT):: kunit ! logical unit
56  CHARACTER(LEN=28), INTENT(IN) :: hfile ! file to open
57  CHARACTER(LEN=11), INTENT(IN) :: hform ! type of file
58  CHARACTER(LEN=9), INTENT(IN) :: haction ! action
59  CHARACTER(LEN=6), INTENT(IN) :: haccess ! access type
60  CHARACTER(LEN=6), INTENT(IN) :: hposition! position type
61 INTEGER, INTENT(IN) :: krecl ! record length
62 !
63 !* 0.2 Declarations of local variables
64 ! -------------------------------
65 !
66 INTEGER :: iluout
67 INTEGER :: iresp
68 REAL(KIND=JPRB) :: zhook_handle
69 LOGICAL :: lexist
70 !-------------------------------------------------------------------------------
71 !
72 IF (lhook) CALL dr_hook('OPEN_FILE_LFI',0,zhook_handle)
73  CALL fmattr(hfile,cluout_lfi,kunit,iresp)
74 !
75 IF(haction=='READ ') THEN
76  INQUIRE (file=hfile,exist=lexist)
77  IF (.NOT. lexist ) THEN
78  CALL abor1_sfx('ERROR WHILE OPENING '//hfile//' THIS FILE IS MISSING'// &
79  ' IN THE RUN DIRECTORY')
80  ENDIF
81 ENDIF
82 
83 IF (hform=='FORMATTED') THEN
84  OPEN(unit=kunit,file=hfile,action=haction, &
85  form=hform, position=hposition, err=100 )
86 ELSE
87  IF (haccess=='DIRECT') THEN
88  OPEN(unit=kunit,file=hfile,action=haction, &
89  form=hform,access=haccess,recl=krecl, err=100 )
90  ELSE
91  OPEN(unit=kunit,file=hfile,action=haction, &
92  form=hform, err=100 )
93  END IF
94 END IF
95 !
96 IF (lhook) CALL dr_hook('OPEN_FILE_LFI',1,zhook_handle)
97 RETURN
98 100 CONTINUE
99  CALL get_luout('LFI ',iluout)
100 WRITE(iluout,*) 'Error when opening file ',hfile
101  CALL abor1_sfx('OPEN_FILE_LFI: ERROR WHEN OPENING FILE '//hfile)
102 IF (lhook) CALL dr_hook('OPEN_FILE_LFI',1,zhook_handle)
103 !-------------------------------------------------------------------------------
104 !
105 END SUBROUTINE open_file_lfi
subroutine open_file_lfi(KUNIT, HFILE, HFORM, HACTION, HACCESS, HPOSITION, KRECL)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6