$debug
C-----------------------------------------------------------------------
C       L E C - O . for
C-------------------------------------------------------------------------
C
C      Lecture des fichiers "o", issus de GPPS et ecriture
c         sous format  .STA  et  .DAT (vecteur, distance ou vect.simplifi‚) 
c         pour GEOTRID, AGEOC ou G3D
c
c      J.C. Ruegg - octobre 1993
C-------------------------------------------------------------------------
C
      IMPLICIT REAL*8(A-H,O-Z)
      CHARACTER*80 BID,CHN
      CHARACTER*40 TITRE
      CHARACTER*12 FICH2,FICH3,FICH4,FICH5,FICH6
      CHARACTER*8 FIC
      CHARACTER*4 CHSTA, CHVIS, CHR, CHBID, TSOL
c
      DIMENSION XSTA(300),YSTA(300),ZSTA(300)
      DIMENSION XVIS(300),YVIS(300),ZVIS(300)
      DIMENSION DX(300),DY(300),DZ(300),SX(300),SY(300),SZ(300)
      DIMENSION CX(300),CY(300),CZ(300),RMS(300),DD(300)
      DIMENSION TEX(20)
      DIMENSION JOUR(300),ISTA(300),IVIS(300),JSOL(300),INT(50)
      DIMENSION CHSTA(300),CHVIS(300),CHR(50),TSOL(300),FIC(300)
c
      PI=4.d0*DATAN(1.d0)
c ..............3.141592653589793D0
       RAD=PI/200.d0
      ID1=12
      ID2=13
      ID3=14      
      IF=1
      IG=15
      FZ=1.000
      IZER=0
c
C----------
  98  write(*,*) ' Programme : LECT-O.for :'
       write(*,*) ' -----------------------'
c
c -- lecture du fichier correspondance NOM de station/ numero de station
c
      WRITE(*,*) ' Nom du fichier correspondance NOM/numero (****.cod):'
      READ(*,'(A)') FICH3
      OPEN(3,FILE=FICH3,status='OLD',err=98)
c
      READ(3,99) (TEX(I),I=1,20)
      J=0
   10 J=J+1
      READ(3,110,end=11) CHR(J),INT(J)
      WRITE(*,*) CHR(J),INT(J)
      goto 10
c
   11 NCOD=J-1 
c
      WRITE(*,*) ' Type de sortie : '
      WRITE(*,*) '      - fichier station (.STA):    1 '
      WRITE(*,*) '      - fichier vecteur (.VEC):    2 '
      WRITE(*,*) '      - fichier station (.DIS):    3 '
      WRITE(*,*) '      - les 3 types :              4 '
      WRITE(*,*) '      - fichier vecteur simplifie: 5 '

      READ(*,*) JSOR
c
      WRITE(*,*) ' Nom du fichier sortie (format AG3D) :'
      READ(*,'(A)') FICH5
      OPEN(5,FILE=FICH5,status='NEW',err=11)
c
      if(JSOR.EQ.1) TITRE='Coord. approch‚es : '
      if(JSOR.EQ.2) TITRE='Donn‚es VECTEURS  : '
      if(JSOR.EQ.3) TITRE='Donn‚es DISTANCES : '
      if(JSOR.EQ.4) TITRE='Stations, vecteurs, distances : '
      if(JSOR.EQ.5) TITRE='Donn‚es vecteurs simplifi‚s (1 ligne):'
c
      WRITE(5,111) FICH5,TITRE
      WRITE(*,111) FICH5,TITRE
c
      I=0
c
   14 WRITE(*,*) ' Nom du fichier contenant la liste des fichiers O : '
      READ(*,'(A)') FICH4
      write(*,'(A)') FICH4
      OPEN(4,FILE=FICH4,STATUS='OLD',err=14)
c
   13 READ(4,'(A)',end=15) FICH2  
      write(*,'(A)') FICH2
      OPEN(2,FILE=FICH2,STATUS='OLD',err=13)
   99 FORMAT(20A4)
c
c ---- lecture du fichier o
c
    1 read(2,'(A)',end=3) BID
c
      if(BID(1:10).EQ.'GPS Survey') goto 20
      if(BID(27:48).EQ.'4-character short name') goto 21
      if(BID(1:13).EQ.'FIXED STATION') goto 22
      if(BID(1:15).EQ.'UNKNOWN STATION') goto 23
c
      if(BID(27:51).EQ.'5-character session name') goto 24
c
      if(BID(1:9).EQ.'THE FLOAT') goto 30
      if(BID(1:9).EQ.'THE FIXED') goto 40
c
      goto 1
c
   20 I=I+1
      read(FICH2(1:8),'(A)') FIC(I)
      goto 1
c
   21 read(BID(1:4),'(A)') CHBID
c      read(2,'(A)',end=3) BID
      goto 1
   22 CHSTA(I)=CHBID
      goto 1
   23 CHVIS(I)=CHBID
      goto 1
