FTN4,L,T
      PROGRAM MVCP3(19,90),91750-16212 REV.2013 800409
C 
C  ***************************************************************
C  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.  ALL RIGHTS     *
C  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
C  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
C  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
C  ***************************************************************
C 
C   PROGRAM TO MOVE ABSOLUTE RTE FILE !COPY3 TO MPE PROG FILE 
C   COPY3K.PUB.SYS. THE PROG IS USED AS P-TO-P SLAVE FOR
C   RMOTE'S MO (FILE MOVE) COMMAND. 
C 
C     SOURCE:      91750-18212
C 
C     RELOCATABLE: 91750-16212
C 
C     DATE:        JULY 12, 1979
C 
C     PROGRAMMER:  DMT
C 
C 
C  RUN FROM RMOTE WITH
C        $RU,MVCP3,<LOGGING LU>,<SECURITY CODE>,<CARTRIDGE NUMBER>
C  ALL THREE PARAMETERS ARE OPTIONAL. <LOGGING LU> IS USED TO REPORT
C  ERROR MESSAGES. DEFAULT IS THE VALUE RETURNED FROM LOGLU.
C  <SECURITY CODE> IS THE FMP SECURITY CODE FOR !COPY3. DEFAULT IS 0. 
C  <CARTRIDGE NUMBER> IS THE FMP CARTRIDGE FOR !COPY3. DEFAULT IS 0.
C 
      INTEGER  FOPEN
      INTEGER  DCB(144), P(5), BUFFER(128), NAME(3), MNAME(8), SIZE(2)
C 
C   RTE FILE NAME (!COPY3)
      DATA NAME/2H!C,2HOP,2HY3/ 
C   MPE FILE NAME 
      DATA MNAME/2HCO,2HPY,2H3K,2H.P,2HUB,2H.S,2HYS,0/, SIZE/0,0/ 
C 
C PICK UP SCHEDULING PARAMETERS 
      CALL RMPAR(P) 
      LULOG = P(1)
      IF(LULOG.LT.1)LULOG = LOGLU(IDUMMY) 
C 
C RESUME RMOTE'S SESSION VIA CALL TO PRCNM WITH 5TH PRAM
      IF(P(5) .GE. 0) GO TO 960 
      CALL PRCNM(P(5))
C    OPEN UP THE RTE FILE 
      CALL OPEN(DCB,IERR,NAME,0,P(2),P(3))
      IF(IERR.GE.0) GO TO 10
C       RTE FILE ERROR! REPORT IT...
         WRITE(LULOG,125)IERR,NAME,P(2),P(3)
125      FORMAT(10X"FMP ERROR"I6" OPENING "3A2":"I5":"I5) 
         GO TO 910
C 
C    MAKE SURE THE RTE FILE'S TYPE IS 1 
 10   IF(IERR .EQ. 1)GO TO 15 
      WRITE(LULOG,127)NAME,IERR 
127   FORMAT(10X,3A2" IS FILE TYPE"I6", NOT TYPE 1")
      GO TO 910 
C 
C    GET THE SIZE OF THE TYPE-1 RTE FILE TO DETERMINE MPE SIZE
 15   CALL LOCF(DCB,IERR,IREC,IRB,IOFF,JSEC)
      IF(IERR .GE. 0) GO TO 20
         WRITE(LULOG,130)IERR,NAME
130      FORMAT(10X"FMP ERROR"I6" ON LOCF TO "3A2)
         GO TO 910
 20   SIZE(2) = JSEC/2
C    CREATE THE MPE FILE
      IFNUM = FOPEN(MNAME,2000B,104B,128,0,0,0,1,1,SIZE,1,1,1029) 
      IF(ICC(M).EQ.0) GO TO 25
C       MPE FILE ERROR! REPORT IT...
         CALL FCHEK(IFNUM,IERR) 
         WRITE(LULOG,135)IERR,(MNAME(I), I=1,7) 
135      FORMAT(10X"MPE ERROR"I6" OPENING "7A2) 
         GO TO 910
C 
C TRANSFER DATA 
 25   WRITE(LULOG,137)NAME,(MNAME(I), I=1,7)
137   FORMAT(10X"BEGINNING TRANSFER OF "3A2" TO "7A2) 
  
 30   CALL READF(DCB,IERR,BUFFER,128,LGTH)
C    CHECK FOR END-OF-FILE
      IF(IERR .EQ. -12) GO TO 1000
C    CHECK FOR ERROR
      IF(IERR .GE. 0) GO TO 40
C       ERROR IN READING RTE FILE...
         WRITE(LULOG,140)IERR,NAME
140      FORMAT(10X"FMP ERROR"I6" READING "3A2) 
         GO TO 900
C    MAKE SURE RTE FILE IS THE PROPER FORMAT
 40   IF(LGTH .EQ. 128) GO TO 60
C       BAD LENGTH
         WRITE(LULOG,145)NAME 
145      FORMAT(10X"BAD LENGTH IN FILE "3A2)
         GO TO 900
 60   CALL FWRIT(IFNUM,BUFFER,128,0)
      IF(ICC(M).GE.0) GO TO 30
C       ERROR IN WRITING MPE FILE...
         CALL FCHEK(IFNUM,IERR) 
         WRITE(LULOG,150)IERR,(MNAME(I), I=1,7) 
150      FORMAT(10X"MPE ERROR"I6" WRITING "7A2) 
C 
C    ERROR. CLOSE BOTH FILES AND ABORT. 
900   CALL FCLOS(IFNUM,4,0) 
910   CALL CLOSE(DCB) 
950   CALL EXEC(6,0,3)
C 
960   WRITE(LULOG,961)
961   FORMAT(/10X"MVCP3 MUST BE RUN FROM RMOTE (AFTER LOGON TO MPE)"/)
      GO TO 950 
C 
970   CALL FCHEK(IFNUM,IERR)
      WRITE(LULOG,971)IERR,(MNAME(I), I=1,7)
971   FORMAT(10X"MPE ERROR"I6" CLOSING "7A2)
      GO TO 950 
C 
C   GOOD COMPLETION...
1000  CALL CLOSE(DCB) 
      CALL FCLOS(IFNUM,11B,0) 
      IF(ICC(M) .NE. 0)GO TO 970
      END 
          