75 INTEGER(KIND=4) :: kan,kmo,kqu,ihe,imi,imiv,ihev,iquv,imov,ianv,ilze
 
   76 REAL(KIND=8) :: psssss,pstati
 
   78 REAL(KIND=8) :: zsssss,zdj,zsv
 
   80 character*200 clzue,clze,clech
 
   90 zsssss=(zsssss-
real(ihe))*60.
 
   92 zsssss=zsssss-
real(imi)
 
   96 if(pstati < 3600.) 
then 
  102                 zech=pstati/60. ; clzue=
'mn' 
  103 elseif(pstati < 259200.) 
then 
  109                 zech=pstati/3600. ; clzue=
'h' 
  116                 zech=pstati/86400. ; clzue=
'j' 
  121 write(clze,fmt=
'(f9.2)') zech
 
  126 if(clze(len_trim(clze)-2:len_trim(clze)) == 
'.00') 
then 
  127                 clze=clze(1:len_trim(clze)-3)
 
  131 clech=clze(1:ilze)//clzue
 
  138 if(imi == 0 .and. imiv == 0) 
then 
  145                 write(cdtit,fmt=
'(a,i2,a,i2.2,a,i4.4,a,i2.2,3a,i2,a,i2.2,a,i4.4,a,i2.2,a)')&
 
  146                 &
'BASE ',kqu,
'.',kmo,
'.',kan,
' ',ihe,
'h UTC + ',clech(1:len_trim(clech))&
 
  147                 &,
', VALID ',iquv,
'.',imov,
'.',ianv,
' ',ihev,
'h UTC' 
  155                 write(cdtit,fmt=
'(a,i2,a,i2.2,a,i4.4,a,i2.2,a,i2.2,3a,i2,a,i2.2,a,i4.4,a,i2.2,a,i2.2,a)')&
 
  156                 &
'BASE ',kqu,
'.',kmo,
'.',kan,
' ',ihe,
':',imi,
' UTC + ',clech(1:len_trim(clech))&
 
  157                 &,
' VALID ',iquv,
'.',imov,
'.',ianv,
' ',ihev,
':',imiv,
' UTC' 
  160 subroutine datc(kaaaa,kmm,kqq,khh,kmi,kss,kjs,cdjs,cddt)
 
  193 INTEGER(KIND=4) :: idatat(8)
 
  194 INTEGER(KIND=4) :: kjs
 
  195 INTEGER(KIND=4) :: kss
 
  196 INTEGER(KIND=4) :: kmi
 
  197 INTEGER(KIND=4) :: khh
 
  198 INTEGER(KIND=4) :: kqq
 
  199 INTEGER(KIND=4) :: kmm
 
  200 INTEGER(KIND=4) :: kaaaa
 
  201 INTEGER(KIND=4) :: iaaaammqq
 
  202 INTEGER(KIND=4) :: ijoursem
 
  204 character*200 clgol1,clgol2,clgol3
 
  207 character*3 cljour(0:6)
 
  208 data cljour/
'Dim',
'Lun',
'Mar',
'Mer',
'Jeu',
'Ven',
'Sam'/
 
  217 call date_and_time(clgol1,clgol2,clgol3,idatat)
 
  223 read(clgol1,fmt=
'(i4,2i2)') kaaaa,kmm,kqq
 
  229 read(clgol2,fmt=
'(2i2)') khh,kmi
 
  230 read(clgol2(5:),fmt=*) zs
 
  232 read(clgol1,fmt=
'(i8)') iaaaammqq
 
  238 kjs=ijoursem(iaaaammqq)
 
  245 write(cddt,fmt=
'(i4.4,a,2(i2.2,a),2a,i2.2,a,i2.2,a,i2.2)') &
 
  246 &kaaaa,
