SUBROUTINE GETVEL(INDEX,STARNAME,FK5,PERIOD,TOBS,V1OBS,SIG1, 1 V2OBS,SIG2,INDATA) C----------------------------------------------------------------------- C This is a modification of subroutine GETPT. C C GTMOD: C T.J.Pearson 1979 FEB 18 C Modified for VAX version 1979 JULY 5 C Modified to allow comments 1981 February 9 C Modified to copy input comments to an output file 1982 September 22 C C GETPT: Adapted for ELLIPSE.F to read data points consisting of C separations and position angles from binary star observations. C 28 Sept 1989 J.T.Armstrong C 25 Apr 1991 JTA Modified to read error ellipse parameters C C GETVEL: Adapted for reading radial velocities for VELTEST.F C 23 Aug 1991 J.T. Amrstrong C Added capability for reading uncertainties from file. C 1 Jul 1994 J.T. Armstrong C C Read one card from unit 'INDATA'. C The first card contains the star name, the FK5 number, and the period. C Each subsequent card consists of: C TOBS(Jul. date) Date of observation C V1OBS(km/s) Velocity of star 1 C SIG1(km/s) Uncertainty in V1OBS C V2OBS(km/s) Velocity of star 2 C SIG2(km/s) Uncertainty in V2OBS C Copy comments following a '!' character to unit 'PR' C Ignore blank lines. C C Returns the number of records read as INDEX; also returns C STARNAME, FK5, PERIOD, TOBS array, V1OBS array, SIG1 array, V2OBS array, C and SIG2 array. C----------------------------------------------------------------------- IMPLICIT UNDEFINED (A-Z) INCLUDE 'VELPARM.INC' REAL*8 PERIOD,TOBS(MAXVDATA),V1OBS(MAXVDATA),V2OBS(MAXVDATA) REAL*8 SIG1(MAXVDATA), SIG2(MAXVDATA) REAL*8 TOBS8, V1OBS8, V2OBS8, SIG18, SIG28 INTEGER*4 I, INDEX, L, J, FK5, INDATA INTEGER*2 CARD(80), BLANK, EXCL CHARACTER*80 CSTR, STARNAME C DATA BLANK/' '/ DATA EXCL/'!'/ C INDEX = 1 C TRIM OFF TRAILING BLANKS: 5 READ(INDATA, '(80A1)', END=50) CARD D WRITE(OUTC,'(1X,80A1)') CARD IF(CARD(1).EQ.EXCL) GO TO 5 L = 80 DO WHILE (CARD(L).EQ.BLANK) L = L-1 IF (L.EQ.0) GO TO 5 END DO I = 1 C READ STARNAME, FK5, PERIOD, SENSE OF ORBIT IF (INDEX.EQ.1) THEN CALL SKIPBL(CARD,L,I) CALL CTOSTR(CARD,L,I,STARNAME) CALL SKIPBL(CARD,L,I) CALL CTOI2 (CARD,L,I,FK5) CALL SKIPBL(CARD,L,I) CALL CTOR2 (CARD,L,I,PERIOD) ELSE C READ FIVE PARAMETERS CALL SKIPBL(CARD,L,I) CALL CTOR2(CARD,L,I,TOBS8) TOBS(INDEX-1) = TOBS8 CALL SKIPBL(CARD,L,I) CALL CTOR2(CARD,L,I,V1OBS8) V1OBS(INDEX-1) = V1OBS8 CALL SKIPBL(CARD,L,I) CALL CTOR2(CARD,L,I,SIG18) SIG1(INDEX-1) = SIG18 CALL SKIPBL(CARD,L,I) CALL CTOR2(CARD,L,I,V2OBS8) V2OBS(INDEX-1) = V2OBS8 CALL SKIPBL(CARD,L,I) CALL CTOR2(CARD,L,I,SIG28) SIG2(INDEX-1) = SIG28 30 CALL SKIPBL(CARD,L,I) IF (I.GT.L) GO TO 40 IF (CARD(I).EQ.BLANK) GO TO 40 IF (CARD(I).EQ.EXCL) THEN IF (OUTC.GT.0) WRITE (OUTC,'1X,(80A1)') (CARD(J),J=I,L) GO TO 40 END IF GO TO 30 END IF 40 CONTINUE INDEX = INDEX + 1 GO TO 5 D WRITE (OUTC,'1X,I10') INDEX C INQUIRE(UNIT=INDATA,NAME=DATAFILE) C CALL ERROR('Invalid model format: file '//DATAFILE) D WRITE( OUTC, '1X,80A1' ) ' Leaving GETVEL.' 50 RETURN END C