SUBROUTINE SLAES(NDATA,T,Y,NINT,WINDOW,BP,TI1,TI2) *************************************************************************** * * * Subroutine to read data from an formated file of unknown length. * * The datafile is specified in INPFILE. * * * * Read the job specification from INPFILE in the following format: * * * * * * * * * * * * * * * * : : : * * : : : * * * * From the datafile, the following is read: * * Time T from column 1 and fluorescense Y from column 4. * * If first line starts with #, then the first five lines of the file are * * skipped. * * * *************************************************************************** IMPLICIT NONE DOUBLE PRECISION T,Y,TOM,TI1,TI2,BP INTEGER NDATA,I,KODE,NINT,WINDOW,INP,DAT CHARACTER DUMMY, DATAFILE*35,INPFILE*12 PARAMETER(INPFILE='slidefit.inp',INP=12,DAT=13) DIMENSION T(*),Y(*),TI1(*),TI2(*),BP(*) * Read job specifications from INPFILE OPEN(UNIT=INP,FILE=INPFILE,STATUS='OLD',IOSTAT=KODE) IF (KODE.NE.0) THEN WRITE(*,*) 'Sorry, ',INPFILE,' cannot be opened' STOP END IF WRITE(*,*),'Reading job specifications from ',INPFILE READ(INP,*) DATAFILE READ(INP,*) WINDOW DO 10 I=1,NINT READ(INP,*,END=20),BP(I),TI1(I),TI2(I) 10 CONTINUE WRITE(*,*) 'Read ',NINT,' data points, but still not at the end!' WRITE(*,*) 'Please increase the value of MAXINT in slaes.f' CLOSE(INP) RETURN 20 NINT=I-1 WRITE(*,*) 'Read',NINT,' job specifications.' CLOSE(INP) * Read data from DATAFILE OPEN(UNIT=DAT,FILE=DATAFILE,STATUS='OLD',IOSTAT=KODE) IF (KODE.NE.0) THEN WRITE(*,*) 'Sorry, ',DATAFILE,' cannot be opened' STOP END IF WRITE(*,*) 'Reading data from ',DATAFILE READ(DAT,*) DUMMY IF (DUMMY.EQ.'#') THEN WRITE(*,*) 'Skipping header' DO 30 I=1,4 READ(DAT,*) DUMMY 30 CONTINUE ELSE CLOSE(DAT) WRITE(*,*) 'No header was found' OPEN(UNIT=DAT,FILE=DATAFILE,STATUS='OLD') ENDIF DO 40 I=1,NDATA READ(DAT,*,END=50),T(I),TOM,TOM,Y(I) 40 CONTINUE WRITE(*,*) 'Read ',NDATA,' data points, but still not at the end!' WRITE(*,*) 'Please increase the value of NDATA in slidefit.f' CLOSE(DAT) STOP 50 NDATA=I-1 WRITE(*,*) 'Read',NDATA,' data points.' CLOSE(DAT) RETURN END