












  FUNCTION tool_datosec(date)

   !&E---------------------------------------------------------------------
   !&E                 ***  FUNCTION tool_datosec  ***
   !&E
   !&E ** Purpose : return the number of seconds elapsed since the origin date date_ref
   !&E
   !&E ** Description :
   !&E
   !&E ** Called by : sflx_rad (cas meteosat), tide_calcoef, init, meteo
   !&E
   !&E ** External calls : tool_decompdate
   !&E
   !&E ** Used ij-arrays : 
   !&E
   !&E ** Modified variables :
   !&E
   !&E ** Reference :
   !&E
   !&E ** History :
   !&E       !  2004-08-16
   !&E
   !&E---------------------------------------------------------------------
   !! * Modules used
!  USE parameters
!  USE comvars2d
   IMPLICIT NONE
   INTEGER,PARAMETER     :: rlg=8
   REAL(kind=rlg),PARAMETER :: tref = 59958230400_rlg

   !! * Declaration function
   REAL(kind=rlg)             :: tool_datosec

   !! * Arguments
   CHARACTER(len=19),INTENT(in) :: date

   !! * Local declarations
   INTEGER              :: annee, mois, jour, heure, minute, seconde
   INTEGER,DIMENSION(12),PARAMETER :: jours_avt_mois=(/0,31,59,90,120,151,181,212,243,273,304,334/)
   REAL(kind=rlg),PARAMETER   :: secs_in_minute=60.0_rlg,secs_in_heure=3600.0_rlg
   REAL(kind=rlg),PARAMETER   :: secs_in_jour=86400.0_rlg,secs_in_annee=secs_in_jour*365.0_rlg
   REAL(kind=rlg),PARAMETER   :: secs_in_siecle=secs_in_jour*36524.0_rlg
   REAL(kind=rlg)             :: total_secs

   !!----------------------------------------------------------------------
   !! * Executable part

   CALL tool_decompdate(date,jour,mois,annee,heure,minute,seconde)

   ! on ajoute le nombre de secondes pour chaque siecle depuis l origine
   total_secs = secs_in_siecle * INT(annee/100)

   ! on ajoute un jour tous les 400 ans (siecle bissextile)
   ! remarque : 0.9975 = (1 - 1/400) pour l annee 0 qui est bissextile
   total_secs = total_secs + secs_in_jour*INT(DBLE(annee)/400.0_rlg+0.9975_rlg)

   ! on ajoute chaque annee depuis le debut du dernier siecle
   total_secs = total_secs + secs_in_annee*MOD(annee,100)

   ! on ajoute un jour pour chaque annee bissextile depuis le dernier siecle
   total_secs = total_secs + secs_in_jour*INT((MOD(annee,100)-1)/4)

   ! on ajoute chaque mois depuis le debut de l annee
   total_secs = total_secs + jours_avt_mois(mois)*secs_in_jour

   ! on ajoute un jour si on est apres fevrier et que l annee est bissextile

   IF(mois > 2) THEN
     IF(MOD(annee,400) == 0) THEN
       total_secs = total_secs + secs_in_jour
     ELSE
       IF ((MOD(annee,4) == 0) .AND. (MOD(annee,100) /= 0)) &
         total_secs = total_secs + secs_in_jour
     ENDIF
   ENDIF

   ! on ajoute le nombre de jours entres en parametre
   total_secs = total_secs + secs_in_jour*(jour-1)

   ! on ajoute le nombre d heures entrees en parametre
   total_secs = total_secs + secs_in_heure*(heure)

   ! on ajoute le nombre de minutes entrees en parametre
   total_secs = total_secs + secs_in_minute*(minute)

   ! on ajoute le nombre de secondes entrees en parametre
   total_secs = total_secs + seconde
   tool_datosec = total_secs-tref

  END FUNCTION tool_datosec
