C***********************************************************************
C   SUBROUTINE PRINT WRITES THE INPUT DATA, THE COMPUTED DATA IF ANY,AND
C   SOME DESCRIPTIVE STATISTICS.SUBROUTINE LINE(WHICH PRINTS THE ACTUAL
C   LINES) IS AN INTEGRAL PART OF PRINT.
C
C     SUBROUTINES CALLED: LINE,COR
C***********************************************************************
      SUBROUTINE PRINT
C***********************************************************************
C     DECLARATIONS
C***********************************************************************
      INCLUDE 'PARMTR.INC'
      INTEGER CNT, STATUS
      LOGICAL WARN
      REAL X(5), Y(5)
      CHARACTER*2 FLAG
      CHARACTER*25 ID
C***********************************************************************
C     COMMON STATEMENTS
C***********************************************************************
      COMMON /STATS/ SM(10), CORMAT(5,5)
      COMMON /IND/ IC, II, IREP, STATUS
      COMMON /NUM/ XL(MAXLIN), WIDTH, N, CNT, CONV(3), VARN, IDF, WARN
      COMMON /MEASUR/ DATA(MAXOBJ,5)
C***********************************************************************
C     WRITE OUT THE INPUT DATA AND THE COMPUTED DATA.
C***********************************************************************
      IF (STATUS.EQ.1) THEN
         FLAG='**'
      ELSE
         FLAG='  '
      ENDIF
      WRITE(6,100) FLAG
      WRITE(6,110)
      K=41
      DO 10 I=1,N
      X(1)=DATA(I,1)
      X(2)=DATA(I,2)
      X(3)=DATA(I,3)
      X(4)=DATA(I,4)
      X(5)=DATA(I,5)
      IF (I.EQ.K) THEN
         WRITE(6,110)
         CALL HEADER(1)
         WRITE(6,100) FLAG
         WRITE(6,110)
         K=K+50
      ENDIF
      WRITE (ID,'(21X,I4)') I
      CALL LINE (STATUS,ID,X)
   10 CONTINUE
      WRITE (6,110)
C***********************************************************************
C   WRITE THE MEANS,STANDARD DEVIATIONS AND STANDARD ERRORS OF THE MEANS
C***********************************************************************
      CALL HEADER (1)
      WRITE (6,300)
      WRITE (6,105) FLAG
      WRITE (6,110)
      X(1)=SM(1)
      X(2)=SM(2)
      X(3)=SM(3)
      X(4)=SM(4)
      X(5)=SM(5)
      ID=' '
      ID(21:25)='Means'
      CALL LINE (STATUS,ID,X)
      FACT=1./SQRT(FLOAT(N))
      DO 20 I=1,5
      Q=CORMAT(I,I)
      X(I)=Q
      SM(I+5)=Q
      Y(I)=Q*FACT
   20 CORMAT(I,I)=1000000.
C***********************************************************************
C   THE ABOVE PLACES THE SAMPLE STANDARD DEVIATIONS INTO POSITIONS 6-10
C   OF SM.
C***********************************************************************
      ID(7:25)='Standard Deviations'
      CALL LINE (STATUS,ID,X)
      ID='  Standard Error of Means'
      CALL LINE (STATUS,ID,Y)
      WRITE (6,110)
      IF ((STATUS.EQ.2).OR.(STATUS.EQ.3).OR.(STATUS.EQ.7)) RETURN
C***********************************************************************
C   IF THERE WERE ANY CORRELATIONS COMPUTABLE, PRINT THE MODIFIED
C   CORRELATION MATRIX.
C***********************************************************************
      WRITE (6,120)
      DO 30 I=1,4
      IP1=I+1
      DO 30 J=IP1,5
      R=CORMAT(I,J)
      PSQ=0.0
      IF (ABS(R).LT..00001) GO TO 30
      CALL COR (N,R,P,PSQ)
      IF (PSQ.EQ.-1.) WRITE (6,130) I,J
   30 CORMAT(I,J)=1.0-PSQ
      WRITE (6,140)
      WRITE (6,290) FLAG
      IF (STATUS.EQ.1) THEN
