SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/mode_write_surf_bin.F90
Go to the documentation of this file.
00001 !     ######spl
00002 MODULE MODE_WRITE_SURF_BIN
00003 !
00004 INTERFACE WRITE_SURF0_BIN
00005         MODULE PROCEDURE WRITE_SURFX0_BIN
00006         MODULE PROCEDURE WRITE_SURFN0_BIN
00007         MODULE PROCEDURE WRITE_SURFL0_BIN
00008         MODULE PROCEDURE WRITE_SURFC0_BIN
00009 END INTERFACE
00010 INTERFACE WRITE_SURFN_BIN
00011         MODULE PROCEDURE WRITE_SURFX1_BIN
00012         MODULE PROCEDURE WRITE_SURFN1_BIN
00013         MODULE PROCEDURE WRITE_SURFL1_BIN
00014         MODULE PROCEDURE WRITE_SURFX2_BIN
00015 END INTERFACE
00016 INTERFACE WRITE_SURFT_BIN
00017         MODULE PROCEDURE WRITE_SURFT0_BIN
00018         MODULE PROCEDURE WRITE_SURFT2_BIN
00019 END INTERFACE
00020 !
00021 CONTAINS
00022 !
00023 !     #############################################################
00024       SUBROUTINE WRITE_SURFX0_BIN(HREC,PFIELD,KRESP,HCOMMENT)
00025 !     #############################################################
00026 !
00027 !!****  * - routine to write a real scalar
00028 !
00029 USE MODI_ERROR_WRITE_SURF_BIN
00030 !
00031 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00032 USE PARKIND1  ,ONLY : JPRB
00033 !
00034 IMPLICIT NONE
00035 !
00036 !*      0.1   Declarations of arguments
00037 !
00038  CHARACTER(LEN=12),  INTENT(IN) :: HREC     ! name of the article to be read
00039 REAL,               INTENT(IN) :: PFIELD   ! the real scalar to be read
00040 INTEGER,            INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
00041  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
00042 !
00043 !*      0.2   Declarations of local variables
00044 !
00045 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00046 !
00047 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFX0_BIN',0,ZHOOK_HANDLE)
00048 !
00049 KRESP=0
00050 !
00051 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//HREC
00052 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00053 !plm WRITE(NUNIT,FMT=*,ERR=100) PFIELD
00054 
00055 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFX0_BIN',1,ZHOOK_HANDLE)
00056 RETURN
00057 !
00058 100 CONTINUE
00059  CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00060 !
00061 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFX0_BIN',1,ZHOOK_HANDLE)
00062 !
00063 END SUBROUTINE WRITE_SURFX0_BIN
00064 !
00065 !     #############################################################
00066       SUBROUTINE WRITE_SURFN0_BIN(HREC,KFIELD,KRESP,HCOMMENT)
00067 !     #############################################################
00068 !
00069 !!****  * - routine to write an integer
00070 !
00071 USE MODI_ERROR_WRITE_SURF_BIN
00072 !
00073 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00074 USE PARKIND1  ,ONLY : JPRB
00075 !
00076 IMPLICIT NONE
00077 !
00078 !*      0.1   Declarations of arguments
00079 !
00080  CHARACTER(LEN=12),  INTENT(IN) :: HREC     ! name of the article to be read
00081 INTEGER,            INTENT(IN) :: KFIELD   ! the integer to be read
00082 INTEGER,            INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
00083  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
00084 !
00085 !*      0.2   Declarations of local variables
00086 !
00087 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00088 !
00089 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFN0_BIN',0,ZHOOK_HANDLE)
00090 !
00091 KRESP=0
00092 !
00093 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//HREC
00094 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00095 !plm WRITE(NUNIT,FMT=*,ERR=100) KFIELD
00096 !
00097 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFN0_BIN',1,ZHOOK_HANDLE)
00098 RETURN
00099 !
00100 100 CONTINUE
00101  CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00102 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFN0_BIN',1,ZHOOK_HANDLE)
00103 !
00104 END SUBROUTINE WRITE_SURFN0_BIN
00105 !
00106 !     #############################################################
00107       SUBROUTINE WRITE_SURFL0_BIN(HREC,OFIELD,KRESP,HCOMMENT)
00108 !     #############################################################
00109 !
00110 !!****  * - routine to write a logical
00111 !
00112 USE MODI_ERROR_WRITE_SURF_BIN
00113 !
00114 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00115 USE PARKIND1  ,ONLY : JPRB
00116 !
00117 IMPLICIT NONE
00118 !
00119 !*      0.1   Declarations of arguments
00120 !
00121  CHARACTER(LEN=12),  INTENT(IN) :: HREC     ! name of the article to be read
00122 LOGICAL,            INTENT(IN) :: OFIELD   ! array containing the data field
00123 INTEGER,            INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
00124  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
00125 !
00126 !*      0.2   Declarations of local variables
00127 !
00128 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00129 !
00130 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFL0_BIN',0,ZHOOK_HANDLE)
00131 !
00132 KRESP=0
00133 !
00134 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//HREC
00135 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00136 !plm WRITE(NUNIT,FMT=*,ERR=100) OFIELD
00137 
00138 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFL0_BIN',1,ZHOOK_HANDLE)
00139 RETURN
00140 !
00141 100 CONTINUE
00142  CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00143 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFL0_BIN',1,ZHOOK_HANDLE)
00144 !
00145 END SUBROUTINE WRITE_SURFL0_BIN
00146 !
00147 !     #############################################################
00148       SUBROUTINE WRITE_SURFC0_BIN(HREC,HFIELD,KRESP,HCOMMENT)
00149 !     #############################################################
00150 !
00151 !!****  * - routine to write a character
00152 !
00153 USE MODI_ERROR_WRITE_SURF_BIN
00154 !
00155 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00156 USE PARKIND1  ,ONLY : JPRB
00157 !
00158 IMPLICIT NONE
00159 !
00160 !*      0.1   Declarations of arguments
00161 !
00162  CHARACTER(LEN=12),  INTENT(IN)  :: HREC      ! name of the article to be read
00163  CHARACTER(LEN=40),  INTENT(IN)  :: HFIELD    ! the integer to be read
00164 INTEGER,            INTENT(OUT) :: KRESP     ! KRESP  : return-code if a problem appears
00165  CHARACTER(LEN=100), INTENT(IN)  :: HCOMMENT  ! comment string
00166 !
00167 !*      0.2   Declarations of local variables
00168 !
00169 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00170 !
00171 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFC0_BIN',0,ZHOOK_HANDLE)
00172 !
00173 KRESP=0
00174 !
00175 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//HREC
00176 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00177 !plm WRITE(NUNIT,FMT='(A40)',ERR=100) HFIELD
00178 
00179 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFC0_BIN',1,ZHOOK_HANDLE)
00180 RETURN
00181 !
00182 100 CONTINUE
00183  CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00184 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFC0_BIN',1,ZHOOK_HANDLE)
00185 !
00186 END SUBROUTINE WRITE_SURFC0_BIN
00187 !
00188 !     #############################################################
00189       SUBROUTINE WRITE_SURFX1_BIN(HREC,PFIELD,KRESP,HCOMMENT,HDIR)
00190 !     #############################################################
00191 !
00192 !!****  * - routine to fill a write 1D array for the externalised surface 
00193 !
00194 USE MODD_SURFEX_MPI, ONLY : NRANK, NPIO, XTIME_NPIO_WRITE
00195 !
00196 USE MODD_IO_SURF_BIN,        ONLY : NMASK, NFULL, CMASK
00197 USE MODD_WRITE_BIN,          ONLY : CVAR, NVAR, NIND, NWRITE
00198 !
00199 USE MODI_ERROR_WRITE_SURF_BIN
00200 USE MODI_GATHER_AND_WRITE_MPI
00201 !
00202 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00203 USE PARKIND1  ,ONLY : JPRB
00204 !
00205 IMPLICIT NONE
00206 !
00207 #ifndef NOMPI
00208 INCLUDE "mpif.h"
00209 #endif
00210 !
00211 !*      0.1   Declarations of arguments
00212 !
00213  CHARACTER(LEN=12),   INTENT(IN) :: HREC     ! name of the article to be read
00214 REAL, DIMENSION(:),  INTENT(IN) :: PFIELD   ! array containing the data field
00215 INTEGER,             INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
00216  CHARACTER(LEN=100),  INTENT(IN) :: HCOMMENT ! comment string
00217  CHARACTER(LEN=1),    INTENT(IN) :: HDIR     ! type of field :
00218                                             ! 'H' : field with
00219                                             !       horizontal spatial dim.
00220                                             ! '-' : no horizontal dim.
00221 !*      0.2   Declarations of local variables
00222 !
00223 LOGICAL                           :: LWFL=.FALSE.
00224 REAL(KIND=4), DIMENSION(MAX(NFULL,SIZE(PFIELD)))    :: ZWORK   ! work array read in the file
00225 DOUBLE PRECISION   :: XTIME0
00226 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00227 !
00228 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFX1_BIN',0,ZHOOK_HANDLE)
00229 !
00230 KRESP=0
00231 !
00232  CALL GATHER_AND_WRITE_MPI(PFIELD,ZWORK,NMASK)
00233 !
00234 IF (NRANK==NPIO) THEN
00235   !
00236 #ifndef NOMPI  
00237   XTIME0 = MPI_WTIME()
00238 #endif
00239   !
00240 !$OMP SINGLE
00241   !  
00242   CALL INIT_WRITE_BIN(HREC,1,LWFL)
00243   !
00244   IF (LWFL) THEN 
00245     WRITE(NIND,REC=NWRITE,IOSTAT=KRESP) ZWORK
00246   ENDIF
00247   !
00248   IF (KRESP/=0) CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)  
00249   !
00250 !$OMP END SINGLE NOWAIT
00251   !  
00252 #ifndef NOMPI  
00253   XTIME_NPIO_WRITE = XTIME_NPIO_WRITE + (MPI_WTIME() - XTIME0)
00254 #endif
00255   !
00256 ENDIF
00257 !
00258 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFX1_BIN',1,ZHOOK_HANDLE)
00259 !
00260 END SUBROUTINE WRITE_SURFX1_BIN
00261 !
00262 !     #############################################################
00263       SUBROUTINE WRITE_SURFX2_BIN(HREC,PFIELD,KRESP,HCOMMENT,HDIR)
00264 !     #############################################################
00265 !
00266 !!****  * - routine to fill a write 2D array for the externalised surface 
00267 !
00268 USE MODD_SURFEX_MPI, ONLY : NRANK, NPIO, XTIME_NPIO_WRITE
00269 !
00270 USE MODD_IO_SURF_BIN,        ONLY : NMASK, NFULL
00271 USE MODD_WRITE_BIN,          ONLY : CVAR, NVAR, NIND, NWRITE
00272 !
00273 USE MODI_ERROR_WRITE_SURF_BIN
00274 USE MODI_GATHER_AND_WRITE_MPI
00275 !
00276 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00277 USE PARKIND1  ,ONLY : JPRB
00278 !
00279 IMPLICIT NONE
00280 !
00281 #ifndef NOMPI
00282 INCLUDE "mpif.h"
00283 #endif
00284 !
00285 !*      0.1   Declarations of arguments
00286 !
00287  CHARACTER(LEN=12),        INTENT(IN) :: HREC     ! name of the article to be read
00288 REAL, DIMENSION(:,:),     INTENT(IN) :: PFIELD   ! array containing the data field
00289 INTEGER,                  INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
00290  CHARACTER(LEN=100),       INTENT(IN) :: HCOMMENT ! comment string
00291  CHARACTER(LEN=1),         INTENT(IN) :: HDIR     ! type of field :
00292                                                  ! 'H' : field with
00293                                                  !       horizontal spatial dim.
00294                                                  ! '-' : no horizontal dim.
00295 !*      0.2   Declarations of local variables
00296 ! 
00297 LOGICAL :: LWFL=.FALSE.
00298 REAL(KIND=4), DIMENSION(MAX(NFULL,SIZE(PFIELD,1)),SIZE(PFIELD,2)) :: ZWORK   ! work array read in the file
00299 DOUBLE PRECISION   :: XTIME0
00300 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00301 !
00302 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFX2_BIN',0,ZHOOK_HANDLE)
00303 !
00304 KRESP=0
00305 !
00306  CALL GATHER_AND_WRITE_MPI(PFIELD,ZWORK,NMASK)
00307 !
00308 IF (NRANK==NPIO) THEN
00309   !
00310 #ifndef NOMPI   
00311   XTIME0 = MPI_WTIME()
00312 #endif
00313   !    
00314 !$OMP SINGLE
00315   !  
00316   CALL INIT_WRITE_BIN(HREC,SIZE(PFIELD,2),LWFL)
00317   !
00318   IF (LWFL) THEN
00319     WRITE(NIND,REC=NWRITE,IOSTAT=KRESP) ZWORK
00320   ENDIF
00321   !
00322   IF (KRESP/=0) CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00323   !
00324 !$OMP END SINGLE NOWAIT
00325   !  
00326 #ifndef NOMPI   
00327   XTIME_NPIO_WRITE = XTIME_NPIO_WRITE + (MPI_WTIME() - XTIME0)
00328 #endif
00329   !  
00330 ENDIF
00331 !
00332 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFX2_BIN',1,ZHOOK_HANDLE)
00333 !
00334 END SUBROUTINE WRITE_SURFX2_BIN
00335 !
00336 !     #############################################################
00337       SUBROUTINE WRITE_SURFN1_BIN(HREC,KFIELD,KRESP,HCOMMENT,HDIR)
00338 !     #############################################################
00339 !
00340 !!****  * - routine to write an integer array
00341 !
00342 USE MODI_ERROR_WRITE_SURF_BIN
00343 !
00344 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00345 USE PARKIND1  ,ONLY : JPRB
00346 !
00347 IMPLICIT NONE
00348 !
00349 !*      0.1   Declarations of arguments
00350 !
00351  CHARACTER(LEN=12),      INTENT(IN) :: HREC     ! name of the article to be read
00352 INTEGER, DIMENSION(:),  INTENT(IN) :: KFIELD   ! the integer to be read
00353 INTEGER,                INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
00354  CHARACTER(LEN=100),     INTENT(IN) :: HCOMMENT ! comment string
00355  CHARACTER(LEN=1),       INTENT(IN) :: HDIR     ! type of field :
00356                                                ! 'H' : field with
00357                                                !       horizontal spatial dim.
00358                                                ! '-' : no horizontal dim.
00359 !*      0.2   Declarations of local variables
00360 !
00361 !INTEGER, DIMENSION(NFULL) :: IWORK  ! work array read in the file
00362 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00363 !
00364 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFN1_BIN',0,ZHOOK_HANDLE)
00365 !
00366 KRESP = 0
00367 !
00368 !plm IF (HREC(1:8)=="EMISTIME") THEN
00369   !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//HREC
00370   !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00371   !plm WRITE(NUNIT,FMT='(100I8)',ERR=100) KFIELD
00372 
00373 !plm ELSE
00374   !plm CALL UNPACK_SAME_RANK(NMASK,KFIELD,IWORK(:))
00375 
00376   !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//HREC
00377   !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00378   !plm WRITE(NUNIT,FMT='(100I8)',ERR=100) IWORK
00379   !
00380 !plm ENDIF
00381 !
00382 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFN1_BIN',1,ZHOOK_HANDLE)
00383 RETURN
00384 !
00385 100 CONTINUE
00386  CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00387 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFN1_BIN',1,ZHOOK_HANDLE)
00388 !
00389 END SUBROUTINE WRITE_SURFN1_BIN
00390 !
00391 !     #############################################################
00392       SUBROUTINE WRITE_SURFL1_BIN(HREC,OFIELD,KRESP,HCOMMENT,HDIR)
00393 !     #############################################################
00394 !
00395 !!****  * - routine to write a logical array
00396 !
00397 USE MODI_ERROR_WRITE_SURF_BIN
00398 !
00399 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00400 USE PARKIND1  ,ONLY : JPRB
00401 !
00402 IMPLICIT NONE
00403 !
00404 !*      0.1   Declarations of arguments
00405 !
00406  CHARACTER(LEN=12),      INTENT(IN) :: HREC     ! name of the article to be read
00407 LOGICAL, DIMENSION(:),  INTENT(IN) :: OFIELD   ! array containing the data field
00408 INTEGER,                INTENT(OUT):: KRESP    ! KRESP  : return-code if a problem appears
00409  CHARACTER(LEN=100),     INTENT(IN) :: HCOMMENT ! comment string
00410  CHARACTER(LEN=1),       INTENT(IN) :: HDIR     ! type of field :
00411                                                ! 'H' : field with
00412                                                !       horizontal spatial dim.
00413                                                ! '-' : no horizontal dim.
00414 !*      0.2   Declarations of local variables
00415 !
00416 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00417 !
00418 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFL1_BIN',0,ZHOOK_HANDLE)
00419 !
00420 KRESP=0
00421 !
00422 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//HREC
00423 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00424 !plm WRITE(NUNIT,FMT=*,ERR=100) OFIELD
00425 
00426 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFL1_BIN',1,ZHOOK_HANDLE)
00427 RETURN
00428 !
00429 100 CONTINUE
00430  CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00431 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFL1_BIN',1,ZHOOK_HANDLE)
00432 !
00433 END SUBROUTINE WRITE_SURFL1_BIN
00434 !
00435 !     #############################################################
00436       SUBROUTINE WRITE_SURFT0_BIN(HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
00437 !     #############################################################
00438 !
00439 !!****  * - routine to write a date
00440 !
00441 USE MODI_ERROR_WRITE_SURF_BIN
00442 !
00443 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00444 USE PARKIND1  ,ONLY : JPRB
00445 !
00446 IMPLICIT NONE
00447 !
00448 !*      0.1   Declarations of arguments
00449 !
00450  CHARACTER(LEN=12),  INTENT(IN)  :: HREC     ! name of the article to be read
00451 INTEGER,            INTENT(IN)  :: KYEAR    ! year
00452 INTEGER,            INTENT(IN)  :: KMONTH   ! month
00453 INTEGER,            INTENT(IN)  :: KDAY     ! day
00454 REAL,               INTENT(IN)  :: PTIME    ! time
00455 INTEGER,            INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
00456  CHARACTER(LEN=100), INTENT(IN)  :: HCOMMENT ! comment string
00457 
00458 !*      0.2   Declarations of local variables
00459 !
00460 INTEGER, DIMENSION(3) :: ITDATE
00461 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00462 !
00463 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFT0_BIN',0,ZHOOK_HANDLE)
00464 KRESP=0
00465 !
00466 !plm ITDATE(1) = KYEAR
00467 !plm ITDATE(2) = KMONTH
00468 !plm ITDATE(3) = KDAY
00469 
00470 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//TRIM(HREC)//'%TDATE'
00471 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00472 !plm WRITE(NUNIT,FMT=*,ERR=100) ITDATE(:)
00473 
00474 !-------------------------------------------------------------------------------
00475 !
00476 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//TRIM(HREC)//'%TIME'
00477 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00478 !plm WRITE(NUNIT,FMT=*,ERR=100) PTIME
00479 
00480 !-------------------------------------------------------------------------------
00481 !
00482 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFT0_BIN',1,ZHOOK_HANDLE)
00483 RETURN
00484 !
00485 100 CONTINUE
00486  CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00487 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFT0_BIN',1,ZHOOK_HANDLE)
00488 !
00489 END SUBROUTINE WRITE_SURFT0_BIN
00490 !
00491 !     #############################################################
00492       SUBROUTINE WRITE_SURFT2_BIN(HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
00493 !     #############################################################
00494 !
00495 !!****  * - routine to write a date
00496 !
00497 USE MODI_ERROR_WRITE_SURF_BIN
00498 !
00499 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00500 USE PARKIND1  ,ONLY : JPRB
00501 !
00502 IMPLICIT NONE
00503 !
00504 !*      0.1   Declarations of arguments
00505 !
00506  CHARACTER(LEN=12),       INTENT(IN)  :: HREC     ! name of the article to be read
00507 INTEGER, DIMENSION(:,:), INTENT(IN)  :: KYEAR    ! year
00508 INTEGER, DIMENSION(:,:), INTENT(IN)  :: KMONTH   ! month
00509 INTEGER, DIMENSION(:,:), INTENT(IN)  :: KDAY     ! day
00510 REAL,    DIMENSION(:,:), INTENT(IN)  :: PTIME    ! time
00511 INTEGER,                 INTENT(OUT) :: KRESP    ! KRESP  : return-code if a problem appears
00512  CHARACTER(LEN=100),      INTENT(IN)  :: HCOMMENT ! comment string
00513 !
00514 !*      0.2   Declarations of local variables
00515 !
00516 INTEGER, DIMENSION(3,SIZE(KYEAR,1),SIZE(KYEAR,2)) :: ITDATE
00517 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00518 !
00519 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFT2_BIN',0,ZHOOK_HANDLE)
00520 KRESP=0
00521 !
00522 !plm ITDATE(1,:,:) = KYEAR  (:,:)
00523 !plm ITDATE(2,:,:) = KMONTH (:,:)
00524 !plm ITDATE(3,:,:) = KDAY   (:,:)
00525 
00526 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//TRIM(HREC)//'%TDATE'
00527 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00528 !plm WRITE(NUNIT,FMT=*,ERR=100) ITDATE(:,:,:)
00529 
00530 !-------------------------------------------------------------------------------
00531 !
00532 !plm WRITE(NUNIT,FMT=*,ERR=100) '&'//CMASK//' '//TRIM(HREC)//'%TIME'
00533 !plm WRITE(NUNIT,FMT='(A50)',ERR=100) HCOMMENT(1:50)
00534 !plm WRITE(NUNIT,FMT=*,ERR=100) PTIME
00535 
00536 !-------------------------------------------------------------------------------
00537 !
00538 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFT2_BIN',1,ZHOOK_HANDLE)
00539 RETURN
00540 !
00541 100 CONTINUE
00542  CALL ERROR_WRITE_SURF_BIN(HREC,KRESP)
00543 IF (LHOOK) CALL DR_HOOK('MODE_WRITE_SURF_BIN:WRITE_SURFT2_BIN',1,ZHOOK_HANDLE)
00544 !
00545 END SUBROUTINE WRITE_SURFT2_BIN
00546 
00547 END MODULE MODE_WRITE_SURF_BIN