'_',kmm,
'_',kqq,
'_',cdjs,
'_',khh,
':',kmi,
':',kss
 
  273 INTEGER(KIND=4) :: IDATE1
 
  274 INTEGER(KIND=4) :: IDATE2
 
  275 INTEGER(KIND=4) :: IECART
 
  276 INTEGER(KIND=4) :: KAAAA
 
  277 INTEGER(KIND=4) :: KHH
 
  278 INTEGER(KIND=4) :: KMM
 
  279 INTEGER(KIND=4) :: KMN
 
  280 INTEGER(KIND=4) :: KQQ
 
  285 idate2=kaaaa*10000+kmm*100+kqq
 
  292 call ecartdj(idate1,idate2,iecart)
 
  298 pdj=2451545.0- 0.5 +
real(iecart)+
real(khh)/24. &
 
  299 & +real(kmn)/1440.+ps/86400.
 
  301 subroutine daplus(kdat1,kopt,kdelt,kdat2)
 
  344 INTEGER(KIND=4) :: IGRE
 
  345 INTEGER(KIND=4) :: KDAT1
 
  346 INTEGER(KIND=4) :: KDAT2
 
  347 INTEGER(KIND=4) :: KDELT
 
  348 INTEGER(KIND=4) :: KOPT
 
  349 call gregod(kdat1,kopt,igre)
 
  351 call gregoi(igre,kopt,kdat2)
 
  383 INTEGER(KIND=4) :: K1
 
  384 INTEGER(KIND=4) :: K2
 
  385 INTEGER(KIND=4) :: KEC
 
  388 subroutine dapluss(cd1,kec,cd2)
 
  417 INTEGER(KIND=4) :: IAMQ1
 
  418 INTEGER(KIND=4) :: IAMQ2
 
  419 INTEGER(KIND=4) :: IDELTA
 
  420 INTEGER(KIND=4) :: IECJOURS
 
  421 INTEGER(KIND=4) :: IH1
 
  422 INTEGER(KIND=4) :: IH2
 
  423 INTEGER(KIND=4) :: IM1
 
  424 INTEGER(KIND=4) :: IM2
 
  425 INTEGER(KIND=4) :: IRESTE
 
  426 INTEGER(KIND=4) :: IS1
 
  427 INTEGER(KIND=4) :: IS2
 
  428 INTEGER(KIND=4) :: ISEC
 
  429 INTEGER(KIND=4) :: KEC
 
  430 character*(*) cd1,cd2
 
  436 read(cd1,fmt=
'(i8,3i2)') iamq1,ih1,im1,is1
 
  443 isec=ih1*3600+im1*60+is1 
 
  445 ireste=modulo(idelta,86400) 
 
  446 iecjours=(idelta-ireste)/86400 
 
  452 call daplus(iamq1,1,iecjours,iamq2)
 
  459 ireste=ireste-3600*ih2
 
  463 write(cd2,fmt=
'(i8,3i2.2)') iamq2,ih2,im2,is2
 
  496 INTEGER(KIND=4) :: IDATE1
 
  497 INTEGER(KIND=4) :: IDATE2
 
  498 INTEGER(KIND=4) :: IECART
 
  499 INTEGER(KIND=4) :: KAAAA
 
  500 INTEGER(KIND=4) :: KHH
 
  501 INTEGER(KIND=4) :: KMM
 
  502 INTEGER(KIND=4) :: KMN
 
  503 INTEGER(KIND=4) :: KNOUV
 
  504 INTEGER(KIND=4) :: KQQ
 
  507 REAL(KIND=8) :: ZECART
 
  508 REAL(KIND=8) :: ZFRAC
 
  515 zfrac=modulo(zecart, 1._8 )
 
  516 iecart=nint(zecart-zfrac)
 
  523 call daplusj(idate1,iecart,idate2)
 
  533 zfrac=(zecart-
real(iecart))*24.
 
  535 zfrac=(zfrac-
real(khh))*60.
 
  537 ps=(zfrac-
real(kmn))*60.
 
  559 REAL(KIND=8), 
intent(in) :: PDJ
 
  560 REAL(KIND=8), 
intent(out) :: pgrer
 
  562 INTEGER(KIND=4) :: iaaaa,imm,iqq,ihh,imn
 
  574 pgrer=
