1      SUBROUTINE MATOUT (A,B,NC,NNR,NDIM)
2      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
3      INCLUDE 'SIZES'
4      DIMENSION A(NDIM,NDIM), B(NDIM)
5      COMMON /MOLKST/ NUMAT,NAT(NUMATM),NFIRST(NUMATM),NMIDLE(NUMATM),
6     1                NLAST(NUMATM), NORBS, NELECS,NALPHA,NBETA,
7     2                NCLOSE,NOPEN,NDUMY,FRACT
8      COMMON /ELEMTS/ ELEMNT(107)
9C**********************************************************************
10C
11C      MATOUT PRINTS A SQUARE MATRIX OF EIGENVECTORS AND EIGENVALUES
12C
13C    ON INPUT A CONTAINS THE MATRIX TO BE PRINTED.
14C             B CONTAINS THE EIGENVALUES.
15C             NC NUMBER OF MOLECULAR ORBITALS TO BE PRINTED.
16C             NR IS THE SIZE OF THE SQUARE ARRAY TO BE PRINTED.
17C             NDIM IS THE ACTUAL SIZE OF THE SQUARE ARRAY "A".
18C             NFIRST AND NLAST CONTAIN ATOM ORBITAL COUNTERS.
19C             NAT = ARRAY OF ATOMIC NUMBERS OF ATOMS.
20C
21C
22C***********************************************************************
23      CHARACTER*2 ELEMNT, ATORBS(9), ITEXT(4*MAXHEV+3*MAXLIT),
24     + JTEXT(4*MAXHEV+3*MAXLIT)
25      DIMENSION NATOM(4*MAXHEV+3*MAXLIT )
26      SAVE ATORBS
27      DATA ATORBS/' S','PX','PY','PZ','X2','XZ','Z2','YZ','XY'/
28      NR = NNR
29      IF(NUMAT.EQ.0)GOTO 30
30      IF(NLAST(NUMAT).NE.NR) GOTO 30
31      DO 20 I=1,NUMAT
32         JLO=NFIRST(I)
33         JHI=NLAST(I)
34         L=NAT(I)
35         K=0
36         DO 10 J=JLO,JHI
37            K=K+1
38            ITEXT(J)=ATORBS(K)
39            JTEXT(J)=ELEMNT(L)
40            NATOM(J)=I
41   10    CONTINUE
42   20 CONTINUE
43      GOTO 50
44   30 CONTINUE
45      NR=ABS(NR)
46      DO 40 I=1,NR
47         ITEXT(I)='  '
48         JTEXT(I)='  '
49   40 NATOM(I)=I
50   50 CONTINUE
51      KA=1
52      KC=6
53   60 KB=MIN0(KC,NC)
54      WRITE (6,100) (I,I=KA,KB)
55      IF(B(1).NE.0.D0)WRITE (6,110) (B(I),I=KA,KB)
56      WRITE (6,120)
57      LA=1
58      LC=40
59   70 LB=MIN0(LC,NR)
60      DO 80 I=LA,LB
61         IF(ITEXT(I).EQ.' S')WRITE(6,120)
62         WRITE (6,130) ITEXT(I),JTEXT(I),NATOM(I),(A(I,J),J=KA,KB)
63   80 CONTINUE
64      IF (LB.EQ.NR) GO TO 90
65      LA=LC+1
66      LC=LC+40
67      WRITE (6,140)
68      GO TO 70
69   90 IF (KB.EQ.NC) RETURN
70      KA=KC+1
71      KC=KC+6
72      IF (NR.GT.25) WRITE (6,140)
73      GO TO 60
74C
75  100 FORMAT (////,3X,9H ROOT NO.,I5,9I12)
76  110 FORMAT (/8X,10F12.5)
77  120 FORMAT (2H  )
78  130 FORMAT (2(1X,A2),I4,F10.5,10F12.5)
79  140 FORMAT (1H1)
80C
81      END
82