C ++********************************************************************
C                                                                      *
C COPYFROMXPLO                                                        *
C                                                                      *
C **********************************************************************
C=*                                                                    *
C=* This file is part of:   SPIDER - Modular Image Processing System.  *
C=* SPIDER System Authors:  Joachim Frank & ArDean Leith               *
C=* Copyright 1985-2010  Health Research Inc.,                         *
C=* Riverview Center, 150 Broadway, Suite 560, Menands, NY 12204.      *
C=* Email: spider@wadsworth.org                                        *
C=*                                                                    *
C=* SPIDER 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=* SPIDER 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=* You should have received a copy of the GNU General Public License  *
C=* along with this program. If not, see <http://www.gnu.org/licenses> *
C=*                                                                    *
C **********************************************************************
C                                                                      *
C COPYFROMXPLO(LUNIN,LUNOUT,MAXMEM)                                                                     *
C 
C PURPOSE: CONVERT EXPLOR (CCP4) VOLUME TO SPIDER VOLUME
C                                                                     *
C PARAMETER:   MAXMEM      SIZE OF COMMON BUFFER              (SENT)                                                                    *
C                                                                      *
C **********************************************************************

        SUBROUTINE  COPYFROMXPLO(LUNIN,LUNOUT,MAXMEM)

        INCLUDE 'CMBLOCK.INC'
        INCLUDE 'CMLIMIT.INC' 
 
        CHARACTER(LEN=MAXNAM)   ::  FILNAM

        COMMON Q(1)

        CHARACTER(LEN=1)        ::  NULL
        CHARACTER*8   CTEXT

        NULL = CHAR(0)

        CALL OPAUXFILE(.TRUE.,FILNAM,NULL,LUNIN,0,
     &                       'O','X-PLOR ASCII',.TRUE.,IRTFLG)
        IF (IRTFLG .NE. 0) RETURN
       
C       FIND FIRST 'REMARKS'
        DO
           READ(LUNIN,821,END=9999,ERR=9999) CTEXT
821        FORMAT(A8)
           IF (CTEXT .EQ. ' REMARKS') EXIT
        ENDDO

C       FIND LAST 'REMARKS'
        DO
           READ(LUNIN,821,END=9999,ERR=9999) CTEXT
           IF (CTEXT .NE. ' REMARKS') EXIT
        ENDDO
        BACKSPACE LUNIN

        READ(LUNIN,822,ERR=9999)  I1,I2,I3,J1,J2,J3,K1,K2,K3
822     FORMAT(9(I8))
        NSAM   = I3-I2+1
        NROW   = J3-J2+1
        NSLICE = K3-K2+1

        IF (NSAM*NROW .GT. MAXMEM) THEN
           CALL ERRT(101,'INSUFFICIENT COMMON BUFFER SPACE',NDUM)
            GOTO 9999
        ENDIF

        IFORM = 3
        MAXIM = 0
        CALL OPFILEC(0,.TRUE.,FILNAM,LUNOUT,'U',IFORM,NSAM,NROW,NSLICE,
     &              MAXIM,'SPIDER OUTPUT',.FALSE.,IRTFLG)
        IF (IRTFLG .NE. 0) GOTO9999

        READ(LUNIN,206,IOSTAT=IERR)  DX,DY,DZ
206     FORMAT(6(1PE12.5))
           IF (IERR .NE. 0) THEN
              CALL ERRT(101,'READING X-PLOR ASCII FILE',NDUM)
              GOTO 9999
           ENDIF

        READ(LUNIN,*)

        DO   K=1,NSLICE
           READ(LUNIN,823,IOSTAT=IERR)  ISL
823        FORMAT(I8)
           IF (IERR .NE. 0) THEN
              CALL ERRT(101,'READING X-PLOR ASCII FILE',NDUM)
              GOTO 9999
           ENDIF

           IF (K-1 .NE. ISL)  THEN
              CALL ERRT(102,'WRONG SLICE',K)
              GOTO 9999
           ENDIF

           READ(LUNIN,824,IOSTAT=IERR) (Q(I),I=1,NSAM*NROW)
824        FORMAT(6E12.5)
           IF (IERR .NE. 0) THEN
              CALL ERRT(101,'READING X-PLOR ASCII FILE',NDUM)
              GOTO 9999
           ENDIF
              
           DO  J=1,NROW
              NREC = J+(K-1)*NROW
              CALL WRTLIN(LUNOUT,Q(1+(J-1)*NSAM),NSAM,NREC)
           ENDDO
        ENDDO

9999    CLOSE(LUNIN)
        CLOSE(LUNOUT)
        RETURN
        END

