SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE OPEN_FILE_LFI(KUNIT,HFILE,HFORM,HACTION,HACCESS,HPOSITION,KRECL) 00003 ! ####################################################### 00004 ! 00005 !!**** *OPEN_FILE_LFI* - routine to open a 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 USE MODD_IO_SURF_LFI, ONLY : CLUOUT_LFI 00037 ! 00038 ! 00039 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00040 USE PARKIND1 ,ONLY : JPRB 00041 ! 00042 USE MODI_ABOR1_SFX 00043 ! 00044 USE MODI_GET_LUOUT 00045 IMPLICIT NONE 00046 ! 00047 !* 0.1 Declarations of arguments 00048 ! ------------------------- 00049 ! 00050 INTEGER, INTENT(OUT):: KUNIT ! logical unit 00051 CHARACTER(LEN=28), INTENT(IN) :: HFILE ! file to open 00052 CHARACTER(LEN=11), INTENT(IN) :: HFORM ! type of file 00053 CHARACTER(LEN=9), INTENT(IN) :: HACTION ! action 00054 CHARACTER(LEN=6), INTENT(IN) :: HACCESS ! access type 00055 CHARACTER(LEN=6), INTENT(IN) :: HPOSITION! position type 00056 INTEGER, INTENT(IN) :: KRECL ! record length 00057 ! 00058 !* 0.2 Declarations of local variables 00059 ! ------------------------------- 00060 ! 00061 INTEGER :: ILUOUT 00062 INTEGER :: IRESP 00063 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00064 !------------------------------------------------------------------------------- 00065 ! 00066 IF (LHOOK) CALL DR_HOOK('OPEN_FILE_LFI',0,ZHOOK_HANDLE) 00067 CALL FMATTR(HFILE,CLUOUT_LFI,KUNIT,IRESP) 00068 ! 00069 IF (HFORM=='FORMATTED') THEN 00070 OPEN(UNIT=KUNIT,FILE=HFILE,ACTION=HACTION, & 00071 FORM=HFORM, POSITION=HPOSITION, ERR=100 ) 00072 ELSE 00073 IF (HACCESS=='DIRECT') THEN 00074 OPEN(UNIT=KUNIT,FILE=HFILE,ACTION=HACTION, & 00075 FORM=HFORM,ACCESS=HACCESS,RECL=KRECL, ERR=100 ) 00076 ELSE 00077 OPEN(UNIT=KUNIT,FILE=HFILE,ACTION=HACTION, & 00078 FORM=HFORM, ERR=100 ) 00079 END IF 00080 END IF 00081 ! 00082 IF (LHOOK) CALL DR_HOOK('OPEN_FILE_LFI',1,ZHOOK_HANDLE) 00083 RETURN 00084 100 CONTINUE 00085 CALL GET_LUOUT('LFI ',ILUOUT) 00086 WRITE(ILUOUT,*) 'Error when opening file ',HFILE 00087 CALL ABOR1_SFX('OPEN_FILE_LFI: ERROR WHEN OPENING FILE '//HFILE) 00088 IF (LHOOK) CALL DR_HOOK('OPEN_FILE_LFI',1,ZHOOK_HANDLE) 00089 !------------------------------------------------------------------------------- 00090 ! 00091 END SUBROUTINE OPEN_FILE_LFI