C     ***********************
C     *  SUBROUTINE CALMAT  *
C     ***********************
C
      SUBROUTINE CALMAT(SX1,SX2,SZ2,SX3,ND1,V,P,OM,T,ND2,NCF)
C
      IMPLICIT REAL*8(A-H,O-Z)
      COMPLEX*16 P(ND1,ND1),V(ND1,ND1),T(ND2,ND2)
      DIMENSION SX1(ND1),SX2(ND1),SZ2(ND1),SX3(ND1),NCF(10)
C
      COMMON / NS / NS1,NS2,NS3
C
C     *****  INITIALIZATION  *****
C
      DO 150 I=1,ND2
        DO 100 J=1,ND2
          T(I,J)=(0.D0,0.D0)
  100   CONTINUE
  150 CONTINUE
C
C     *****  MAKE MATRIX T  *****
C
      CALL  P1133(P,ND1,NS1,NCF)
      DO 210 I=1,NS1
        DO 200 J=1,NS1
          T(I,J)=P(I,J)
  200   CONTINUE
  210 CONTINUE
C
      CALL  P1133(P,ND1,NS3,NCF)
      DO 230 I=1,NS3
        DO 220 J=1,NS3
          T(NS1+2*NS2+I,NS1+2*NS2+J)=P(I,J)
  220   CONTINUE
  230 CONTINUE
C
      CALL PV1232(SX1,SX2,SZ2,ND1,P,V,OM,NS1,NS2,1,NCF)
      DO 250 I=1,NS1
        DO 240 J=1,NS2
          T(I,NS1+J)=P(I,J)
          T(I,NS1+NS2+J)=V(I,J)
  240   CONTINUE
  250 CONTINUE
C
      CALL PV1232(SX3,SX2,SZ2,ND1,P,V,OM,NS3,NS2,2,NCF)
      DO 270 I=1,NS3
        DO 260 J=1,NS2
          T(NS1+2*NS2+I,NS1+J)=P(I,J)
          T(NS1+2*NS2+I,NS1+NS2+J)=-V(I,J)
  260   CONTINUE
  270 CONTINUE
C
      CALL PV2222(SX2,SZ2,ND1,P,V,OM,NS2,1,NCF)
      DO 290 I=1,NS2
        DO 280 J=1,NS2
          T(NS1+I,NS1+J)=P(I,J)
          T(NS1+I,NS1+NS2+J)=V(I,J)
  280   CONTINUE
  290 CONTINUE
C
      CALL PV2222(SX2,SZ2,ND1,P,V,OM,NS2,2,NCF)
      DO 310 I=1,NS2
        DO 300 J=1,NS2
          T(NS1+NS2+I,NS1+J)=P(I,J)
          T(NS1+NS2+I,NS1+NS2+J)=-V(I,J)
  300   CONTINUE
  310 CONTINUE
C
      CALL  P2123(SX2,SZ2,SX1,ND1,P,OM,NS2,NS1,1,NCF)
      DO 330 I=1,NS2
        DO 320 J=1,NS1
          T(NS1+I,J)=P(I,J)
  320   CONTINUE
  330 CONTINUE
C
      CALL  P2123(SX2,SZ2,SX3,ND1,P,OM,NS2,NS3,2,NCF)
      DO 350 I=1,NS2
        DO 340 J=1,NS3
          T(NS1+NS2+I,NS1+2*NS2+J)=P(I,J)
  340   CONTINUE
  350 CONTINUE
C
C     *****  CHECKER'S FLAG NO.6  *****
C
      IF(NCF(6).EQ.1) THEN
      WRITE(6,*) '*****  MATRIX T  *****'
      WRITE(6,*) ((T(I,J),J=1,NS1+2*NS2+NS3),I=1,NS1+2*NS2+NS3)
      END IF
C
      RETURN
      END
