c
c ----convertit des nouvelles donnees Ashtech passees par erreur
c ----dans RINTORIN
c
c ----variables generales utilisees par le programme
c
	real*8 iono(8),nav(32,28),orb(28),param(6)
	character*8 fich1
	character*80 ligne
	logical getsv(32)
	integer stt(32),nmes,sa
	integer iyear,imonth,iday,ihour,imin,imin1,sv(10)
	real*8 psd,sec,cel,t,calc,xs(3),rel,delt,te,phl1,phl2
	real*8 sec1,week,ks
c
c ----initialisation du fichier de commande
c
	open(9,file='rin1.dat',status='old')
c
c ----grande boucle de calcul
c
 601	continue
	read(9,'(a8)',end=602) fich1
	write(*,'(a,a10)') ' Lu : ',fich1
c
c ----initialisation de variables
c
	cel=2.99792458d8
	do 32 i=1,32
	stt(i)=0
  32	getsv(i)=.false.
c
c ----ouverture du fichier de donnees
c
	open(8,file=fich1//'.91o',status='old')
c
c ----chargement des ephemerides
c
	open(6,file=fich1//'.91n',status='old')
	do 31 i=1,4
  31	read(6,'(a)') ligne
  33	continue
	read(6,'(a)',end=34) ligne
	read(ligne,'(i2)') sa
	if(.not.getsv(sa)) then
	getsv(sa)=.true.
	read(ligne,'(2x,5i3,f5.1,3d19.12)')
     +iyear,imonth,iday,ihour,imin,sec,nav(sa,2),nav(sa,3),nav(sa,4)
	call timconv(week,nav(sa,1),iyear,imonth,iday,ihour,imin,sec)
	do 40 i=1,6
  40	read(6,'(3x,4d19.12)') (nav(sa,4*i+l),l=1,4)
	else
	do 35 i=1,6
  35	read(6,'(a)') ligne
	endif
	goto 33
  34	close(6)
c
c ----ouverture du fichier de sortie
c
	open(11,file=fich1//'.91q')
c
c ----lecture de l'entete d'un fichier RINEX
c
	read(8,'(a)') ligne
	write(11,'(a)') '     1'//ligne(7:80)
	read(8,'(a)') ligne
	write(11,'(a)') 'ASHTORIN 3.0.03'//ligne(16:80)
	do 201 i=1,3
 	read(8,'(a)') ligne
 201	write(11,'(a)') ligne
	read(8,'(a)') ligne
	write(11,'(a)') ligne(1:40)//'5.A'//ligne(44:80)
	read(8,'(a)') ligne
	write(11,'(a)') ligne
	read(8,'(a)') ligne
	write(11,'(a)') ligne
	read(ligne,'(3f14.4)') (param(j),j=1,3)
c
c ----saut d'eventuelles lignes optionnelles
c
	do 203 i=1,30
 	read(8,'(a)') ligne
	write(11,'(a)') ligne
	if(ligne(61:61).eq.' ') goto 205
 203	continue
c
c ----lecture des donnees du fichier Ashtech et transformation
c
 205	continue
c
c ----lecture d'entete de bloc
c
	read(8,'(a)',end=206) ligne
	read(ligne,'(5i3,f11.7,3x,i3)')
     +iyear,imonth,iday,ihour,imin,sec,nmes
	sec1=sec
	imin1=imin
	call timconv(week,t,iyear,imonth,iday,ihour,imin,sec)
	read(ligne,'(32x,10i3)') (sv(i),i=1,nmes)
	write(11,'(5i3,f11.7,i3,9i3)')
     +iyear,imonth,iday,ihour,imin1,sec1,0,nmes,(sv(i),i=1,nmes)
c
c ----lecture de bloc
c
	do 207 i=1,nmes
	read(8,'(6(f14.3,2x))') psd,phl1,phl2
	do 41 j=1,28
  41	orb(j)=nav(sv(i),j)
c
c ----calcul de la distance satellite - terre
c ----temps de vol
c ----temps d'emission horloge satellite
c ----temps d'emission temps GPS
c
	call direct1(orb,iono,param,t,xs,calc,rel)
	delt=calc/cel
	t=t-delt
	te=dmod((t-orb(1)+3024.d2),6048.d2)-3024.d2
	ks=(orb(2)+orb(3)*te+orb(4)*te**2+rel-orb(27))*cel
	psd=psd+ks
c	psd=psd
c
c ----ecriture des donnees
c
 207	write(11,'(f14.3,2x,f14.3,2x,f14.3)') psd,phl1,phl2
	goto 205
c
 206  	close(8)
	close(11)
c
	goto 601
 602	end
