Juan 8/12/2016: add management of LEN_HREC in MNH & SURFEX
[MNH-git_open_source-lfs.git] / src / SURFEX / read_prep_file_date.F90
1 !SURFEX_LIC Copyright 1994-2014 Meteo-France 
2 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C  licence
3 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SURFEX_LIC for details. version 1.
5 !     #########
6 SUBROUTINE READ_PREP_FILE_DATE(HPROGRAM,HFILE,HFILETYPE,TPTIME,KLUOUT)
7 !     #################################################################################
8 !
9 !!****  *READ_PREP_FILE_DATE* - reads the date for the surface
10 !!
11 !!    PURPOSE
12 !!    -------
13 !
14 !!**  METHOD
15 !!    ------
16 !!
17 !!    REFERENCE
18 !!    ---------
19 !!      
20 !!
21 !!    AUTHOR
22 !!    ------
23 !!     S. Malardel
24 !!
25 !!    MODIFICATIONS
26 !!    -------------
27 !!      Original    01/2004
28 !!      P. Le Moigne 10/2005, Phasage Arome
29 !!------------------------------------------------------------------
30 !
31 !
32 USE MODD_TYPE_DATE_SURF
33 USE MODD_IO_BUFF_n, ONLY : CREC, NREC
34 !
35 USE MODI_PREP_GRIB_GRID
36 USE MODI_READ_BUFFER
37 USE MODI_OPEN_AUX_IO_SURF
38 USE MODI_READ_SURF
39 USE MODI_CLOSE_AUX_IO_SURF
40 !
41 !
42 !
43 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
44 USE PARKIND1  ,ONLY : JPRB
45 !
46 IMPLICIT NONE
47 !
48 !*      0.1    declarations of arguments
49 !
50  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
51  CHARACTER(LEN=28),  INTENT(IN)  :: HFILE     ! name of file
52  CHARACTER(LEN=6),   INTENT(IN)  :: HFILETYPE ! file type
53 TYPE (DATE_TIME),   INTENT(OUT) :: TPTIME    ! grib date and time
54 INTEGER,            INTENT(IN)  :: KLUOUT    ! logical unit of output listing
55 !
56 !*      0.2    declarations of local variables
57 !
58  CHARACTER(LEN=LEN_HREC), DIMENSION(3000) :: HREC   ! list of records already read/written
59 INTEGER                            :: IREC
60  CHARACTER(LEN=6)              :: YINMODEL  ! model from which GRIB file originates
61  CHARACTER(LEN=10)             :: YGRIDTYPE ! Grid type
62 INTEGER                       :: IRESP     ! Error code after redding
63 REAL(KIND=JPRB) :: ZHOOK_HANDLE
64 !
65 !-------------------------------------------------------------------------------------
66 !
67 !*      1.     Reading date in a grib file
68 !              --------------------------
69 !
70 IF (LHOOK) CALL DR_HOOK('READ_PREP_FILE_DATE',0,ZHOOK_HANDLE)
71 IF(HFILETYPE=='GRIB  ') THEN
72 !
73   CALL PREP_GRIB_GRID(HFILE,KLUOUT,YINMODEL,YGRIDTYPE,TPTIME)
74 !
75 ELSE IF(HFILETYPE=='MESONH' .OR. HFILETYPE=='LFI   ' .OR. HFILETYPE=='ASCII ') THEN
76 !
77   HREC = CREC
78   IREC = NREC
79   CALL OPEN_AUX_IO_SURF(HFILE,HFILETYPE,'FULL  ')
80   CALL READ_SURF(HFILETYPE,'DTCUR           ',TPTIME,IRESP)
81   CALL CLOSE_AUX_IO_SURF(HFILE,HFILETYPE)
82   CREC = HREC
83   NREC = IREC
84 !
85 ELSE IF(HFILETYPE=='BUFFER') THEN
86 !
87  CALL READ_BUFFER('YEAR  ',TPTIME%TDATE%YEAR,IRESP)
88  CALL READ_BUFFER('MONTH ',TPTIME%TDATE%MONTH,IRESP)
89  CALL READ_BUFFER('DAY   ',TPTIME%TDATE%DAY,IRESP)
90  CALL READ_BUFFER('TIME  ',TPTIME%TIME,IRESP)
91 !
92 ELSE
93 !
94   WRITE(UNIT=KLUOUT, FMT=*) 'STOP IN READ_PREP_FILE_DATE'
95   WRITE(UNIT=KLUOUT,  FMT='("FILETYPE =",A6,"NOT SUPPORTED")') HFILETYPE 
96 !
97 ENDIF
98 IF (LHOOK) CALL DR_HOOK('READ_PREP_FILE_DATE',1,ZHOOK_HANDLE)
99 !
100 !-------------------------------------------------------------------------------------
101 END SUBROUTINE READ_PREP_FILE_DATE