real(iaaaa)*10000.+
real(imm)*100. &
 
  575 & + real(iqq)+real(ihh)/100. &
 
  576 & + real(imn)/10000.+zs/1.E+06
 
  598 REAL(KIND=8), 
intent(out) :: PDJ
 
  599 REAL(KIND=8), 
intent(in) :: pgrer
 
  600 REAL(KIND=8) :: ZS,zloc
 
  601 INTEGER(KIND=4) :: iaaaa,imm,iqq,ihh,imn,iloc
 
  614 iloc=nint((pgrer-
real(int(pgrer)))*1.e+06)
 
  615 zs=
real(mod(iloc,100))
 
  626 subroutine ecartd(kdat1,kdat2,kopt,kgre)
 
  672 INTEGER(KIND=4) :: IGRE1
 
  673 INTEGER(KIND=4) :: IGRE2
 
  674 INTEGER(KIND=4) :: KDAT1
 
  675 INTEGER(KIND=4) :: KDAT2
 
  676 INTEGER(KIND=4) :: KGRE
 
  677 INTEGER(KIND=4) :: KOPT
 
  678 call gregod(kdat1,kopt,igre1)
 
  679 call gregod(kdat2,kopt,igre2)
 
  716 INTEGER(KIND=4) :: K1
 
  717 INTEGER(KIND=4) :: K2
 
  718 INTEGER(KIND=4) :: KEC
 
  721 subroutine ecartds(cd1,cd2,kec)
 
  750 INTEGER(KIND=4) :: IAMQ1
 
  751 INTEGER(KIND=4) :: IAMQ2
 
  752 INTEGER(KIND=4) :: IH1
 
  753 INTEGER(KIND=4) :: IH2
 
  754 INTEGER(KIND=4) :: IM1
 
  755 INTEGER(KIND=4) :: IM2
 
  756 INTEGER(KIND=4) :: IS1
 
  757 INTEGER(KIND=4) :: IS2
 
  758 INTEGER(KIND=4) :: KEC
 
  759 INTEGER(KIND=4) :: KECQ
 
  760 character*(*) cd1,cd2
 
  766 read(cd1,fmt=
'(i8,3i2)') iamq1,ih1,im1,is1
 
  767 read(cd2,fmt=
'(i8,3i2)') iamq2,ih2,im2,is2
 
  773 call ecartd(iamq1,iamq2,1,kecq)
 
  779 kec=kecq*86400+(ih2-ih1)*3600+(im2-im1)*60+is2-is1
 
  781 subroutine gregod(kdat,kopt,kgre)
 
  818 INTEGER(KIND=4) :: idebm(12)
 
  819 INTEGER(KIND=4) :: I0
 
  820 INTEGER(KIND=4) :: IA100
 
  821 INTEGER(KIND=4) :: IA4
 
  822 INTEGER(KIND=4) :: IA400
 
  823 INTEGER(KIND=4) :: IAAAA
 
  824 INTEGER(KIND=4) :: IBISSEXT
 
  825 INTEGER(KIND=4) :: ICONV
 
  826 INTEGER(KIND=4) :: IFRJOUR
 
  827 INTEGER(KIND=4) :: II
 
  828 INTEGER(KIND=4) :: II1
 
  829 INTEGER(KIND=4) :: IJOURP
 
  830 INTEGER(KIND=4) :: IMM
 
  831 INTEGER(KIND=4) :: IN
 
  832 INTEGER(KIND=4) :: IN1
 
  833 INTEGER(KIND=4) :: IN2
 
  834 INTEGER(KIND=4) :: IQQ
 
  835 INTEGER(KIND=4) :: KDAT
 
  836 INTEGER(KIND=4) :: KGRE
 
  837 INTEGER(KIND=4) :: KOPT
 
  838 data idebm/0,31,59,90,120,151,181,212,243,273,304,334/
 
  849 elseif(kopt == 2) 
then 
  852   ifrjour=mod(kdat,100)
 
  854 elseif(kopt == 3) 
then 
  857   ifrjour=mod(kdat,100)
 
  859   ifrjour=ifrjour+mod(ii,100)*60
 
  861 elseif(kopt == 4) 