c
   24 read(BID(1:3),'(I3)') JOUR(I)
      goto 1
c--------
c      write(*,104) I,CHVIS(I), XVIS(I),YVIS(I),ZVIS(I)
  104 format(I3,1x,A4,1x,3(1X,F12.4))
c      goto 1
c--------
c
c -- Float solution
c
   30 TSOL(I)=' Fl.'
      read(2,'(A)',end=3) BID
c
      if(BID(1:7).EQ.'  Sigma') goto 31
      if(BID(1:17).EQ.' Baseline vector:') goto 32
      if(BID(1:10).EQ.' Mark1_xyz') goto 33
      if(BID(1:10).EQ.' Mark2_xyz') goto 34
      goto 30
c
   31 if(BID(1:8).EQ.'  SigmaN') goto 30
      if(BID(1:8).EQ.'  Sigmax') goto 311
      if(BID(1:8).EQ.'  Sigmay') goto 312
      if(BID(1:8).EQ.'  Sigmaz') goto 313
      goto 30
  311 read(BID(18:27),'(F10.6)') SDX
      SX(I)=SDX
      goto 30
  312 read(BID(18:27),'(F10.6)') SDY
      SY(I)=SDY
      goto 30
  313 read(BID(18:27),'(F10.6)') SDZ
      SZ(I)=SDZ
      goto 30
c
   32 read(BID(19:32),'(F14.4)') FDX
      read(BID(34:47),'(F14.4)') FDY
      read(BID(49:62),'(F14.4)') FDZ
      DX(I)=FDX
      DY(I)=FDY
      DZ(I)=FDZ
      DD(I)=dsqrt(FDX**2+FDY**2+FDZ**2)
c      read(2,'(15x,F5.2,10x,F5.2,10x,F5.2)') CRX,CRY,CRZ
c      CX(I)=CRX
c      CY(I)=CRY
c      CZ(I)=CRZ
c
      write(*,105) I,CHSTA(I),CHVIS(I),FDX,FDY,FDZ,TSOL(I)
      write(*,106) SX(I),SY(I),SZ(I)
c      write(*,106) CRX,CRY,CRZ
  105 format(I3,1x,A4,1x,A4,1X,3(1X,F12.4),2x,A4)
  106 format(14x,3(1X,F12.4))
      goto 30
c
   33 read(BID(14:27),'(F14.4)') XSTA(I)
      read(BID(29:42),'(F14.4)') YSTA(I)
      read(BID(44:57),'(F14.4)') ZSTA(I)
      write(*,104) I,CHSTA(I), XSTA(I),YSTA(I),ZSTA(I)
      goto 30
   34 read(BID(14:27),'(F14.4)') XVIS(I)
      read(BID(29:42),'(F14.4)') YVIS(I)
      read(BID(44:57),'(F14.4)') ZVIS(I)
      write(*,104) I,CHSTA(I), XVIS(I),YVIS(I),ZVIS(I)
      goto 1
c
c -- Fixed solution
c
   40 TSOL(I)=' Fx.'
      read(2,'(A)',end=3) BID
c
      if(BID(1:7).EQ.'  Sigma') goto 41
      if(BID(1:17).EQ.' Baseline vector:') goto 42
      if(BID(1:10).EQ.' Mark1_xyz') goto 43
      if(BID(1:10).EQ.' Mark2_xyz') goto 44
c
   41 if(BID(1:8).EQ.'  SigmaN') goto 40
      if(BID(1:8).EQ.'  Sigmax') goto 411
      if(BID(1:8).EQ.'  Sigmay') goto 412
      if(BID(1:8).EQ.'  Sigmaz') goto 413
      goto 40
  411 read(BID(18:27),'(F10.6)') SDX
      SX(I)=SDX
      goto 40
  412 read(BID(18:27),'(F10.6)') SDY
      SY(I)=SDY
      goto 40
  413 read(BID(18:27),'(F10.6)') SDZ
      SZ(I)=SDZ
      goto 40
c
   42 read(BID(19:32),'(F14.4)') FDX
      read(BID(34:47),'(F14.4)') FDY
      read(BID(49:62),'(F14.4)') FDZ
      DX(I)=FDX
      DY(I)=FDY
      DZ(I)=FDZ
      DD(I)=dsqrt(FDX**2+FDY**2+FDZ**2)
c      read(2,'(15x,F5.2,10x,F5.2,10x,F5.2)') CRX,CRY,CRZ
c      CX(I)=CRX
c      CY(I)=CRY
c      CZ(I)=CRZ
c
      write(*,105) I,CHSTA(I),CHVIS(I),FDX,FDY,FDZ,TSOL(I)
      write(*,106) SX(I),SY(I),SZ(I)
c      write(*,106) CRX,CRY,CRZ
      goto 40
