SPL,L,O,M 
!     NAME:   CO..
!     SOURCE: 92067-18228 
!     RELOC:  92067-16185 
!     PGMR:   G.A.A.
! 
!  ***************************************************************
!  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS     *
!  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
!  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
!  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
!  ***************************************************************
! 
      NAME  CO..(8) "92067-16185 REV.1903 790302" 
! 
!  MODIFICATION RECORD: 
! 
!  1) 780920   TO ALLOW COPY OF LARGE FILES USING ECREA ROUTINE 
!  2) 790113   TO MASK OFF LOCK IN LU WORD FROM DS.LU 
! 
!     CO.. IS A MODULE OF THE RTE FMGR PROGRAM
!     CO.. COPIES ALL DISC FILES ON ONE DISC TO SOME OTHER DISC 
!     THE COMMAND IS: 
!        CO, CR, CR2
!     WHERE:
!        CR IS THE "FROM" DISC ID 
!        CR2 IS THE "TO" DISC ID
! 
! 
!     DEFINE  EXTERNALS 
! 
      LET  DR.RD,DU..,MSS.,FM.ER,ECREA,CLOS.,IER.\
                         BE SUBROUTINE,EXTERNAL 
      LET .DMP           BE SUBROUTINE,EXTERNAL,DIRECT
! 
      LET PK.DR,N.OPL, DS.LU BE INTEGER,EXTERNAL
      LET O.BUF     BE INTEGER ,EXTERNAL
! 
!     DEFINE LOCALS 
! 
      LET SETAD   BE SUBROUTINE 
! 
      LET STLIS,FNAM(3),LTY,TNAM(3),ISIZ(4),BLKMP(2),\
            OPLS, SACD, DM(14)  BE INTEGER
      INITIALIZE BLKMP TO 0,128 
CO..: SUBROUTINE (N, LIS,ER) GLOBAL 
                    !SET UP DU.. CALL ARRAY 
      FOR  T _ @ STLIS TO @ STLIS+23 DO  $T _0
      LTY,STLIS,OPLS_3 !SET TYPE FLAGS
! 
      SACD _ 51501K   ! SAVE  EOF  MARKS
! 
      LIS5 _ [LIS1 _ @ LIS+1]+4 
! 
!     SET UP THE OPTION   LIST ADDRESSES
! 
      OPS2_ [OPS1_[OPT2 _ [OPCR2_ [OPL_ [OPT1_ [\ 
                  OPCR1_ @N.OPL+1]+1]+3] \
                    + 1]+1]+1]+1
! 
      BLK_0 
      FOR T _  OPCR1  TO  OPS2  DO  $T _ 0
! 
      $ OPCR1 _ $ LIS1
      $ OPCR2 _ $ LIS5
      ADD_128  !SET UP ADDRESS INCREMENT
! 
      DRBF _      @PK.DR  ! SET PACK BUFADD.
! 
!     CHECK FOR LEGAL DISCS.
! 
      IF $ LIS5 THEN    [DR.RD(1,$LIS5,0)?[ \ 
                         GO TO NODES];LU_$$@DS.LU AND 377K\ 
                         ;GO TO INCK] 
! 
NODES:DO[ER_21;RETURN]! NO DISC, EXIT 
! 
INCK: IFNOT $LIS1  THEN GO TO NODES 
! 
      SETAD ? [GO TO NODES] 
      IF LU = $$@DS.LU AND 377K THEN GO TO NODES
! 
!     BOTH DISCS ARE DEFINED AND
!     SEPARATE
! 
!     START TRANSFER
! 
XFER: SETAD? [RETURN   ]
      IF  $PKD<0  THEN GO TO XFER 
! 
      IFNOT  $PKD3  THEN GO TO XFER 
      IF $PKD5 AND 177400K THEN GOTO XFER !SKIP EXTENTS 
      FM.ER(1,FNAM,3)         !SEND CURRENT NAME TO LOG 
      ECREA(O.BUF,.E.R.,$PKD,ISIZ,$PKD3,$PKD8,$LIS5,0,0,0,70707K)!CREAT FILE
      IF .E.R.<0 THEN  [MSS.(.E.R.-2000);GO TO XFER]  
      ERR_-2  !SET COPY CALL FLAG FOR DU ROUTINE
      DU..(4, STLIS,ERR) !CALL STORE TO TRANSFER
! 
      IFNOT ERR THEN GO TO XFER 
! 
      ER _ ERR- 2000
! 
BAD:  MSS. (ER)          !PRINT MESSAGE 
! 
      IF ER < 2000 THEN [ER_0; GO TO XFER]
! 
      ER _ 22 
      RETURN
      END 
! 
! 
SETAD:SUBROUTINE  FEXIT   ! READ DIRECTORY
                          ! AND SET UP ST CALL
! 
      IF ADD = 128 THEN [ \ 
            DR.RD (1,$LIS1,BLK)?[FRETURN];\ 
                ADD_ 0; BLK_ BLK+1] 
! 
      PKD8_[PKD7_[PKD6_[PKD5_[PKD3_[PKD2_[PKD_ \
             DRBF+ADD]+2]+1]+2]+1]+1]+1 
! 
      ADD_ ADD+16   !SET ADD FOR NEXT TIME
      IFNOT   $PKD THEN FRETURN !END OF DIR.
      T1_@FNAM     !SET  TO MOVE
      T2_@ TNAM     !NAME  TO  CALL 
      FOR  T _ PKD TO PKD2 DO[$T1,$T2_ $T;\ 
                                T1_T1 +1; T2_T2+1]
! 
      N.OPL,$OPL_$PKD8            ! SET SECURITY CODES
! 
      $OPT1,$OPT2_$PKD3           ! SET TYPES 
      IF $PKD6 < 0 THEN           \IF NEGATIVE SIZE, THEN 
         [.B._ -$PKD6;.A._0;      \MAKE IT POSITIVE AND 
          CALL .DMP(BLKMP);       \MULTIPLY BY BLK MULTIPLIER 
          ISIZ(1)_.A.;ISIZ(2)_.B.; \SAVE FOR ECREA
          $OPS1_$PKD6],           \ 
      ELSE [ISIZ(1)_0;ISIZ(2),$OPS1_$PKD6/2]
      ISIZ(3)_0 
      ISIZ(4),$OPS2_$PKD7         ! SET DEST REC. SIZE
      RETURN                      ! DONE - RETURN 
      END 
      END 
      END$
                                                                                                                                                                                                                            