caldaj.f 3.5 KB
      subroutine caldaj (iday2,rseco2,iday1,rseco1,rtime,iconve,
     >                   idayd,rsecon,rduree,ier)
c*
c***********************************************************************
c*
c*          "Copyright [c] CNES 98 - tous droits reserves"
c*          **********************************************
c*
c*PRO MAGLIB
c*
c*VER 99.03.31 - V 1.0
c*VER 01.06.01 - V 2.0
c*VER 03.01.06 - V 2.1
c*
c*AUT spec. CISI - LAGARRIGUE
c*AUT prog. CISI (adaptation code MSLIB)
c* 
c*ROL Theme : Calculs de dates
c*ROL         Calcul en secondes de la duree entre deux dates juliennes 
c*ROL         CNES ou conversion de secondes en date julienne CNES, 
c*ROL         comptee a partir d'une date initiale.
c*
c*PAR iday2  (I) :  jour julien CNES a convertir (iconve = 0)
c*PAR rseco2 (I) :  nombre de secondes dans iday2 (iconve = 0)
c*PAR iday1  (I) :  jour julien CNES initial (iconve = 0 et iconve = 1)
c*PAR rseco1 (I) :  nombre de secondes dans iday1 (iconve = 0 et iconve = 1)
c*
c*PAR rtime  (I) :  nombre de secondes a ajouter (iconve = 1)
c*
c*PAR iconve (I) :  sens de la conversion
c*
c*PAR idayd  (O) :  jour julien CNES (iconve = 1)
c*PAR rsecon (O) :  nombre de secondes juliennes dans idayd (iconve = 1)
c*PAR rduree (O) :  duree en secondes juliennes (iconve = 0)
c*
c*PAR ier    (O) :  code de retour
c*
c*NOT iconve   0 :  conversion de date en secondes
c*NOT          1 :  conversion de secondes en date
c*
c*NOT ier        :  sans objet   
c*
c*INF utilise    : sans objet
c*
c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP
c*HST version 2.0 - 01.06.01 - correction de commentaires de code
c*HST version 2.1 - 03.01.06 - corrections en compilation avec g77
c*
c***********************************************************************
c*
      implicit none
c
c     ---------------------------------
c*FON Declaration identificateur rcs_id
c     ---------------------------------
c
      character rcs_id*100
c
c     --------------------------
c*FON Declaration des parametres
c     --------------------------
c
      integer iday2
      double precision rseco2
      integer iday1
      double precision rseco1, rtime
      integer iconve
      integer idayd
      double precision rsecon, rduree
      integer ier
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      integer ijouri
c*LOC ijouri : nombre de jours dans les secondes
c
      double precision rttamp
c*LOC rttamp : date en secondes
c
      SAVE
c
c     ---------------------------------
c*FON Affectation identificateur rcs_id
c     ---------------------------------
c
      data rcs_id /"
     >$Id$"/
c
c     ******************
c     Debut de programme
c     ******************
c
      ier = 0
c
c     ------------------------------
c*FON Conversion de date en secondes
c     ------------------------------
c
      if (iconve .eq. 0) then
c
         rduree = dble(iday2 - iday1)
         rduree = rduree * 86400.d0 + (rseco2 - rseco1)
         idayd = 0
         rsecon = 0.d0
c
      else
c
c     ------------------------------
c*FON Conversion de secondes en date
c     ------------------------------
c
         rttamp = rtime + rseco1
c
         if (rttamp .ge. 0.d0)  then
            ijouri = int(rttamp / 86400.d0)
         else
            ijouri = int(rttamp / 86400.d0) - 1
         endif
c
         idayd = iday1 + ijouri
         rsecon = rttamp - 86400.d0 * dble(ijouri)
         rduree = 0.d0
c
      endif
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end