FTN4,L
      SUBROUTINE CLONE(IDCB,OLDNAM,NEWNAM,OLDID,NEWID,IER,IFMPER) 
     C,92067-16125 REV.1903 790420
      INTEGER IDCB(144),OLDNAM(3),NEWNAM(3),OLDID 
C 
C 
C  ***************************************************************
C  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  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 
C           NAME:   CLONE 
C           SOURCE: 92067-18464 
C           RELOC:  92067-16125 
C           PGMR:   C.M.M.
C 
C 
C 
C 
C  THE CLONE SUBROUTINE IS CALLED TO DO WHATEVER IT TAKES TO CLONE
C  AN ID SEGMENT. 
C 
C 
C 
C    ON RETURN :   IER  = 1     SUCCESS 
C 
C                  IER  = 2     THE PROGRAM YOU NAMED WAS ALREADY CLONED AND
C                               HAS AN ID SEGMENT. HOWEVER, THAT PROGRAM
C                               IS BUSY.  THAT IS IF YOU WISH TO
C                               RUN IT USE THE EXEC 23 OR 24.  ALTERNATELY
C                               IF YOUR SURE YOU KNOW WHAT YOUR DOING 
C                               ABORT THE PROGRAM (OF,XXXXX,1) AND THEN 
C                               YOU CAN SCHEDULE IT.   ALTERNATELY YOU
C                               MIGHT PICK A DIFFERENT NAME ,SAY XX.LU, 
C                               AND TRY THAT NAME.  HOWEVER, KEEP IN MIND 
C                               THAT THE SESSION ALREADY HAS ONE CLONE OF 
C                               THE PROGRAM.
C 
C                  IER  = 3     DUPLICATE PROGRAM NAME.  THAT IS THE NAME 
C                               YOU GAVE ME IS ALREADY IN THE SYSTEM AND
C                               IS NOT A CLONE OF THE PROGRAM YOU SPECIFIED 
C                               FOR EXAMPLE PROGRAM ABCDE IS WHAT YOU 
C                               WISHED CLONED TO ABCLU. HOWEVER, A PROGRAM
C                               CALLED ABCPQ HAS ALREADY BEEN CLONED TO 
C                               ABCLU.
C                               WHAT YOU MIGHT WANT TO DO AT THIS POINT IS
C                               PICK A DIFFERENT NAME AN TRY THIS SUBROUTINE
C                               AGAIN.  WHY DON'T YOU CALL IT AB.LU .  IF 
C                               THAT DOESN'T WORK YOU COULD TRY SCHEDULING
C                               THE ORGINAL PROGRAM.  RECALL THAT THE 
C                               ID ADDRESS OF THE ORGINAL PROGRAM IS
C                               RETURNED, IF IT IS 0, THEN YOU CAN CALL THIS
C                               SUBROUTINE TO RP THE ORGINAL PROGRAM.  IF 
C                               THAT DOESN'T WORK YOU ARE S.O.L. ISSUE A
C                               'DUPLICATE PROGRAM ERROR MESSAGE & FORGET 
C                                IT.
C 
C                 IER  = 4      SYSTEM OUT OF ID SEGMENTS.  YOU MIGHT TRY 
C                               TO SCHEDULE THE ORGINAL IF IT'S IN MEMORY.
C                               REMEMBER I RETURN THE ORGINAL'S ID ADDRESS
C                               IF HE IS IN MEMORY. 
C 
C                 IER  = 5      PROGRAM NOT FOUND.  IE I COULDN'T FIND IT 
C                               ANYWHERE ON LU 2 OR LU 3 OR ANYPLACE. 
C 
C                 IER  = 6      OPEN ERROR.  I WENT OUT TO LU2 OR LU3 
C                               TO FIND THE PROGRAM & DID INDEED FIND IT. 
C                               HOWEVER, WHEN I WENT TO OPEN THAT FILE TO 
C                               CREATE THE ID SEGMENT AN FMP ERROR OCCURED. 
C                               THE ERROR WILL BE IN THE IFMPER PARAMETER.
C 
C                 IER  = 7      CLOSE ERROR.  FOUND THE PROGRAM ON THE DISC 
C                               BUT WHEN I CLOSED THE FILE AN FMP ERROR 
C                               OCCURED.  THE ERROR WILL BE IN IFMPER.
C 
C                 IER  = 8      CHECKSUM ERROR.  THE PROGRAM WAS FOUND ON 
C                               THE DISC BUT WITH A CHECKSUM ERROR.  THE
C                               PROGRAM WAS PROBABLY NOT LOADED ON THIS 
C                               SYSTEM. 
C 
C                 IER  = 9      THIS PROGRAM CAN'T BE COPIED. THAT IS IT
C                               WAS LOADED WITH THE DON'T COPY OPTION.
C 
C                 IER  = 10     ILLEGAL PROGRAM NAME.  IE WHO DO YOU THINK
C                               YOU KIDDING WITH A PROGRAM NAME LIKE THAT.
C 
C 
C 
C***********************************************************************
C 
C 
C 
C           OK CLEAR OUT A FEW WORDS
C 
      IFMPER = 0
      NEWID = 0 
C 
C                  SEE IF THE ORGINAL PROGRAM IS RP'D 
C 
      OLDID = IDSGA(OLDNAM) 
      IF(OLDID.EQ.0) GO TO 500
      CALL IDDUP(OLDNAM,NEWNAM,IERX)
      GO TO 600 
C 
C           WELL THE PROGRAM ASKED FOR WAS NOT IN MEMORY SO LETS SEE IF 
C           WE CAN FIND IT ON THE DISC. 
C 
C 
C 
500   CALL OPEN(IDCB,IFMPER,OLDNAM,1,0,-2)
      IF(IFMPER .EQ. -6) CALL OPEN(IDCB,IFMPER,OLDNAM,1,0,-3) 
      IF((IFMPER .EQ.-6).OR.(IFMPER.EQ. -32)) GO TO 1050
      IF(IFMPER .LT. 0) GO TO 1060
C 
C            WE FOUND IT !   SO DUPLICATE THE ID. 
C 
      CALL IDRPL(IDCB,IERX,NEWNAM)
      CALL CLOSE(IDCB,IFMPER) 
C 
      IF (IFMPER .LT.0) GO TO 1070
C 
600   IF (IERX .EQ. 0) GO TO 999
C 
C            WE SEEM TO HAVE A PROBLEM
C 
700   IF (IERX .EQ. 19) IER = 8 
      IF (IERX .EQ. 14) IER = 4 
      IF (IERX .EQ. 23) IER = 3 
      IF (IERX .EQ. 17) IER = 9 
      IF (IERX .EQ.-15) IER = 10
C 
C                YOU LOSE TURKEY !!!!!!!!!!!!!
C 
      RETURN
C 
999   IER = 1 
      NEWID = IDSGA(NEWNAM) 
      IF(IAND(IXGET(NEWID + 15),7) .NE. 0) IER = 2
C 
C     SUCCESS !!!!!!!!!!!!!!!!!!!!!!!!
C 
      RETURN
C 
C 
1050  IER = 5 
      RETURN
1060  IER = 6 
      RETURN
1070  IER = 7 
      RETURN
      END 
      END$
                                                                                                          