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