c
   43 read(BID(14:27),'(F14.4)') XSTA(I)
      read(BID(29:42),'(F14.4)') YSTA(I)
      read(BID(44:57),'(F14.4)') ZSTA(I)
      write(*,104) I,CHSTA(I), XSTA(I),YSTA(I),ZSTA(I)
      goto 40
   44 read(BID(14:27),'(F14.4)') XVIS(I)
      read(BID(29:42),'(F14.4)') YVIS(I)
      read(BID(44:57),'(F14.4)') ZVIS(I)
      write(*,104) I,CHSTA(I), XVIS(I),YVIS(I),ZVIS(I)
      goto 1
c
c
  100 format(A4,4x,A4,1x,I3,5x)
  101 format(17x,F13.4,1X,F13.4,1x,F13.4,10x,F10.5)
  102 format(I2,2x,I3,2x,I3,1x,F12.4,1x,F8.4,2x,I2,2x,I2,2x,A4,2x,A4,I6
     *,2x,A4,1x,A8)
  109 format(1x,F10.3,1x,F5.3,3(1x,F10.3),2(1x,A4),1x,I3,A4,1X,A8)
  110 format(A4,I8)
  111 format(A12,' -  ',A40)
c
c
c
    3  goto 13
c      write(*,*) ' Autre fichier a lire ?'
c      write(*,*) '          OUI=1 - NON=0'
c      read(*,*) ISORT
c      if(ISORT.EQ.1) goto 13
c -------------------------
   15 close(2)
c
      ND=I
c
      goto (6,7,8,6,9) JSOR
c -------------------------
c     sortie coordonnees
c
    6 DO 61 I=1,ND
c
      DO 65 K=1,NCOD
      if(CHR(K).EQ.CHSTA(I)) then
	ISTA(I)=INT(K)
      goto 65
      else if(CHR(K).EQ.CHVIS(I)) then
	IVIS(I)=INT(K)
	      else
      endif
   65 continue
c
      write(5,103) IF,ISTA(I),XSTA(I),YSTA(I),ZSTA(I),FZ,FZ,FZ,
     *CHSTA(I),JOUR(I)
      write(5,103) IF,IVIS(I),XVIS(I),YVIS(I),ZVIS(I),FZ,FZ,FZ,
     *CHVIS(I),JOUR(I)
   61 continue
      if(JSOR.NE.4) goto 90
c --------------------
c     sortie vecteur
c
    7 DO 71 I=1,ND
c
      DO 75 K=1,NCOD
      if(CHR(K).EQ.CHSTA(I)) then
	 ISTA(I)=INT(K)
      goto 75
      else if(CHR(K).EQ.CHVIS(I)) then
	 IVIS(I)=INT(K)
	      else
      endif
   75 continue
c
      write(5,102) ID1,ISTA(I),IVIS(I),DX(I),SX(I),IZER,IZER,
     *CHSTA(I),CHVIS(I),JOUR(I),TSOL(I),FIC(I)
      write(5,102) ID2,ISTA(I),IVIS(I),DY(I),SY(I),IZER,IZER,
     *CHSTA(I),CHVIS(I),JOUR(I),TSOL(I)
      write(5,102) ID3,ISTA(I),IVIS(I),DZ(I),SZ(I),IZER,IZER,
     *CHSTA(I),CHVIS(I),JOUR(I),TSOL(I)
c
   71 continue
      if(JSOR.NE.4) goto 90
c -------------------
c     sortie distance
c
    8 DO 81 I=1,ND
c
      DO 85 K=1,NCOD
      if(CHR(K).EQ.CHSTA(I)) then
	  ISTA(I)=INT(K)
      goto 85
      else if(CHR(K).EQ.CHVIS(I)) then
	  IVIS(I)=INT(K)
	      else
      endif
   85 continue
c
      SDD=dsqrt(SX(I)**2+SY(I)**2+SZ(I)**2)
      write(5,102) IF,ISTA(I),IVIS(I),DD(I),SDD,IZER,IZER,
     *CHSTA(I),CHVIS(I),JOUR(I),TSOL(I),FIC(I)
c
   81 continue
c -------------
      if(JSOR.NE.4) goto 90
c -------------
    9 DO 91 I=1,ND
c
      DO 95 K=1,NCOD
      if(CHR(K).EQ.CHSTA(I)) then
	  ISTA(I)=INT(K)
      goto 95
      else if(CHR(K).EQ.CHVIS(I)) then
	  IVIS(I)=INT(K)
	      else
      endif
   95 continue
c
      SDD=dsqrt(SX(I)**2+SY(I)**2+SZ(I)**2)
      write(5,109) DD(I),SDD,DX(I),DY(I),DZ(I),
     *CHSTA(I),CHVIS(I),JOUR(I),TSOL(I),FIC(I)
c
   91 continue
c -------------
c
  103 format(I1,2x,I3,3(1X,F12.3),1x,3(2x,F5.3),1x,A4,1x,'J',I4)
c
c -------------------------
   90 write(*,*) ' -- FIN --'
      close(4)
      close(5)
  93  STOP
      END
c------------------------------------------------------------
