SUBROUTINE DAT1(NFILE,NT1,NT2,NVARS,D,LDD,NCD) C This routine reads a data file, writes some summary statistics to C output, and returns records t1 through t2 in the corresponding rows of D. C Inputs: C NFILE File number for read C NT1 First record (observation) to include, t1 C NT2 Last record (observation) to include, t2 C LDD Leading dimension of D C NCD Number of columns allocated to D in calling routine C Output: C NVARS Number of variables available on data file C D Records t1 through t2 of data file IMPLICIT REAL*8 (A-H,O-Z) PARAMETER(LD=100) COMMON/SCRA/V1(LD),V2(LD),A1(LD,LD),A2(LD,LD) DIMENSION D(LDD,NCD) CALL FOPEN('Data',NFILE,.FALSE.) IT=0 READ(NFILE,*,END=130,ERR=140)NOBS,NVARS NK=NVARS WRITE(6,10)NK,NOBS,NT1,NT2 10 FORMAT(' Number of variables read from file:',I6,/, 2 ' Number of observations in file:',I6,/, 3 ' Observations used for sample:',I6,' -',I6) NKMAX=MIN0(LD,NCD) IF(NK.GT.NKMAX)GO TO 110 IF((NT1.GT.NT2).OR.(NT1.LE.0).OR.(NT2.GT.NOBS))GO TO 120 IF(NT2.GT.LDD)GO TO 150 NT=NT2-NT1+1 DO 50 IT=1,NT2 READ(NFILE,*,END=130,ERR=140)(V1(IVARS),IVARS=1,NVARS) IF(IT.LT.NT1)GO TO 50 IF(IT.GT.NT1)GO TO 30 DO 20 IK=1,NK A1(1,IK)=V1(IK) A1(2,IK)=V1(IK) A1(3,IK)=0.0D0 A1(4,IK)=V1(IK) 20 A1(5,IK)=0.0D0 30 DO 40 IK=1,NK IF(V1(IK).LT.A1(1,IK))A1(1,IK)=V1(IK) IF(V1(IK).GT.A1(2,IK))A1(2,IK)=V1(IK) A1(3,IK)=A1(3,IK)+V1(IK) A1(5,IK)=A1(5,IK)+V1(IK)**2 40 D(IT,IK)=V1(IK) 50 CONTINUE WRITE(6,60) 60 FORMAT(/,' Col',5X,'Minimum',5X,'Maximum',8X,'Mean',2X, 1 'Stan. dev.',7X,'First',8X,'Last') DO 70 IK=1,NK AMEAN=A1(3,IK)/NT AVAR=A1(5,IK)/NT-AMEAN**2 SDEV=0.0D0 IF(AVAR.GT.0.0D0)SDEV=DSQRT(AVAR) 70 WRITE(6,80)IK,A1(1,IK),A1(2,IK),AMEAN,SDEV,A1(4,IK),V1(IK) 80 FORMAT(I4,6(1PE12.4)) RETURN 110 WRITE(6,115)NVARS,NKMAX 115 FORMAT(/,' *** FILE CONTAINS',I4,' VARIABLES, EXCEEDS CAPACITY OF' 1 ,I4) CALL TERM 120 WRITE(6,125)NT1,NT2,NOBS 125 FORMAT(/,' *** RECORDS',I6,' -',I6' REQUESTED, ONLY 1-',I6, 1 ' AVAILABLE') CALL TERM 130 WRITE(6,135)IT 135 FORMAT(/,' *** UNANTICIPATED END-OF-FILE, OBSERVATION',I8) CALL TERM 140 WRITE(6,125)IT 145 FORMAT(/,' **** READ ERROR, OBSERVATION',I8) CALL TERM 150 WRITE(6,155)NT2,LDD 155 FORMAT(/,' *** FILE CONTAINS',I6,' OBSERVATIONS, EXCEEDS', 1 ' CAPACITY OF',I6) CALL TERM END