C SUBROUTINE ZINPUT(NMAX, N, MJD, EPOCH, S2, S8, DS2, DS8, SI, DSI, $ NAME, IERR) C----------------------------------------------------------------------- C Read in a GBI time series. C C Input: C INTEGER NMAX - maximum number of data C C Output: C INTEGER N - actual number of data C DOUBLE PRECISION MJD - JD - 2400000.0 (or 2400000.5?) C REAL EPOCH - time C REAL S2 - flux density at 2 GHz C REAL S8 - flux density at 8 GHz C REAL DS2 - error in S2 C REAL DS8 - error in S8 C REAL SI - spectral index C REAL DSI - error in spectral index C CHARACTER*(*) NAME - name of source C INTEGER IERR - 0 if no problems C----------------------------------------------------------------------- C INTEGER NMAX, N, IERR REAL EPOCH(NMAX), S2(NMAX), DS2(NMAX), SI(NMAX), $ S8(NMAX), DS8(NMAX), DSI(NMAX) DOUBLE PRECISION MJD(NMAX) CHARACTER*(*) NAME C INTEGER LI REAL SPRE, SPOST, XPRE, XPOST, SWITCH C PARAMETER (LI=7) PARAMETER (SPRE=2.7) PARAMETER (SPOST=2.25) PARAMETER (XPRE=8.1) PARAMETER (XPOST=8.3) PARAMETER (SWITCH=1989.7) C INTEGER I REAL LHA, ELOG10, TMP, FRATIO CHARACTER FILE*64 C C IERR = 0 ELOG10 = LOG10(EXP(1.0)) C C GET FILE NAME AND EXTRACT NAME. ASSUMES FILE NAME CONTAINS NAME OF C SOURCE. THEN OPEN FILE. C WRITE (*, *) ' GBI TIME SERIES FILE NAME:' READ (*, '(A)', IOSTAT=IERR, ERR=9000) FILE NAME = FILE(:8) C OPEN(UNIT=LI,STATUS='OLD',FILE=FILE,IOSTAT=IERR,ERR=9000) C C ASSUME 88--94 FORMAT. C DO 100 N=1, NMAX READ (LI, 8100, IOSTAT=IERR, ERR=9000, END=500) $ MJD(N), EPOCH(N), LHA, $ S2(N), S8(N), SI(N), DS2(N), DS8(N) 100 CONTINUE C C CLOSE UP. C 500 CLOSE(UNIT=LI,IOSTAT=IERR,ERR=9000) IERR = 0 N = N - 1 C C CONSTRUCT THE ERROR IN THE SPECTRAL INDEX. C DO 800 I=1, N IF ((S2(I).GT.0.0).AND.(S8(I).GT.0.0).AND.(SI(I).GT.-9.0)) THEN IF (EPOCH(I).LT.SWITCH) THEN FRATIO = LOG10(SPRE/XPRE) ELSE FRATIO = LOG10(SPOST/XPOST) ENDIF TMP = SQRT((DS2(I)/S2(I))**(2) + (DS8(I)/S8(I))**(2)) DSI(I) = ELOG10*TMP/FRATIO ENDIF 800 CONTINUE C C C 8100 FORMAT(D12.3,2X,F8.3,F10.3,2(F10.3),F10.2,F8.3,:,F8.3) C C EXIT. C 9000 RETURN END