then 
  864   ifrjour=mod(kdat,100)
 
  866   ifrjour=ifrjour+mod(ii,100)*60
 
  868   ifrjour=ifrjour+mod(ii,100)*3600
 
  872   print*,
'GREGODR/ERREUR: argument kopt errone!...' 
  884 ia400=400*(iaaaa/400)
 
  885 ia100=100*(iaaaa/100)
 
  887 if((iaaaa == ia400).or.((iaaaa == ia4).and.(iaaaa /= ia100)))
then 
  892 if ((ibissext == 1).and.(imm > 2)) 
then 
  899   print*,
'GREGODR/ERREUR: mois errone.' 
  903 in2=idebm(imm)+ijourp+iqq-1
 
  906 in2=in2+365*(iaaaa-i0)+int((iaaaa-1)/4)-int((i0-1)/4)&
 
  907 &-int((iaaaa-1)/100)+int((i0-1)/100)&
 
  908 &+int((iaaaa-1)/400)-int((i0-1)/400)
 
  923 ia400=400*(iaaaa/400)
 
  924 ia100=100*(iaaaa/100)
 
  926 if((iaaaa == ia400).or.((iaaaa == ia4).and.(iaaaa /= ia100)))
then 
  931 if ((ibissext == 1).and.(imm > 2)) 
then 
  937 in1=idebm(imm)+ijourp+iqq-1
 
  940 in1=in1+365*(iaaaa-i0)+int((iaaaa-1)/4)-int((i0-1)/4)&
 
  941 &-int((iaaaa-1)/100)+int((i0-1)/100)&
 
  942 &+int((iaaaa-1)/400)-int((i0-1)/400)
 
  945 kgre=(in2-in1)*iconv+ifrjour
 
  947 subroutine gregoi(kgre,kopt,kdat)
 
  984 INTEGER(KIND=4) :: ijours(12)
 
  985 INTEGER(KIND=4) :: IA100
 
  986 INTEGER(KIND=4) :: IA4
 
  987 INTEGER(KIND=4) :: IA400
 
  988 INTEGER(KIND=4) :: IAAAA
 
  989 INTEGER(KIND=4) :: IBISSEXT
 
  990 INTEGER(KIND=4) :: ICONV
 
  991 INTEGER(KIND=4) :: IDAT
 
  992 INTEGER(KIND=4) :: IEC
 
  993 INTEGER(KIND=4) :: IECI
 
  994 INTEGER(KIND=4) :: IGII2P
 
  995 INTEGER(KIND=4) :: II2P
 
  996 INTEGER(KIND=4) :: IMM
 
  997 INTEGER(KIND=4) :: IMOD
 
  998 INTEGER(KIND=4) :: IQQ
 
  999 INTEGER(KIND=4) :: KDAT
 
 1000 INTEGER(KIND=4) :: KGRE
 
 1001 INTEGER(KIND=4) :: KOPT
 
 1002 REAL(KIND=8) :: ZARRDEC
 
 1003 data ijours/31,28,31,30,31,30,31,31,30,31,30,31/
 
 1010 elseif(kopt == 2) 
then 
 1013 elseif(kopt == 3) 
then 
 1016 elseif(kopt == 4) 
then 
 1021   print*,
'GREGOI/ERREUR: argument kopt errone!...' 
 1025 zarrdec=1900.+(
real(kgre)/
real(iconv)-5.)/365.2425
 
 1030 zarrdec=12.*(zarrdec-
real(iaaaa))
 
 1032 zarrdec=28.*(zarrdec-
real(imm-1))
 
 1034 ii2p=iqq+imm*100+iaaaa*10000
 
 1038 call gregod(ii2p,1,igii2p)
 
 1039 imod=mod(kgre,iconv)
 
 1040 if(imod < 0) imod=imod+iconv
 
 1041 iec=(kgre-imod)/iconv-igii2p
 
 1049 ia400=400*(iaaaa/400)
 
 1050 ia100=100*(iaaaa/100)
 
 1052 if((iaaaa == ia400).or.((iaaaa == ia4).and.(iaaaa /= ia100)))
