SURFEX v7.3
General documentation of Surfex
|
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