C***********************************************************************
C   STATUS CODE 1 COMES HERE
C***********************************************************************
         WRITE (6,150) CORMAT(1,1),CORMAT(1,2),CORMAT(1,4),CORMAT(1,5),
     1     '    PD'
         WRITE (6,150) CORMAT(2,1),CORMAT(2,2),CORMAT(2,4),CORMAT(2,5),
     1     '    SD'
         WRITE (6,120)
         WRITE (6,150) CORMAT(4,1),CORMAT(4,2),CORMAT(4,4),CORMAT(4,5),
     1     'COMANG'
         WRITE (6,150) CORMAT(5,1),CORMAT(5,2),CORMAT(5,4),CORMAT(5,5),
     1     'SINE**'
C***********************************************************************
C   STATUS CODE 4 COMES HERE
C***********************************************************************
      ELSE IF (STATUS.EQ.4) THEN
         WRITE (6,160) (CORMAT(1,J),J=1,5),'    PD'
         WRITE (6,160) (CORMAT(2,J),J=1,5),'    SD'
         WRITE (6,160) (CORMAT(3,J),J=1,5),'MESANG'
         WRITE (6,160) (CORMAT(4,J),J=1,5),'COMANG'
         WRITE (6,160) (CORMAT(5,J),J=1,5),'  SINE'
C***********************************************************************
C     STATUS CODE 5 COMES HERE
C***********************************************************************
      ELSE IF (STATUS.EQ.5) THEN
         WRITE (6,170) CORMAT(1,1),CORMAT(1,2),CORMAT(1,3),CORMAT(1,5),
     1     '    PD'
         WRITE (6,170) CORMAT(2,1),CORMAT(2,2),CORMAT(2,3),CORMAT(2,5),
     1     '    SD'
         WRITE (6,170) CORMAT(3,1),CORMAT(3,2),CORMAT(3,3),CORMAT(3,5),
     1     'MESANG'
         WRITE (6,120)
         WRITE (6,170) CORMAT(5,1),CORMAT(5,2),CORMAT(5,3),CORMAT(5,5),
     1     '  SINE'
C***********************************************************************
C   STATUS CODE 6 COMES HERE
C***********************************************************************
      ELSE IF (STATUS.EQ.6) THEN
         WRITE (6,180) CORMAT(1,1),CORMAT(1,3),CORMAT(1,5),'    PD'
         WRITE (6,120)
         WRITE (6,180) CORMAT(3,1),CORMAT(3,3),CORMAT(3,5),'MESANG'
         WRITE (6,120)
         WRITE (6,180) CORMAT(5,1),CORMAT(5,3),CORMAT(5,5),'  SINE'
      ENDIF
      DO 80 I=1,5
   80    CORMAT(I,I)=SM(I+5)
      RETURN
C***********************************************************************
C     FORMAT STATEMENTS
C***********************************************************************
C
  100 FORMAT (1H0,15X,'Data Point',7X,'PD',10X,'SD',7X,'MESANG',
     1 4X,'COMANG',4X,'SINE',A2)
  105 FORMAT (1H0,16X,'Parameter',7X,'PD',10X,'SD',7X,'MESANG',
     1 4X,'COMANG',4X,'SINE',A2)
  110 FORMAT (1H ,79(1H-))
  120 FORMAT (1H0)
  130 FORMAT (/,1H0,4X,'Probability level for correlation ',2I3,
     1' is unreliable')
  140 FORMAT (//5X,'Correlations (lower off diagonal), and their two'/
     1          5X,'tailed significance levels (upper off diagonal)')
  150 FORMAT (1H0,4X,2(3X,F7.4),10X,2(3X,F7.4),T61,A6)
  160 FORMAT (1H0,4X,5(3X,F7.4),T61,A6)
  170 FORMAT (1H0,4X,3(3X,F7.4),13X,F7.4,T61,A6)
  180 FORMAT (1H0,7X,F7.4,13X,F7.4,13X,F7.4,T61,A6)
  290 FORMAT (1H0,10X,'PD',8X,'SD',6X,'MESANG',4X,'COMANG',4X,'SINE',A2)
  300 FORMAT (///5X,'Summary Statistics'/)
      END
