END 
.PROC,END*I,
MFT     ' MAINFRAME TYPE TO UPDATE             '=(*N=0,*S3/D),
*CALL COMPROC 
. 
.*
.* TEMPORARILY SET R1G TO MFT, SAVE CURRENT R1G IN R3.
.*
SET(R3=R1G) 
SET(R1G=MFT)
.*
BEGIN(STARTIT,INSTALL)
.*
.* ATTACH *PRODUCT* SO THAT NO OTHER JOB CAN UPDATE THE ULIBS UNTIL 
.* THIS JOB IS FINISHED WITH IT.
.*
BEGIN(ACCESS,INSTALL,PRODUCT,M=W) 
.*
.* PROCESS THE BINARY FILE
.*
BEGIN(,IAESMD)
.*
.* CREATE EXECUTABLE PROCEDURE BLDLIB FROM BLDLIBS. 
.*
MODIFY(P=0,C=BLDLIB,Z,F,LO=E)/*CREATE,BLDLIBS/*NOSEQ
BLDLIB. 
.*
.* WHEN BLDLIB FINISHES, UPDATES TO *PRODUCT* WILL BE ON FILE *TPROD* 
.* AND UPDATES TO *DIRFILE* WILL BE ON FILE *TDIR*. 
.*
IF, FILE(TPROD, AS) ,END1.
  
* UPDATE PRODUCT AND DIRFILE
  
  LIBEDIT(P=PRODOLD,B=TPROD,I=0,N=PRODTMP)
  BEGIN(ACCESS,INSTALL,PRODUCT,M=RETURN)
  BEGIN(ACCESS,INSTALL,DIRFILE,M=W) 
  LIBEDIT(P=DIRFOLD,B=TDIR,I=0,N=DIRFTMP) 
  BEGIN(ACCESS,INSTALL,DIRFILE,M=RETURN)
  RETURN(TPROD,TDIR)
  
ELSE(END1)
  
* PRODUCT AND DIRFILE NOT UPDATED.
* RECOPY THE OLD COPY OF PRODUCT AND RETURN IT. 
  
  REWIND(PRODOLD) 
  COPYEI(PRODOLD,PRODTMP) 
  BEGIN(ACCESS,INSTALL,PRODUCT,M=RETURN)
  
ENDIF(END1) 
.*
IF, FILE(GLOBLGO,AS) ,END2. 
  
* UPDATE GLOBLIB
  
  RETURN(GTLGO) 
  GTR(GLOBLGO,GTLGO)ABS/*,REL/*,OVL/*,PROC/*
  BEGIN(ACCESS,INSTALL,GLOBLIB,M=W) 
  LIBEDIT(P=GLOBOLD,B=GTLGO,U,N=GLOBTMP,Z)+*BUILD,GLOBLIB 
  BEGIN(ACCESS,INSTALL,GLOBLIB,M=RETURN)
  RETURN(NEW,GTLGO) 
  
ELSE(END2)
  
* GLOBLGO NOT UPDATED 
  
ENDIF(END2) 
  
.*
.* RESTORE R1G
.*
SET(R1G=R3) 
  
REVERT. END 
EXIT. END 
REVERT(ABORT) END 
*WEOR 
