
C ++********************************************************************
C                                                                      *
C                                                                      *
C                                                                      *
C **********************************************************************
C=* FROM: SPIDER - MODULAR IMAGE PROCESSING SYSTEM.   AUTHOR: J.FRANK  *
C=* Copyright (C) 1985-2005  Health Research Inc.                      *
C=*                                                                    *
C=* HEALTH RESEARCH INCORPORATED (HRI),                                *   
C=* ONE UNIVERSITY PLACE, RENSSELAER, NY 12144-3455.                   *
C=*                                                                    *
C=* Email:  spider@wadsworth.org                                       *
C=*                                                                    *
C=* This program is free software; you can redistribute it and/or      *
C=* modify it under the terms of the GNU General Public License as     *
C=* published by the Free Software Foundation; either version 2 of the *
C=* License, or (at your option) any later version.                    *
C=*                                                                    *
C=* This program is distributed in the hope that it will be useful,    *
C=* but WITHOUT ANY WARRANTY; without even the implied warranty of     *
C=* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
C=* General Public License for more details.                           *
C=*                                                                    *
C=* You should have received a copy of the GNU General Public License  *
C=* along with this program; if not, write to the                      *
C=* Free Software Foundation, Inc.,                                    *
C=* 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.      *
C=*                                                                    *
C **********************************************************************
C                                                                      *
C                                                                      *
C                                                                      *
C  PURPOSE:                                                            *
C                                                                      *
C  PARAMETERS:                                                         *
C                                                                      *
C        0         2         3         4         5         6         7 *
C23456789012345678901234567890123456789012345678901234567890123456789012
C***********************************************************************


       SUBROUTINE MYREAD(M,MGR,KG,ALL,T,XMEAN,TMEAN,XMIN,XMAX,N,
     &                    JG,LEST)

       IMPLICIT REAL*8 (A-H,O-Z)
       IMPLICIT INTEGER*2 (I-N)
       DIMENSION ALL(M,M,1),T(M,M)
       DIMENSION XMEAN(M,1),XMIN(M,1),XMAX(M,1)
       DIMENSION N(1),JG(1),TMEAN(1)
       DIMENSION V(50)
       INTEGER * 4 LERC

       CHARACTER*10 IBI
       LOGICAL*1 IFR

      IF (LEST.LT.100)  THEN
         QF=REAL(LEST)/100.0
         LERC=0
         OPEN(UNIT=10,FILE='RANF.DAT',STATUS='UNKNOWN',ACCESS='DIRECT',
     &       RECL=1)
         ISEED=21717
      ENDIF

      M1=M-1
      NS=0
 1    READ(4,5676,END=10) (V(K),K=1,M)
5676  FORMAT(2X,F3.1,4(1X,1PE14.7),/,4(1X,1PE14.7),/,1(1X,1PE14.7))
      IF (LEST.LT.100)  THEN
         IF(QF.GE.RAND_P(ISEED)) THEN
            IFR=.TRUE.
         ELSE
            IFR=.FALSE.
      ENDIF
      LERC=LERC+1
      WRITE(10,REC=LERC)  IFR
         IF(.NOT.IFR) GOTO  1
      ENDIF
       I=V(KG)
       DO  K=1,MGR
          IF(I.EQ.JG(K)) GOTO 4
       ENDDO
       GOTO 1

 4     V(KG)=V(M)
       WRITE(IBI,7023) NS+1
 7023  FORMAT(I8)
C                       CALL  WRTXT(
C     & IBI,8,51,3,3)
       DO  I=1,M1
          XMEAN(I,K)=XMEAN(I,K)+V(I)
          TMEAN(I)=TMEAN(I)+V(I)
          IF(V(I).GT.XMAX(I,K)) XMAX(I,K)=V(I)
          IF(V(I).LT.XMIN(I,K)) XMIN(I,K)=V(I)
          DO  J=I,M1
             X=V(I)*V(J)
             ALL(I,J,K)=ALL(I,J,K)+X
             T(I,J)=T(I,J)+X
          ENDDO
       ENDDO
       N(K)=N(K)+1
       NS=NS+1
       GOTO 1

 10    CONTINUE
       DO 6 I=1,MGR
          EK=N(I)
          IF(N(I).EQ.0) GOTO 6
          DO  J=1,M1
             DO  L=J,M1
                 ALL(J,L,I)=ALL(J,L,I)-XMEAN(J,I)*XMEAN(L,I)/EK
             ENDDO
             XMEAN(J,I)=XMEAN(J,I)/EK
          ENDDO
 6     CONTINUE
       EN=NS
       DO  J=1,M1
          DO  L=J,M1
             T(J,L)=T(J,L)-TMEAN(J)*TMEAN(L)/EN
             T(L,J)=T(J,L)
          ENDDO
          TMEAN(J)=TMEAN(J)/EN
       ENDDO
       END

