UP
.PROC,UP*I,\
RANDOM  ' RANDOM OR SEQUENTIAL PL     (NO/YES) '=(*N=YES,YES,NO,*K=YES),
PCDECK  ' DECK NAME FOR PC MODSETS             '=(*N=,*A),
NUMAUX  ' NUMBER OF AUXILIARY PLS              '=(*N=0,*S1(01234)), 
PCPL    ' NAME OF PL WITH PC CODE              '=(*N=,*F),
PC      ' ADD PERMANENT CODE          (NO/YES) '=(*N=NO,NO,YES),
CC      ' ADD CORRECTIVE CODE         (NO/YES) '=(*N=NO,NO,YES),
*CALL COMPROC 
. 
*CALL    PSRLEV 
* UP - UPDATE 'UPDATE' FORMATED PRODUCT PL'S. 
  
.****   UP
.*
.*      UPDATE PROCEDURE FOR THE UPDATE PRODUCTS. 
.**     ENTRY  IF FILE *USER* IS LOCAL, ITS MODSETS WILL ALWAYS BE
.*             REFLECTED IN THE GENERATED BINARIES, BUT WILL NOT BE 
.*             ADDED TO THE NEW PL.  *USER* MODSETS ARE APPLIED LAST. 
.*
.*
.*             RANDOM - YES   WILL ENSURE THAT A RANDOM *NEWPL* 
 .*                           IS PRODUCED 
.*                    - NO    WILL ENSURE THAT A SEQUENTIAL *NEWPL* 
.*                            IS PRODUCED 
.*
.*             PC     - YES   UPDATE WITH BATCH CORRECTIVE CODE.
.*                            BATCH CODE IS ADDED TO THE NEW PL.
.*                            THIS CODE IS RELEASED IN LUI OF RELEASE 
.*                            PRODUCT RELXX TAPES.  IT UPDATES A PREVIOU
.*                            TAPE RELEASE TO THE CURRENT PSR LEVEL.
.*                    -  NO   BATCH CORRECTIVE CODE IS NOT USED.
.*
.*             CC     -  YES  CORRECTIVE CODE FROM THE PCPL IS USED 
.*                            BUT NOT INCLUDED IN THE UPDATED PRODUCT PL
.*                    -  NO   CORRECTIVE CODE IS NOT USED IN THE BUILD. 
.*
.*             PCDECK -       MOD DECK TO BE RETRIEVED OFF THE PCPL.
.*
.*             NUMAUX -  NN   WHERE NN IS THE NUMBER OF SECONDARY OLDPLS
.*                            USED DURING THE UPDATE. 
.*
.*             PCPL   -       CPRD OR CNSP PROGRAM LIBRARIES IN UPDATE
.*                            FORMAT, OPTAINED FROM REL0.  THEY CONTAIN 
.*                            PC AND CC TYPE CODE.
.*
.**     EXIT   THE UPDATE PL IS ON *NEWPL*. IN ADDITION, ANOTHER PL 
.*             CALLED *NEWER* IS CREATED. THIS PL CONTAINS ANY USER 
.*             CODE THAT HAS BEEN APPLIED. NOTE THAT *NEWER* IS NOT 
.*             SAVED AT THE END OF THE INSTALLATION. IT IS ONLY 
.*             PROVIDED FOR THOSE PROCEDURES THAT DO ADDITIONAL 
.*             UPDATES AFTER THE FULL UPDATE. 
.*
  
***************** U P ****************************
BEGIN(GETPC,INSTALL,#PCDECK=PCDECK,#PCPL=PCPL,#PC=PC,#CC=CC)
  
.IF, ($RANDOM$ .EQ. $NO$), UP1. 
  SET(R1=1) ASSUME A RANDOM NEWPL WILL BE GENERATED 
.ENDIF(UP1) 
  
IFE(FILE(MODS,AS),L00003) 
  REWIND(MODS)
*IF DEF,63CSET
  IFE(NUMAUX.EQ.0,L00003)  SKIP TO ELSE(L00003) IF AUXPL(S) 
*ENDIF
  IFE(.NOT.FILE(USER,AS),L00003)
    IFE(NUMAUX.EQ.0,L00004) 
      UPDATE(F,N,I=MODS)
    ELSE(L00004)
    IFE(NUMAUX.EQ.1,L00004) 
      UPDATE(F,P=OLDPL/AUXPL,N,I=MODS)
    ELSE(L00004)
    IFE(NUMAUX.EQ.2,L00004) 
      UPDATE(F,P=OLDPL/AUXPL1/AUXPL,N,I=MODS) 
    ELSE(L00004)
    IFE(NUMAUX.EQ.3,L00004) 
      UPDATE(F,P=OLDPL/AUXPL2/AUXPL1/AUXPL,N,I=MODS)
    ENDIF(L00004) 
    REWIND(NEWPL,NEWER) 
    COPYEI(NEWPL,NEWER) 
ELSE(L00003)
  PACK(USER)
IFE(FILE(MODS,AS),L00005) 
    UPDATE(F,N,C=0,I=MODS)
  ELSE(L00005)
    .IF, ($RANDOM$ .EQ. $NO$) ,UP2. 
      SET(R1=0)   RANDOM NEWPL NOT PRODUCED 
    .ENDIF(UP2) 
    RENAME(NEWPL=OLDPL) 
  ENDIF(L00005) 
  IFE(NUMAUX.EQ.0,L00006) 
    UPDATE(P=NEWPL,F,I=USER,N=NEWER)
  ELSE(L00006)
  IFE(NUMAUX.EQ.1,L00006) 
    UPDATE(P=NEWPL/AUXPL,F,I=USER,N=NEWER)
  ELSE(L00006)
  IFE(NUMAUX.EQ.2,L00006) 
    UPDATE(P=NEWPL/AUXPL1/AUXPL,F,I=USER,N=NEWER) 
  ELSE(L00006)
  IFE(NUMAUX.EQ.3,L00006) 
    UPDATE(P=NEWPL/AUXPL2/AUXPL1/AUXPL,F,I=USER,N=NEWER)
  ENDIF(L00006) 
ENDIF(L00003) 
  
.IF, ($RANDOM$ .EQ. $NO$) ,UP3. 
  IF, (R1 .EQ. 1) ,UP4. 
    RENAME(OLDPL=NEWPL) 
    UPDATE(B) 
  ENDIF(UP4)
.ENDIF(UP3) 
* 
RETURN(OLDPL,MODS)
REVERT. UP ***************************************
EXIT. UP
REVERT(ABORT) UP *********************************
*WEOR 
