C^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      SUBROUTINE CHAVER(IREC8,IREC9,KOPR,NOPR,KBZTYP) 
C^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      IMPLICIT REAL(A-H,O-Y)                                          
      IMPLICIT COMPLEX(Z)                                            
      INCLUDE 'PACVPP' 
C     VPP-PARALLEL 
!XOCL SUBPROCESSOR PS(IPARA)=PQ(1:IPARA)
!XOCL INDEX PARTITION IP=(PS,INDEX=1:KNV3,PART=BAND) 
      DIMENSION ZZZ(KNG1,KEG,KNV3),OCCUU(KEG,KNV3) 
!XOCL LOCAL ZZZ(:,:,/IP),OCCUU(:,/IP) 
      EQUIVALENCE (ZAJ,ZZZ),(OCCUP,OCCUU) 
C-----ARRAYS FOR MFFT--------------------------------------------       
      DIMENSION ZC3D1(IFX2,IFY2,IFZ2) 
      DIMENSION IWL(8*IFX2+28),IWM(8*IFY2+28),IWN(8*IFZ2+28)
     &         ,IWORK(2*IFX2) 
C================================================================       
      EQUIVALENCE (ZC1D(1),ZC3D1(1,1,1)) 
C================================================================       
C     REWIND 90 
      KFT1 =  IFX2                                                      
      KFT2 =  IFY2                                                      
      KFT3 =  IFZ2                                                      
      KSUM=KFT1*KFT2*KFT3                                               
      KVOL=(KFT1-1)*KFT2*KFT3                                           
      CCC  =  2.D0*RVOL/(2.D0*PAI)**3/FLOAT(KV3)                        
      KIMG=1                                                            
C*****---- SET UP C3FFT (FAST FOURIER TRANSFORMATION) -----             
      CALL C3FFT(ZC3D1,KFT1,KFT1-1,KFT2,KFT3,IWL,IWM,IWN
     &          ,0,0,1,IWORK,IERR) 
      IF (IERR.NE.0) THEN                                               
          WRITE (6,*) ' C3FFT(SET UP)]  IERR = ',IERR                   
cGEN          STOP 
      END IF                                                            
      DO 7701 I=1,KSUM                                                  
        CHGB1(I) =0.0D0                                   
        CHGSUM(I)=0.0D0 
 7701 CONTINUE                                                          
C     VPP-PARALLEL START
C!XOCL PARALLEL REGION
!XOCL SPREAD DO /IP 
*pdir pardo 
        DO 7820 IK=1,KV3                                                
      DO 7810 IBAN=NBD1,NBD2
C*******  BUILD UP CHARGE DENSITY FOR IBAN-TH BAND, IK-TH K-POINT
C*********NAC = (IBAN-1)*KV3 + IWRT(IK)                                 
C         IF (IREC8.NE.0) NAC=IREC8*NAC-IREC8+1                         
C*********READ(80,REC=NAC) ZV1 
          IIBA=IBA(IK)                                                  
          DO 7830 I=1,KSUM                                              
            ZC1D(I)=DCMPLX(0.0D0,0.0D0)                                
 7830     CONTINUE                                                      
          DO 232 I=1,IIBA
            I1=NBASE(I,IK) 
            L1=IGF1(I1)                                                 
            L2=IGF2(I1)                                                 
            L3=IGF3(I1)                                                 
            ZC3D1(L1,L2,L3) = ZZZ(I,IBAN,IK)                            
C***********ZC3D1(L1,L2,L3) = ZV1(I) 
  232     CONTINUE 
C*****---- INVERSE FAST FOURIER TRANSFORMATION ----- 
          CALL C3FFT(ZC3D1,KFT1,KFT1-1,KFT2,KFT3,IWL,IWM,IWN
     &          ,0,1,1,IWORK,IERR1) 
          IF (IERR1.NE.0) THEN                                          
            WRITE (6,*) ' C3FFT(IFFT C)]  IERR1 = ',IERR1               
cGEN            STOP 
          END IF                                                        
C---------IREC = KV3*(IBAN-1)+IWRT(IK)
C            IF (IREC.LE.IRECMX) THEN                                   
C              IF (IREC9.NE.0) IREC=IREC9*IREC-IREC9+1                  
C              WRITE(90,REC=IREC)  ZC1D                                
C---------END IF 
          DO 240 I=1,KSUM 
            CHGB1(I)=CHGB1(I)+OCCUU(IBAN,IK)*
     &               DCONJG(ZC1D(I))*ZC1D(I)                          
  240     CONTINUE 
 7810 CONTINUE 
 7820   CONTINUE                                                        
!XOCL END SPREAD SUM(CHGB1) 
C!XOCL END PARALLEL
cGEN
      DO 7911 I=1,KSUM
*pdir critical
      CHGSUM(I) = CHGSUM(I) + CHGB1(I)
*pdir endcritical
 7911 CONTINUE
      DO 7921 I=1,KSUM
      CHGB1(I) CHGSUM(I)
 7921 CONTINUE
cGEN
*pdir serial 
      DO 7900 I=1,KSUM                                                  
        ZC1D(I)=CCC*CHGB1(I)                                          
 7900 CONTINUE                                                          
C*****---- FAST FOURIER TRANSFORMATION ----- 
      CALL C3FFT(ZC3D1,KFT1,KFT1-1,KFT2,KFT3,IWL,IWM,IWN
     &          ,0,-1,1,IWORK,IERR) 
      IF (IERR.NE.0) THEN                                               
          WRITE (6,*) ' C3FFT(FFT)]  IERR = ',IERR                      
cGEN          STOP 
      END IF                                                            
      DENOM=1.0D0/DBLE(KVOL)
      DO 30 I=1,KG                                                      
        L1=IGF1(I)                                                      
        L2=IGF2(I)                                                      
        L3=IGF3(I)                                                      
        ZCHG(I)=ZC3D1(L1,L2,L3)*DENOM                                   
   30 CONTINUE 
C---------------KNGP ---> KNG KPO ---> KOPR -----------------------     
      IF (KBZTYP.GE.2) THEN                                             
          CALL CHGAVR(KOPR,NOPR,KIMG) 
      END IF                                                            
*pdir endserial
cGEN 
C---------------------------------------------------------------        
      RETURN                                                            
      END