SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/LIB/FM/fmreadc0.F90
Go to the documentation of this file.
00001 !     ######spl
00002       SUBROUTINE FMREADC0(HFILEM,HRECFM,HFIPRI,KLENG,HFIELD,KGRID,&
00003                            KLENCH,HCOMMENT,KRESP)
00004       USE PARKIND1, ONLY : JPRB
00005       USE YOMHOOK , ONLY : LHOOK, DR_HOOK
00006 !     #############################################################
00007 !
00008 !!****  *FMREADL1* - routine to read a logical scalar into a "FM"-file
00009 !!
00010 !!    PURPOSE
00011 !!    -------
00012 !
00013 !       The purpose of FMREADL0 is to convert the string into arrayr of
00014 !      integer(kind=8) and to call FM_READ without interface module
00015 !
00016 !!**  METHOD
00017 !!    ------
00018 !!
00019 !!    EXTERNAL
00020 !!    --------
00021 !!
00022 !!      FM_READ
00023 !!
00024 !!    IMPLICIT ARGUMENTS
00025 !!    ------------------
00026 !!
00027 !!
00028 !!    REFERENCE
00029 !!    ---------
00030 !!
00031 !!
00032 !!    AUTHOR
00033 !!    ------
00034 !!
00035 !!      V. MASSON      *METEO-FRANCE*
00036 !!
00037 !!    MODIFICATIONS
00038 !!    -------------
00039 !!
00040 !!      original                                                     06/08/97
00041 !----------------------------------------------------------------------------
00042 !
00043 !*      0.    DECLARATIONS
00044 !             ------------
00045 !
00046 USE MODD_FMDECLAR
00047 IMPLICIT NONE
00048 !
00049 !*      0.1   Declarations of arguments
00050 !
00051 CHARACTER(LEN=*)          ,INTENT(IN) ::HFILEM   ! file name
00052 CHARACTER(LEN=*)          ,INTENT(IN) ::HRECFM   ! name of the article to be written
00053 
00054 CHARACTER(LEN=*)          ,INTENT(IN) ::HFIPRI   ! file for prints in FM
00055 
00056 INTEGER,                   INTENT(IN) ::KLENG  ! length of the data field
00057 CHARACTER(LEN=*), &
00058                            INTENT(OUT)::HFIELD ! array containing the data field
00059 INTEGER,                   INTENT(OUT)::KGRID  ! C-grid indicator (u,v,w,T)
00060 INTEGER,                   INTENT(OUT)::KLENCH ! length of comment string
00061 
00062 CHARACTER(LEN=*)     ,INTENT(OUT)::HCOMMENT ! comment string
00063 
00064 INTEGER,                   INTENT(OUT)::KRESP  ! return-code if problems araised
00065 !
00066 !*      0.2   Declarations of local variables
00067 !
00068 INTEGER                                      :: JLOOP
00069 CHARACTER(LEN=JPXKRK)                        ::YCOMMENT 
00070 INTEGER(KIND=8), DIMENSION(:), ALLOCATABLE   :: IFIELD
00071 INTEGER                                      :: ILENG
00072 !-------------------------------------------------------------------------------
00073 !
00074 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00075 IF (LHOOK) CALL DR_HOOK('FMREADC0',0,ZHOOK_HANDLE)
00076 ILENG=LEN(HFIELD)
00077 ALLOCATE(IFIELD(ILENG))
00078 !
00079 CALL FM_READ(HFILEM,HRECFM,HFIPRI,ILENG,IFIELD,KGRID,KLENCH,YCOMMENT,KRESP)
00080 !
00081 IF(KRESP==0) THEN
00082   DO JLOOP=1,ILENG
00083    HFIELD(JLOOP:JLOOP)=ACHAR(IFIELD(JLOOP))
00084   END DO
00085   HCOMMENT = YCOMMENT
00086 END IF
00087 !
00088 DEALLOCATE(IFIELD)
00089 !-------------------------------------------------------------------------------
00090 IF (LHOOK) CALL DR_HOOK('FMREADC0',1,ZHOOK_HANDLE)
00091 END SUBROUTINE FMREADC0