SUBROUTINE DAT0(NFILE,NT1,NT2,NVARS,ZZ,LDZ) C This routine reads a data file, writes some summary statistics to C output, and returns the sums-of-squares-and-cross-products matrix. C Inputs: C NFILE File number for read C NT1 First record (observation) to include C NT1 Last record (observation) to include C LDZ Leading dimension of ZZ C Output: C NVARS Number of variables available on data file C ZZ Sums-of-squares-and-cross-products matrix IMPLICIT REAL*8 (A-H,O-Z) PARAMETER(LD=100) COMMON/SCRA/V1(LD),V2(LD),A1(LD,LD),A2(LD,LD) DIMENSION ZZ(LDZ,LDZ) CALL FOPEN('Data',NFILE,.FALSE.) IT=0 READ(NFILE,*,END=110,ERR=120)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) CALL PINTI('Columns to be read',NK,1,MIN0(LD,LDZ)) CALL PINTI('t1',NT1,1,NT2) CALL PINTI('t2',NT2,NT1,NOBS) NT=NT2-NT1+1 CALL UM0SET(NK,NK,ZZ,LDZ) DO 50 IT=1,NT2 READ(NFILE,*,END=110,ERR=120)(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 20 A1(4,IK)=V1(IK) 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) DO 40 JK=IK,NK 40 ZZ(IK,JK)=ZZ(IK,JK)+V1(IK)*V1(JK) 50 CONTINUE CALL DFULL(NK,ZZ,LDZ) 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=ZZ(IK,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 CALL PEND('UNANTICIPATED END-OF-FILE READING DATA') 120 CALL PEND('ERROR READING DATA') END