then 
 1058 if(ibissext == 1) ijours(2)=29
 
 1062   if(iqq > ijours(imm)) 
then 
 1074 idat=iqq+imm*100+iaaaa*10000
 
 1076   imod=mod(kgre,iconv)
 
 1077   if(imod < 0) imod=imod+iconv
 
 1079 elseif(kopt == 3) 
then 
 1080   imod=mod(kgre,iconv)
 
 1081   if(imod < 0) imod=imod+iconv
 
 1082   idat=idat*100+imod/60
 
 1085 elseif(kopt == 4) 
then 
 1086   imod=mod(kgre,iconv)
 
 1087   if(imod < 0) imod=imod+iconv
 
 1088   idat=idat*100+imod/3600
 
 1090   idat=idat*100+imod/60
 
 1116 INTEGER(KIND=4) :: IDATDIM
 
 1117 INTEGER(KIND=4) :: IECART
 
 1118 INTEGER(KIND=4) :: IGRE
 
 1119 INTEGER(KIND=4) :: IGREDIM
 
 1120 INTEGER(KIND=4) :: KDAT
 
 1121 INTEGER(KIND=4) :: ijoursem
 
 1124 call gregod(idatdim,1,igredim)
 
 1126 ijoursem=modulo(iecart,7)
 
 1128 subroutine qqmmaa(kdatd,cdresd)
 
 1143 INTEGER(KIND=4) :: IAN
 
 1144 INTEGER(KIND=4) :: IGRE
 
 1145 INTEGER(KIND=4) :: ILOC
 
 1146 INTEGER(KIND=4) :: IMM
 
 1147 INTEGER(KIND=4) :: IQQ
 
 1148 INTEGER(KIND=4) :: KDATD
 
 1149 character*(*) cdresd
 
 1155 call gregod(kdatd,1,igre)
 
 1159 elseif(igre == 1) 
then 
 1161 elseif(igre == 2) 
then 
 1163 elseif(igre == 3) 
then 
 1165 elseif(igre == 4) 
then 
 1167 elseif(igre == 5) 
then 
 1169 elseif(igre == 6) 
then 
 1172 write(cdresd,fmt=
'(a3,a1,i2,a1,i2.2,a1,i4.4)')&
 
 1173 &cljour,
' ',iqq,
'.',imm,
'.',ian
 
 1175 subroutine quant(kdate,kquant)
 
 1195 INTEGER(KIND=4) :: IBASE
 
 1196 INTEGER(KIND=4) :: IEC
 
 1197 INTEGER(KIND=4) :: KDATE
 
 1198 INTEGER(KIND=4) :: KQUANT
 
 1199 ibase=10000*(kdate/10000)+0101 
 
subroutine quant(kdate, kquant)
 
subroutine daplus(kdat1, kopt, kdelt, kdat2)
 
subroutine amqhms_vers_dj(kaaaa, kmm, kqq, khh, kmn, ps, pdj)
 
subroutine ecartd(kdat1, kdat2, kopt, kgre)
 
subroutine dj_vers_amqhmsree(pdj, pgrer)
 
subroutine dj_vers_amqhms(pdj, kaaaa, kmm, kqq, khh, kmn, ps)
 
subroutine amqhmsree_vers_dj(pgrer, pdj)
 
subroutine daplusj(k1, kec, k2)
 
integer(kind=4) function ijoursem(kdat)
 
subroutine date_plus_ech(kan, kmo, kqu, psssss, pstati, cdtit)
 
subroutine gregoi(kgre, kopt, kdat)
 
subroutine qqmmaa(kdatd, cdresd)
 
subroutine datc(kaaaa, kmm, kqq, khh, kmi, kss, kjs, cdjs, cddt)
 
subroutine ecartds(cd1, cd2, kec)
 
subroutine dapluss(cd1, kec, cd2)
 
subroutine ecartdj(k1, k2, kec)
 
subroutine gregod(kdat, kopt, kgre)