SYSGEN
.PROC,SYSGEN*I, 
INSUN   ' INSTALLATION USER NAME               '=(*N=INSTALL,*F), 
NETOPUN ' NETWORK OPERATIONS USER NAME         '=(*N=NETOPS,*F),
NETADUN ' NETWORK ADMINISTRATION USER NAME     '=(*N=NETADMN,*F), 
*CALL COMBLUN 
*CALL COMIN 
*CALL COMOUT
*CALL COMUSER 
*CALL COMLIST 
*CALL COMTOB
*CALL COMIA 
*CALL COMTOL
*CALL COMPROC 
. 
  
* SYSGEN - GENERATE SYSGEN SITE TOOLS 
*CALL PSRLEV
  
.*
.* START SITE VIA SUBPROC 
.*
BEGIN(SUBPROC,INSTALL,SYSGEN,,LIST,MAPTYPE,IA,TOBLD,TOLIST,USERF) 
REVERT.        SYSGEN 
EXIT.          SYSGEN 
REVERT(ABORT)  SYSGEN 
  
.DATA,ZZZPROC 
.PROC,SYSGEN. 
*CALL PSRLEV
  
.* GET SYSGEN SOURCE FROM RECORD TEXT/SYSGEN IN INSTALL FILE
  
GTR(INSTALL,SITE)SYSGEN 
  
.* EDIT FILE SITE AND REPLACE ALL OCCURRENCES OF
.* ZZBLDUN WITH THE VALUE BLDUN (CDC BUILD USERNAME- MAY NOT BE CHANGED)
.* ZZIUN   WITH THE VALUE INSUN (INSTALLATION USERNAME- MAY BE CHANGED) 
.* ZZNOPUN WITH THE VALUE NETOPUN (NETWORK OPERATIONS USERNAME -
.*                                              MAY BE CHANGED) 
.* ZZNADUN WITH THE VALUE NETADUN (NETWORK ADMINISTRATION USERNAME -
.*                                              MAY BE CHANGED) 
.* ZZPSRIN WITH THE VALUE PSRIN (RELEASED PSR LEVEL- MAY NOT BE CHANGED)
.* ZZPSROUT WITH THE VALUE PSROUT (OUTPUT PSR LEVEL- MAY BE CHANGED)
  
EDIT(SITE,I=IN,L=0) 
  
.* MERGE INTO A PROCEDURE FILE
  
MODIFY(P=0,C=OLD,Z,F,L=LIST)+*CREATE SITE+*PREFIXC /+*NOSEQ 
  
BEGIN(SAVELIB,INSTALL,LIBNAME=PFGLIB,LIB=OLD) 
  
.* GENERATE UPSTRT BINARIES 
  
RETURN(BIN) 
MODIFY(F,P=0,Z,N=0)/*CREATE,UPSTRT1/*PREFIXC +
FTN5(I,B=BIN,L=LIST,OPT=2,LO=R/A/M/S,ET)
BEGIN(GETULIB,INSTALL,SRVLIB,FTN5LIB,SYSLIB,BAMLIB) 
LDSET(ERR=ALL,PRESET=ZERO)
LDSET(LIB=SYSLIB/FTN5LIB/BAMLIB/SRVLIB) 
LOAD(BIN) 
NOGO(LGO) 
GTR(LGO,GLOBLGO)ABS/UPSTRT
  
GTR(OLD,LGO)PROC/SYSGEN 
GTR(OLD,GLOBLGO)PROC/SYSGEN 
GTR(OLD,SYSGEN)PROC/SYSGEN
REPLACE(SYSGEN) 
CHANGE(SYSGEN/CT=S) 
BEGIN(PERMIT,INSTALL,REALFN=SYSGEN,SYMFN=SYSGEN)
BEGIN(GENDIR,INSTALL,LIB=5) 
BEGIN(SAVELGO,INSTALL,PRDNAME=DECK) 
BEGIN(END,INSTALL,MFT=R1G+) 
$REVERT.       SYSGEN 
$EXIT.         SYSGEN 
$REVERT(ABORT) SYSGEN 
#.DATA,IN 
RS:/ZZBLDUN/,/BLDUN/;*
RS:/ZZPSRIN/,/PSRIN/;*
RS:/ZZPSROUT/,/PSROUT/;*
RS:/ZZNOPUN/,/NETOPUN/;*
RS:/ZZNADUN/,/NETADUN/;*
#.IF, (R1G .EQ. 0) ,SYSGEN1.
RS:/ZZIUN/,/INSUN/;*
#.ELSE(SYSGEN1) 
RS:/ZZIUN/,/#INSTALL/;* 
#.ENDIF(SYSGEN1)
END 
#.DATA,UPSTRT1
CVARS 
COMMON
      IMPLICIT INTEGER (A - Z)
  
C *** PARAMETER DECLARATION 
  
C     MAXIMIMUM NUMBER OF DIRECTIVES, NUMBER OF CHARACTERS ON CARD
      PARAMETER ( MDIR = 30, LCARD = 80 ) 
  
C *** COMMON VARIABLE DECLARATIONS
  
C     INFO HOLDS EACH DIRECTIVE THAT IS READ IN FROM FILE *TAPE2* 
      CHARACTER INFO(1:MDIR)*(LCARD)
  
C     BINFO HOLDS BEGINNING CHAR FOR SEARCH, EINFO HOLDS ENDING CHAR. 
      INTEGER   BINFO(1:MDIR),EINFO(1:MDIR) 
  
C     PINFO INDICATES IF THE DIRECTIVE CARD HAS BEEN WRITTEN TO NAMSOUT 
C     IE. (P)ROCESSED.
      LOGICAL   PINFO(1:MDIR) 
  
C     TINFO INDICATES WHAT (T)YPE OF DIRECITIVE, CARD, 'P'ARAM OR 'J'OB 
      CHARACTER TINFO(1:MDIR)*1 
  
C     NUMBER OF DIRECTIVE CARDS ACTUALLY READ IN
      INTEGER   NDIR
  
C     COMMON BLOCKS 
  
      COMMON /IDATA/ BINFO, EINFO, PINFO, NDIR
      COMMON /CDATA/ INFO,TINFO 
#.EOR 
UPSTRT
      PROGRAM UPSTRT(TAPE1,TAPE2,TAPE3) 
C *** TAPE1 - INPUT NAMSTRT FILE, NAMSIN
C *** TAPE2 - DIRECTIVES CONTAINING PARAM AND JOB STATEMENTS
C *** TAPE3 - OUTPUT NAMSTRT FILE, NAMSOUT, WITH DIRECTIVES APPLIED 
  
C **********************************************************************
C *** THIS PROGRAM READS IN THE PARAMETER RECORDS FROM A NAMSTRT FILE 
C *** AND UPDATES OR ADDS IN PARAM AND JOB STATEMENTS WHICH ARE READ IN 
C *** FROM A DIRECTIVES FILE. THE CHANGED PARAMETER RECORDS ARE WRITTEN 
C *** TO AN OUTPUT NAMSTRT FILE.
C *** 
C *** *TAPE1* IS A MULTI-FILE FILE WITH ONE PARAM RECORD IN EACH FILE.
C *** *TAPE2* IS A SINGLE-FILE FILE CONTAINING PARAM/JOB STATEMENTS 
C ***         IN THE EXACT FORMAT THAT THEY SHOULD BE PUT ONTO THE
C ***         OUTPUT NAMSTRT FILE, *TAPE3*. THE SEARCH WILL MATCH 
C ***         PARAM STATEMENTS UP TO THE EQUAL SIGN(=)
C ***         AND JOB STATEMENTS UP TO THE FIRST COMMA (,). 
C ***         IE. "PARAM(CDCNET=" AND "JOB(JOBRBF," ARE MATCHED,
C ***         REMAINING CHARACTERS ON THE LINE ARE NOT CHECKED. 
C *** *TAPE3* IS WRITTEN WITH EACH PARAMETER RECORD SEPARATED BY
C ***         A NOS END-OF-RECORD MARK. 
C **********************************************************************
  
+CALL CVARS 
  
C *** 
C *** LOCAL VARIABLE DECLARATIONS 
C *** 
  
C     SCRATCH INPUT VARIABLE
      CHARACTER CARD*(LCARD)
  
C     FLAG TO INDICATE WHEN THE REAL END OF NAMSIN IS FOUND 
C     (THIS OCCURS WHEN AN EOF IS FOUND ON TWO CONSECUTIVE READS) 
      LOGICAL   REALEOF 
  
C     FLAGS TO INDICATE WHAT KIND OF CARD IS BEING LOOKED FOR, PARAM
C     CARD OR JOB CARD
      LOGICAL   PARAM,JOB 
  
C **********************************************************************
C *** BEGIN MAIN PROGRAM
C **********************************************************************
  
C *** CALL INIT SUBROUTINE TO READ IN DIRECTIVES AND SET VARIABLES
C *** NDIR, INFO, BINFO, EINFO, PINFO, TINFO
  
      CALL INIT 
  
C *** READ IN AND PROCESS NAMSTRT FILE
C *** REPLACE DIRECTIVE LINES AS THEY ARE FOUND 
C *** ADD NEW DIRECTIVES IF THERE ARE NONE TO REPLACE 
  
      REWIND 1
      REWIND 3
      REALEOF = .FALSE. 
  
   90 CONTINUE
  
C *** THESE FLAGS WILL BE SET TO TRUE WHEN THE APPROPRIATE TYPE CARD
C *** IS FOUND IN NAMSIN. 
  
      PARAM = .FALSE. 
      JOB   = .FALSE. 
      DO 95 I=1,NDIR
        PINFO(I) = .FALSE.
   95 CONTINUE
  
C *** WHILE NOT EOF ON NAMSIN 
  
  100 CONTINUE
      READ(1, '(A)', END=200) CARD
      REALEOF = .FALSE. 
  
C *** TEST FOR MATCH
  
      IF (CARD(1:6) .EQ. 'PARAM(') THEN 
C       SEARCH THE *INFO* TABLES AND WRITE OUT REPLACEMENT PARAM CARD 
C       OR THE CARD READ IN IF NO MATCH IS FOUND. 
        CALL SRCHREP( CARD )
        PARAM = .TRUE.
      ELSE IF (CARD(1:4) .EQ. 'JOB(') THEN
C       ON 1ST JOB CARD, DUMP ANY UNPROCESSED PARAM DIRECTIVES
        IF (.NOT. JOB) CALL DMPINFO( 'P' )
C       SEARCH THE *INFO* TABLES AND WRITE OUT REPLACEMENT JOB CARD 
C       OR THE CARD READ IN IF NO MATCH IS FOUND. 
        CALL SRCHREP( CARD )
        JOB = .TRUE.
      ELSE
C ***   NEITHER PARAM NOR JOB CARD FOUND
        IF (PARAM) THEN 
C ***     SINCE PARAM CARDS ARE GROUPED, AND THE CARD JUST READ IN
C ***     IS NOT A PARAM CARD, DUMP OUT ANY UNPROCESSED PARAM CARDS 
C ***     FROM THE *INFO* TABLES. THESE ARE NEW PARAM CARDS.
          CALL DMPINFO( 'P' ) 
        ENDIF 
        IF (JOB) THEN 
C ***     SINCE JOB CARDS ARE GROUPED, AND THE CARD JUST READ IN
C ***     IS NOT A JOB CARD, DUMP OUT ANY UNPROCESSED JOB CARDS 
C ***     FROM THE *INFO* TABLES. THESE ARE NEW JOB CARDS.
          CALL DMPINFO( 'J' ) 
        ENDIF 
C ***   COPY THE CARD FROM NAMSIN TO NAMSOUT
        WRITE(3, '(A)') CARD
      ENDIF 
  
      GOTO 100
C *** END OF FILE 
  200 CONTINUE
  
C *** AN END-OF-FILE CONDITION MARKS THE END OF A PARAMETER RECORD, IE. 
C *** INIT, RESTRT, ETC.
C *** WRITE AN END-OF-RECORD MARK TO THE OUTPUT NAMSTRT FILE AND SET
C *** REALEOF FLAG  TO TRUE.
C *** IF TWO EOF'S ARE ENCOUNTERED ON CONSECUTIVE READS 
C *** (REALEOF IS TRUE) THEN THE ACTUAL END-OF-FILE HAS BEEN HIT. 
C *** THE *UPSTRT* PROGRAM WILL THEN TERMINATE. 
  
      IF (EOF(1) .NE. 0) THEN 
        IF (.NOT. REALEOF) THEN 
C ***     DUMP OUT ANY UNPROCESSED PARAM/JOB DIRECTIVES 
          CALL DMPINFO( 'P' ) 
          CALL DMPINFO( 'J' ) 
          REALEOF = .TRUE.
          CALL WRTEOR(L"TAPE3") 
          GOTO 90 
        ENDIF 
      ENDIF 
  
      STOP
      END 
      SUBROUTINE INIT 
C *** 
C *** READ IN *TAPE2* AND INITIALIZE THE *INFO* ARRAYS. 
C *** 
  
+CALL CVARS 
  
C *** 
C *** LOCAL VARIABLE DECLARATIONS 
C *** 
  
      INTEGER   BEGINFO, ENDINFO
      CHARACTER CARD*(LCARD)
  
      REWIND 2
      NDIR = 0
  
   10 CONTINUE
      READ( 2, '(A)', END=30) CARD
  
      IF ( CARD(1:4) .EQ. 'JOB(' ) THEN 
C ***   SCAN CARD TO SET BEGIN/END CHARACTERS FOR SEARCHING 
C ***   EXPECTED CARD FORM IS, "JOB(APPL,...)"
        DO 15 I = 5,LCARD 
          IF ( CARD(I:I) .EQ. ',' ) THEN
            BEGCHAR = 5 
            ENDCHAR = I - 1 
            GOTO 17 
          ENDIF 
   15   CONTINUE
        CALL REMARK(' INVALID JOB STATEMENT ')
        CALL REMARK( ' **' // CARD // '**' )
        CALL ABORT
   17   CONTINUE
  
      ELSE IF ( CARD(1:6) .EQ. 'PARAM(' ) THEN
  
C ***   SCAN CARD AND SET BEGIN/END CHARACTERS FOR SEARCHING
C ***   EXPECTED CARD FORM IS, "PARAM(NAME=VALUE)"
        DO 20 I = 7, LCARD
          IF ( CARD(I:I) .EQ. '=' ) THEN
            BEGCHAR = 7 
            ENDCHAR = I - 1 
            GOTO 22 
          ENDIF 
   20   CONTINUE
        CALL REMARK(' INVALID PARAM STATEMENT ')
        CALL REMARK( ' **' // CARD // '**' )
        CALL ABORT
   22   CONTINUE
  
      ELSE
  
        CALL REMARK(' INVALID DIRECTIVE STATEMENT ')
        CALL REMARK( ' **' // CARD // '**' )
        CALL ABORT
  
      ENDIF 
      NDIR = NDIR + 1 
  
      IF (NDIR .GT. MDIR) THEN
        CALL REMARK( ' TOO MANY DIRECTIVES SPECIFIED ') 
        CALL ABORT
      ELSE
        INFO(NDIR)  = CARD
        BINFO(NDIR) = BEGCHAR 
        EINFO(NDIR) = ENDCHAR 
        PINFO(NDIR) = .FALSE. 
        TINFO(NDIR) = CARD(1:1) 
      ENDIF 
  
      GOTO 10 
C *** END OF FILE 
   30 CONTINUE
  
      IF (NDIR .EQ. 0) THEN 
        CALL REMARK( 'NO INPUT DIRECTIVES') 
        CALL ABORT
      ENDIF 
  
      RETURN
      END 
      SUBROUTINE SRCHREP( CARD )
C *** 
C *** SEARCH THE *INFO* ARRAYS AND IF A MATCH IS FOUND, WRITE OUT 
C *** THE PARAM/JOB CARD FROM THE INFO ARRAY AND INDICATE THAT THE
C *** ENTRY HAS BEEN PROCESSED. IF THE ENTRY HAD ALREADY BEEN PROCESSED 
C *** IT IS NOT WRITTEN OUT AGAIN.
C *** IF NO MATCH IS FOUND IN THE ARRAY, THE ORIGINAL CARD IS WRITTEN 
C *** TO NAMSOUT. 
C *** 
  
+CALL CVARS 
  
C *** 
C *** PARAMETER VARIABLE DECLARATIONS 
C *** 
  
      CHARACTER CARD*(LCARD)
  
      DO 150 I=1,NDIR 
        IF ( CARD( BINFO(I):EINFO(I) ) .EQ. 
     .       INFO(I)( BINFO(I):EINFO(I) ) ) THEN
          IF (.NOT. PINFO(I)) WRITE(3,'(A)') INFO(I)
          PINFO(I) = .TRUE. 
          GOTO 155
        ENDIF 
  150 CONTINUE
      WRITE(3,'(A)') CARD 
  155 CONTINUE
  
      RETURN
      END 
      SUBROUTINE DMPINFO( TYPE )
C *** 
C *** COPY ALL ENTRIES IN THE *INFO* ARRAY THAT MATCH THE *TYPE*
C *** PARAMETER (AS INDICATED BY THE VALUE IN THE *TINFO* ARRAY)
C *** THAT HAVE NOT YET BEEN PROCESSED (AS INDICATED BY THE VALUE IN
C *** THE *PINFO* ARRAY). 
C *** 
  
+CALL CVARS 
  
C *** 
C *** PARAMETER VARIABLE DECLARATIONS 
C *** 
  
      CHARACTER TYPE*1
  
      DO 150 I=1,NDIR 
        IF ( (TINFO(I) .EQ. TYPE) .AND. (.NOT. PINFO(I)) ) THEN 
          WRITE(3,'(A)') INFO(I)
          PINFO(I) = .TRUE. 
        ENDIF 
  150 CONTINUE
  
      RETURN
      END 
      SUBROUTINE WRTEOR(NAME) 
C *** THIS ROUTINE, IN COMBINATION WITH *WEORSUB* WILL WRITE
C *** A NOS END-OF-RECORD MARK. 
      IMPLICIT INTEGER (A-Z)
      INTEGER  MARK(1)
      MARK(1) = LOCF(MARK(1))-1 
      ADDR = GETFIT(NAME) 
      CALL WEORSUB(MARK(ADDR-MARK(1)))
      RETURN
      END 
      SUBROUTINE WEORSUB(FIT) 
C *** THIS ROUTINE CALLS A BAM ROUTINE TO WRITE A NOS 
C *** END-OF-RECORD MARK. 
      IMPLICIT INTEGER (A-Z)
      CALL WEOR(FIT)
      RETURN
      END 
          IDENT  COMPIO 
*         THIS ROUTINE IS USED AS PART OF THE PROCESS USED TO WRITE 
*         A NOS END-OF-RECORD MARK. 
          ENTRY  GETFIT 
          LDSET  LIB=BAMLIB 
          LDSET  LIB=SRVLIB        THIS IS FOR THE *CALL ABORT* CALLS 
 GETFIT   BSS    1
          RJ     =XGETFIT.
          BX6    X1 
          EQ     GETFIT 
          END 
*WEOR 
SYSGEN
.PROC,ACQUIRE*I 
,P1 [FILE TO ACQUIRE] =(*F) 
,P2 [NO ABORT OPTION] =(NA,ABORT,P2=ABORT,*N=ABORT) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   A C Q U I R E *** 
  
$RETURN(P1) 
$ATTACH(P1/NA)
$IF, FILE(P1, .NOT. AS) ,T1.
  $GET(P1/NA) 
  $IF, FILE(P1, .NOT. AS) ,T2.
    $IF, ($P2$ .EQ. $ABORT$) ,T3. 
****************************************
*    COULD NOT FIND FILE P1 
****************************************
$SKIP(FAIL) 
    $ENDIF(T3)
  $ENDIF(T2)
$ENDIF(T1)
  
***** E N D   A C Q U I R E ******* 
$REVERT(NOLIST) SYSGEN(ACQUIRE) 
$EXIT. SYSGEN(ACQUIRE)
$ENDIF(FAIL)
$REVERT(ABORT) SYSGEN(ACQUIRE) FAILED 
/WEOR 
.PROC,APL2*I
,P1 [INSTALL DEBUG VERSION] =(*N=NO,P1=NO,YES,NO) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   A P L 2 **************
  
.IF, FILE(PFGAPL2, .NOT. AS) ,APL20.
  SYSGEN(RECLAIM, PFGAPL2)
.ENDIF(APL20) 
  
$IF, FILE(PFGAPL2, AS) ,APL21.
  $REWIND(PFGAPL2)
  
****************************************
*  INSTALL USERNAME APL0
****************************************
  
SYSGEN(USER, APL0)
RENAME(DISK=PFGAPL2)
IFE($P1$.EQ.$YES$,DEF)
PURGE(APLDEBG/NA) 
DEFINE(APLDEBG/CT=PU,M=RM,PW=E654X05) 
SKIPF(DISK,2) 
COPYBF(DISK,APLDEBG)-  FILE 3 
RETURN(APLDEBG) 
ELSE(DEF) 
PURGE(APLLIB,APLPROD,TAPLTST,TAPLOUT/NA)
PURGE(APL,AWSFIX,AFIFIX,AOVFIX,NEWSF/NA)
PURGE(FUTIL/NA) 
* 
*  INSTALL THE BASE APL SYSTEM
* 
SKIPF(DISK) FILE 1
DEFINE(FUTIL/CT=PU,M=R) 
DEFINE(APLLIB)
DEFINE(APLPROD/CT=PU,M=RM,PW=E654X05) 
DEFINE(TAPLTST,TAPLOUT) 
DEFINE(NEWSF/CT=S,M=RM) 
PERMIT(NEWSF,APL1=M)
* 
COPYBF(DISK,APLLIB) - FILE 2
COPYBF(DISK,APLPROD)- FILE 3
COPYBF(DISK,TAPLTST)- FILE 4
COPYBF(DISK,TAPLOUT)- FILE 5
REWIND(APLLIB)
COPYBR(APLLIB,FUTIL)
COPYBR(APLLIB,APL)
COPYBR(APLLIB,AWSFIX) 
COPYBR(APLLIB,AFIFIX) 
COPYBR(APLLIB,AOVFIX) 
COPYBF(DISK,NEWSF)  - FILE 6
* 
SAVE(APL,AOVFIX/CT=PU)
SAVE(AWSFIX,AFIFIX/CT=PU,M=E) 
AFIFIX(NEWSF) 
PERMIT(TAPLTST,APL1)
RETURN(APLLIB, APLPROD, TAPLTST, TAPLOUT) 
RETURN(APL, AWSFIX, AFIFIX, AOVFIX) 
RETURN(NEWSF, FUTIL)
ENDIF(DEF)
  
****************************************
*  INSTALL USERNAME APL1
****************************************
  
SYSGEN(USER, APL1)
  
REWIND(DISK)
* 
PURGE(FILESYS,FILES2,APLNEWS/NA)
PURGE(CATALOG,WSFNS,TAPLWS,TOTALWS/NA)
* 
*  INSTALL APL WORKSPACE FILES
* 
DEFINE(FILESYS,FILES2,APLNEWS/CT=PU,M=R)
DEFINE(CATALOG,WSFNS,TAPLWS,TOTALWS/CT=PU,M=R)
SKIPF(DISK,6) 
COPYBF(DISK,FILESYS)
COPYBF(DISK,FILES2) 
COPYBF(DISK,APLNEWS)
COPYBF(DISK,CATALOG)
COPYBF(DISK,WSFNS)
COPYBF(DISK,TAPLWS) 
COPYBF(DISK,TOTALWS)
UNLOAD(DISK)
RETURN(FILESYS, FILES2, APLNEWS)
RETURN(CATALOG, WSFNS, TAPLWS, TOTALWS) 
GET(AWSFIX/UN=APL0) 
AWSFIX(FILESYS,FILES2,APLNEWS)
AWSFIX(CATALOG,WSFNS,TAPLWS,TOTALWS)
$RETURN(PFGAPL2, AWSFIX)
  
$ENDIF(APL21) 
  
***** E N D   A P L 2 ******************
$REVERT(NOLIST) SYSGEN(APL2)
$EXIT. SYSGEN(APL2) 
$REVERT(ABORT) SYSGEN(APL2) FAILED
/WEOR 
.PROC,AP1I*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   A P 1 I **************
  
.IF, FILE(PFGAP1I, .NOT. AS) ,AP1I0.
  SYSGEN(RECLAIM, PFGAP1I)
.ENDIF(AP1I0) 
  
$IF, FILE(PFGAP1I, AS) ,AP1I1.
  SYSGEN(USER, CDCCE) 
  $RETURN(CSTFU, CSCMD, CSQMM, CSMAINT) 
  $RETURN(CSVDMT, CS24KM, CSHSMT, CSDSOP4)
  $RETURN(CSECS, CSECSTA, CSCMI)
  $REWIND(PFGAP1I)
  $COPYBF(PFGAP1I,CSTFU)
  $COPYBF(PFGAP1I,CSCMD)
  $COPYBF(PFGAP1I,CSQMM)
  $COPYBF(PFGAP1I,CSMAINT)
  $COPYBF(PFGAP1I,CSVDMT) 
  $COPYBF(PFGAP1I,CS24KM) 
  $COPYBF(PFGAP1I,CSDSOP4)
  $COPYBF(PFGAP1I,CSECS)
  $COPYBF(PFGAP1I,CSECSTA)
  $COPYBF(PFGAP1I,CSHSMT) 
  $COPYBF(PFGAP1I,CSCMI)
  SYSGEN(RETAIN, CSTFU,   DA) 
  SYSGEN(RETAIN, CSCMD,   DA) 
  SYSGEN(RETAIN, CSQMM,   DA) 
  SYSGEN(RETAIN, CSMAINT, DA) 
  SYSGEN(RETAIN, CSVDMT,  DA) 
  SYSGEN(RETAIN, CS24KM,  DA) 
  SYSGEN(RETAIN, CSDSOP4, DA) 
  SYSGEN(RETAIN, CSECS,   DA) 
  SYSGEN(RETAIN, CSECSTA, DA) 
  SYSGEN(RETAIN, CSHSMT,  DA) 
  SYSGEN(RETAIN, CSCMI,   DA) 
  SYSGEN(USER, CDCCE2)
  $RETURN(CSTFU, CSCMD, CSQMM, CSMAINT) 
  $RETURN(CSVDMT, CS24KM, CSHSMT, CSDSOP4)
  $RETURN(CSECS, CSECSTA, CSCMI)
  $REWIND(PFGAP1I)
  $COPYBF(PFGAP1I,CSTFU)
  $COPYBF(PFGAP1I,CSCMD)
  $COPYBF(PFGAP1I,CSQMM)
  $COPYBF(PFGAP1I,CSMAINT)
  $COPYBF(PFGAP1I,CSVDMT) 
  $COPYBF(PFGAP1I,CS24KM) 
  $COPYBF(PFGAP1I,CSDSOP4)
  $COPYBF(PFGAP1I,CSECS)
  $COPYBF(PFGAP1I,CSECSTA)
  $COPYBF(PFGAP1I,CSHSMT) 
  $COPYBF(PFGAP1I,CSCMI)
  SYSGEN(RETAIN, CSTFU,   DA) 
  SYSGEN(RETAIN, CSCMD,   DA) 
  SYSGEN(RETAIN, CSQMM,   DA) 
  SYSGEN(RETAIN, CSMAINT, DA) 
  SYSGEN(RETAIN, CSVDMT,  DA) 
  SYSGEN(RETAIN, CS24KM,  DA) 
  SYSGEN(RETAIN, CSDSOP4, DA) 
  SYSGEN(RETAIN, CSECS,   DA) 
  SYSGEN(RETAIN, CSECSTA, DA) 
  SYSGEN(RETAIN, CSHSMT,  DA) 
  SYSGEN(RETAIN, CSCMI,   DA) 
  $RETURN(CSTFU, CSCMD, CSQMM, CSMAINT) 
  $RETURN(CSVDMT, CS24KM, CSHSMT, CSDSOP4)
  $RETURN(CSECS, CSECSTA, CSCMI, PFGAP1I) 
$ENDIF(AP1I1) 
  
***** E N D   A P 1 I ******************
$REVERT(NOLIST) SYSGEN(AP1I)
$EXIT. SYSGEN(AP1I) 
$REVERT(ABORT) SYSGEN(AP1I)  FAILED 
/WEOR 
.PROC,AP1L*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   A P 1 L **************
  
.IF, FILE(PFGAP1L, .NOT. AS) ,AP1L0.
  SYSGEN(RECLAIM, PFGAP1L)
.ENDIF(AP1L0) 
  
$IF, FILE(PFGAP1L, AS) ,AP1L1.
  SYSGEN(USER, CDCCE) 
  $RETURN(AP1EL1, AP1EL2, AP1EL3) 
  $RETURN(AP1LIB1, AP1LIB2, AP1LIB3)
  $REWIND(PFGAP1L)
  $COPYBF(PFGAP1L,AP1LIB1)
  $COPYBF(PFGAP1L,AP1LIB2)
  $COPYBF(PFGAP1L,AP1LIB3)
  SYSGEN(RETAIN, AP1LIB1, DA) 
  SYSGEN(RETAIN, AP1LIB2, DA) 
  SYSGEN(RETAIN, AP1LIB3, DA) 
  SYSGEN(USER, CDCCE2)
  $RETURN(AP1CHL1, AP1CHL2, AP1CHL3)
  $RETURN(AP1LIB1, AP1LIB2, AP1LIB3)
  $COPYBF(PFGAP1L,AP1LIB1)
  $COPYBF(PFGAP1L,AP1LIB2)
  $COPYBF(PFGAP1L,AP1LIB3)
  SYSGEN(RETAIN, AP1LIB1, DA) 
  SYSGEN(RETAIN, AP1LIB2, DA) 
  SYSGEN(RETAIN, AP1LIB3, DA) 
  $RETURN(AP1LIB1, AP1LIB2, AP1LIB3, PFGAP1L) 
$ENDIF(AP1L1) 
  
***** E N D   A P 1 L ******************
$REVERT(NOLIST) SYSGEN(AP1L)
$EXIT. SYSGEN(AP1L) 
$REVERT(ABORT) SYSGEN(AP1L)  FAILED 
/WEOR 
.PROC,ATF1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   A T F 1 **************
  
.IF, FILE(PFGATF1, .NOT. AS) ,ATF10.
  SYSGEN(RECLAIM, PFGATF1)
.ENDIF(ATF10) 
  
$IF, FILE(PFGATF1, AS) ,ATF11.
* 
*  INSTALL ATF NAMSTRT RECORD 
* 
  SYSGEN(USER, NETOPS)
  SYSGEN(UPSTRT, PFGATF1, $$$JOB(JOBATF,AT,ATF)$$$) 
  SYSGEN(UPSTRT, PFGATF1, $$$PARAM(STKCON=STK)$$$)
$ENDIF(ATF11) 
  
***** E N D   A T F 1 ******************
$REVERT(NOLIST) SYSGEN(ATF1)
$EXIT. SYSGEN(ATF1) 
$REVERT(ABORT) SYSGEN(ATF1) FAILED
/WEOR 
.PROC,CCPB*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C C P B **************
  
.IF, FILE(PFGCCPB, .NOT. AS) ,CCPB0.
  SYSGEN(RECLAIM, PFGCCPB)
.ENDIF(CCPB0) 
  
$IF, FILE(PFGCCPB, AS) ,CCPB1.
* 
*  INSTALL PARTIALLY BUILT CCP SO THAT
*  BUILDING MAY COMMENCE AT CCPVAR. 
* 
  SYSGEN(USER, INSTALL) 
  $REWIND(PFGCCPB)
  $NOTE(PFGFLAG)
  $RENAME(CCPB=PFGCCPB) 
  $BEGIN(RTDBAT1,INSTALL,PRDNAME=CCPB)
  $RETURN(CCPB) 
  
$ENDIF(CCPB1) 
  
***** E N D   C C P B ******************
$REVERT(NOLIST) SYSGEN(CCPB)
$EXIT. SYSGEN(CCPB) 
$REVERT(ABORT) SYSGEN(CCPB) FAILED
/WEOR 
.PROC,CCPL*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C C P L **************
  
.IF, FILE(PFGCCPL, .NOT. AS) ,CCPL0.
  SYSGEN(RECLAIM, PFGCCPL)
.ENDIF(CCPL0) 
  
$IF, FILE(PFGCCPL, AS) ,CCPL1.
* 
*  INSTALL CCP LOAD FILE (NLFFILE)
* 
  SYSGEN(USER, NETADMN) 
  $RENAME(NLFFILE=PFGCCPL)
  SYSGEN(RETAIN, NLFFILE, DA) 
  $PERMIT(NLFFILE,ZZNOPUN=R)
  $RETURN(NLFFILE)
$ENDIF(CCPL1) 
  
***** E N D   C C P L ******************
$REVERT(NOLIST) SYSGEN(CCPL)
$EXIT. SYSGEN(CCPL) 
$REVERT(ABORT) SYSGEN(CCPL) FAILED
/WEOR 
.PROC,CCPU*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C C P U **************
  
.IF, FILE(PFGCCPU, .NOT. AS) ,CCPU0.
  SYSGEN(RECLAIM, PFGCCPU)
.ENDIF(CCPU0) 
  
$IF, FILE(PFGCCPU, AS) ,CCPU1.
* 
*  INSTALL CCP USERBPS FILE 
* 
  SYSGEN(USER, INSTALL) 
  $RENAME(USERBPS=PFGCCPU)
  SYSGEN(RETAIN, USERBPS, IA) 
  $RETURN(USERBPS)
$ENDIF(CCPU1) 
  
***** E N D   C C P U ******************
$REVERT(NOLIST) SYSGEN(CCPU)
$EXIT. SYSGEN(CCPU) 
$REVERT(ABORT) SYSGEN(CCPU) FAILED
/WEOR 
.PROC,CDCNET*I
,P1 [INSTALL OPTION] =(*N=ALL,P1=ALL,ALL,HTFILE)
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C D C N E T **********
  
.IF, FILE(PRELOAD, AS) ,CDCNET0.
  
  .IF, (OT .EQ. SYO) ,CDCNET1.
    .IF, FILE(PFGCHA1, AS) .SYSGEN(CHA1, P1)
    .IF, FILE(PFGCHA2, AS) .SYSGEN(CHA2, ZZNOPUN) 
    .IF, FILE(PFGDCNS, AS) .SYSGEN(DCNS)
  .ELSE(CDCNET1)
    .IF, FILE(PFGDCNS, AS) .SYSGEN(DCNS)
  .ENDIF(CDCNET1) 
  
.ELSE(CDCNET0)
  
  SYSGEN(RECLAIM, PFGDCNS, PFGCHA1, PFGCHA2)
  $NOTE(PRELOAD)+ NEEDED FILE(S) PRELOADED
  $REVERT(EX)SYSGEN(CDCNET, P1) 
  
.ENDIF(CDCNET0) 
  
***** E N D   C D C N E T **************
$REVERT(NOLIST) SYSGEN(CDCNET)
$EXIT. SYSGEN(CDCNET) 
$REVERT(ABORT) SYSGEN(CDCNET) FAILED
/WEOR 
.PROC,CDCS*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C D C S **************
  
.IF, FILE(PFGCDCS, .NOT. AS) ,CDCS0.
  SYSGEN(RECLAIM, PFGCDCS)
.ENDIF(CDCS0) 
  
$IF, FILE(PFGCDCS, AS) ,CDCS1.
* 
*  INSTALL CDCS STARTUP PROCEDURE 
* 
  SYSGEN(USER, SYSTEMX) 
  $RENAME(CDC=PFGCDCS)
  SYSGEN(RETAIN, CDC, IA, PR, Y, PERMIT)
  $RETURN(CDC)
$ENDIF(CDCS1) 
  
***** E N D   C D C S ******************
$REVERT(NOLIST) SYSGEN(CDCS)
$EXIT. SYSGEN(CDCS) 
$REVERT(ABORT) SYSGEN(CDCS) FAILED
/WEOR 
.PROC,CHA1*I
,P1 [NAMSTRT OR HTFILE]=(*N=ALL,P1=ALL,ALL,NAMSTRT,HTFILE)
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C H A 1 **************
  
.IF, FILE(PFGCHA1, .NOT. AS) ,CHA10.
  SYSGEN(RECLAIM, PFGCHA1)
.ENDIF(CHA10) 
  
$IF, FILE(PFGCHA1, AS) ,CHA11.
  .IF, ($P1$ .EQ. $NAMSTRT$) .OR. ($P1$ .EQ. $ALL$) ,CHA12. 
* 
*  INSTALL CHA1 NAMSTRT RECORD(S) 
* 
    SYSGEN(USER, NETOPS)
    $RETURN(ZZZCHA1)
    $REWIND(PFGCHA1)
    $SKIPF(PFGCHA1,4) 
    $COPYEI(PFGCHA1,ZZZCHA1)
    $RETURN(ZZZZDIR)
    $NOTE(ZZZZDIR,NR)+JOB(JOBFSR,FS,DI,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBLSR,LS,DI,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBOUR,OU,DI,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBFS,SF,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBLS,SL,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBOU,UO,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBINMD,IN,SY,NS) 
    $NOTE(ZZZZDIR,NR)+PARAM(CDCNET=YES) 
    $NOTE(ZZZZDIR,NR)+PARAM(ZZFC=500) 
    $NOTE(ZZZZDIR,NR)+PARAM(FSSTART=NO) 
    $NOTE(ZZZZDIR,NR)+PARAM(LSSTART=NO) 
    $NOTE(ZZZZDIR,NR)+PARAM(OUSTART=NO) 
    SYSGEN(UPSTRT, ZZZCHA1, , ZZZZDIR)
  .ENDIF(CHA12) 
  .IF, ($P1$ .EQ. $HTFILE$) .OR. ($P1$ .EQ. $ALL$) ,CHA13)
* 
* INSTALL CHA1 MESSAGE TEMPLATE FILE
* 
    SYSGEN(USER, INSTALL) 
    $REWIND(PFGCHA1)
    $BEGIN,,PFGCHA1.
    SYSGEN(USER, NETADMN) 
    $REWIND(PFGCHA1)
    $BEGIN,,PFGCHA1.
    $RETURN(PFGCHA1)
  .ENDIF(CHA13) 
$ENDIF(CHA11) 
  
***** E N D   C H A 1 ******************
$REVERT(NOLIST) SYSGEN(CHA1)
$EXIT. SYSGEN(CHA1) 
$REVERT(ABORT) SYSGEN(CHA1) FAILED
/WEOR 
.PROC,CHA2*I
,P1 [NETWORK OPERATIONS USER NAME]=(*N=ZZNOPUN,*F)
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C H A 2 **************
  
.IF, FILE(PFGCHA2, .NOT. AS) ,CHA20.
  SYSGEN(RECLAIM, PFGCHA2)
.ENDIF(CHA20) 
  
$IF, FILE(PFGCHA2, AS) ,CHA21.
  
  $REWIND(PFGCHA2)
  SYSGEN(USER, NETADMN) 
  $BEGIN,,PFGCHA2,P1. 
  $RETURN(PFGCHA2)
  
$ENDIF(CHA21) 
  
***** E N D   C H A 2 ******************
$REVERT(NOLIST) SYSGEN(CHA2)
$EXIT. SYSGEN(CHA2) 
$REVERT(ABORT) SYSGEN(CHA2) FAILED
/WEOR 
.PROC,CM*I"CONFIGURE CONTROL MODULE", 
EST     ' EST NUMBER OF C.M.     (40-47)       '
          =(40,41,42,43,44,45,46,47), 
CM      ' CONTROL MODULE NUMBER  (0-7)         '=(0,1,2,3,4,5,6,7,*N=), 
CH1     ' 1ST CHANNEL            (0,1,3,20,26) '=(0,1,3,20,26,*N=), 
CH2     ' 2ND CHANNEL            (1,3,20,26)   '=(1,3,20,26,*N=), 
TYPE    ' TYPE OF DISK           (836 OR 834)  '=(*N=836,834,836),
D       ' TO DELETE A C.M. UNIT                '
          =(*N=,D,DELETE=D,Y=D,YES=D,*K=D), 
. 
  
.* VALIDATE PARAMETERS
  
.IF, ($D$ .EQ. $$) .AND. (($CM$ .EQ. $$) .OR. ($CH1$ .EQ. $$)) ,CM0.
$RETURN(EQ0_EST)
  .IF, ($CM$ .EQ. $$)  .*  CONTROL MODULE NUMBER REQUIRED 
  .IF, ($CH1$ .EQ. $$) .*  CHANNEL PARAMETER REQUIRED 
*  THE FORMAT FOR THE #CM COMMAND IS
*  #CM(#EST,#CM,#CH1,#CH2,#TYPE)   WHERE
*   *#EST* IS THE #EST NUMBER (40-47) 
*   *#CM*  IS THE CONTROL MODULE NUMBER (0-7) 
*   *#CH1* IS THE 1ST CHANNEL NUMBER (0,1,3,20,26)
*   *#CH2* OPTIONAL 2ND CHANNEL NUMBER (1,3,20,26)
*   *#TYPE* IS THE DISK TYPE (836 OR 834) 
*   TO DELETE AN INCORRECT ENTRY ENTER
*  #CM(#EST,#D=Y) WHERE 
*    *#EST* IS THE INCORRECT #EST NUMBER
*  PLEASE TRY AGAIN 
.IF, (PNL   .EQ. 1 ) .$REVERT(NOLIST) 
.IF, ($CM$  .EQ. $$) .$REVERT(ABORT) #CM - #CM NUMBER REQUIRED
.IF, ($CH1$ .EQ. $$) .$REVERT(ABORT) #CM - CHANNEL NUMBER REQUIRED
.ENDIF(CM0) 
  
.* GENERATE *EQ* ENTRY
  
$LIBEDIT(P=EQPLGO,B=EQ0_EST,C,L=0,I=0)
$RETURN(EQ0_EST)
  
.IF, ($D$ .EQ. $$) ,CM1.
***** 
*  #CM, #EST EST ** CONFIGURED ** 
***** 
.ELSE(CM1)
***** 
*  #CM, #EST EST   ** DELETED **
***** 
.ENDIF(CM1) 
$REVERT(NOLIST) #CM(EST,CM,CH1,CH2,TYPE,D)
$EXIT. #CM(EST,CM,CH1,CH2,TYPE,D) 
$REVERT(ABORT) #CM(EST,CM,CH1,CH2,TYPE,D) 
.DATA,EQ0_EST 
EQ0_EST 
.IF, ($D$ .EQ. $$) ,CM2.
  .IF, ($CH2$ .EQ. $$) ,CM3.
    .IF, ($TYPE$ .EQ. $836$) ,CM4.
EQ0_EST=#CM,EQ=CM,CH=CH1,CW=C2. 
    .ELSE(CM4)
EQ0_EST=#CM,EQ=CM,CH=CH1. 
    .ENDIF(CM4) 
  .ELSE(CM3)
    .IF, ($TYPE$ .EQ. $836$) ,CM5.
EQ0_EST=#CM,EQ=CM,CH=CH1/CH2,CW=C2. 
    .ELSE(CM5)
EQ0_EST=#CM,EQ=CM,CH=CH1/CH2. 
    .ENDIF(CM5) 
  .ENDIF(CM3) 
.ELSE(CM2)
+WEOR 
.ENDIF(CM2) 
/WEOR 
.PROC,CML1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C M L 1 **************
  
.IF, FILE(PFGCML1, .NOT. AS) ,CML10.
  SYSGEN(RECLAIM, PFGCML1)
.ENDIF(CML10) 
  
$IF, FILE(PFGCML1, AS) ,CML11.
* 
*  INSTALL CONCURRENT MAINTENANCE LIBRARY FILE
* 
  SYSGEN(USER, CDCCE) 
  $RENAME(CML3=PFGCML1) 
  SYSGEN(RETAIN, CML3, DA)
  $RETURN(CML3) 
$ENDIF(CML11) 
  
***** E N D   C M L 1 ******************
$REVERT(NOLIST) SYSGEN(CML1)
$EXIT. SYSGEN(CML1) 
$REVERT(ABORT) SYSGEN(CML1) FAILED
/WEOR 
.PROC,CODE*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C O D E **************
  
.IF, FILE(PFGCODE, .NOT. AS) ,CODE0.
  SYSGEN(RECLAIM, PFGCODE)
.ENDIF(CODE0) 
  
$IF, FILE(PFGCODE, AS) ,CODE1.
* 
*  INSTALL CODEPL 
* 
  SYSGEN(USER, INSTALL) 
  $RENAME(CODEPL=PFGCODE) 
  SYSGEN(RETAIN, CODEPL,  DA) 
  $RETURN(CODEPL) 
$ENDIF(CODE1) 
  
***** E N D   C O D E ******************
$REVERT(NOLIST) SYSGEN(CODE)
$EXIT. SYSGEN(CODE) 
$REVERT(ABORT) SYSGEN(CODE) FAILED
/WEOR 
.PROC,CONFIG*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C O N F I G **********
  
$RETURN(DISK, TAPE, CM, MERGE)
$GTR(PFG,DISK)PROC/DISK 
$GTR(PFG,TAPE)PROC/TAPE 
$GTR(PFG,CM)PROC/CM 
$GTR(PFG,MERGE)PROC/MERGE 
  
***** E N D   C O N F I G **************
$REVERT(NOLIST) SYSGEN(CONFIG)
$EXIT. SYSGEN(CONFIG) 
$REVERT(ABORT) SYSGEN(CONFIG) 
/WEOR 
.PROC,COPYSYS*I 
,P1 [EST ORDINAL] =(*S3(01234567))
,P2 [TYPE OF DEVICE (DISK,GE,PE,HD,HY)] =(DISK,PE,GE,HD,HY) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C O P Y S Y S ********
  
.IF, ($P2$ .NE. $DISK$) ,COPYSYS1.
  $RETURN(OUTFILE)
  $ASSIGN(P1,OUTFILE,D=P2,LB=KU,F=I,PO=WF)
  $SKIP(COPYSYS2) 
  $EXIT. ERROR ASSIGNING TO EST=P1
****************************************
*  COULD NOT ASSIGN EST ORDINAL P1. 
*  ENSURE THAT TAPE WAS MOUNTED 
****************************************
  $SKIP(FAIL) 
  $ENDIF(COPYSYS2)
.ENDIF(COPYSYS1)
  
.IF, FILE(SYSTEM, .NOT. AS), COPYSYS3.
  $COMMON(SYSTEM) 
  $SKIP(COPYSYS4) 
  $EXIT. COULD NOT ACCESS SYSTEM FILE 
****************************************
*  UNABLE TO COMMON SYSTEM
*  PLEASE CORRECT VALIDATIONS 
****************************************
  $SKIP(FAIL) 
  $ENDIF(COPYSYS4)
.ENDIF(COPYSYS3)
  
.IF, ($P2$ .EQ. $DISK$) ,COPYSYS5.
  #INSTALL(SYSTEM,EQ_P1)
.ELSE(COPYSYS5) 
  $COPYEI(SYSTEM,OUTFILE,V) 
  $UNLOAD(OUTFILE)
.ENDIF(COPYSYS5)
  
.IF, FILE(SYSTEM, .NOT. AS) .$RETURN(SYSTEM)
  
***** E N D   C O P Y S Y S ************
$REVERT(NOLIST) SYSGEN(COPYSYS) 
$EXIT. SYSGEN(COPYSYS)
$ENDIF(FAIL)
$REVERT(ABORT) SYSGEN(COPYSYS)
/WEOR 
.PROC,COPYTAP*I"COPY RELEASE TAPES" 
,P1 [FIRST 5 CHARACTERS OF VSN] 
    =(*S5(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ))
,P2 [DENSITY OF TAPES]                 =(PE,GE,HY,HE) 
,P3 [NUMBER OF PERMANENT FILE TAPES]   =(*N=0,P3=0,*S2(0123456789)) 
,P4 [COPY THE DEADSTART TAPE (YES/NO)] =(*N=NO,P4=NO,YES,NO,Y=YES,N=NO) 
,P5 [COPY THE CIP TAPE (YES/NO)]       =(*N=NO,P5=NO,YES,NO,Y=YES,N=NO) 
. 
***** S T A R T   C O P Y T A P ********
  
$SET(R2=P3+15)
$IF, (R2 .GT. 24) .$REVERT(ABORT) TOO MANY TAPES SPECIFIED
$IF, (P3 .GT. 0) ,COPYTAP0. 
  
  *  MAKE COPIES OF THE THE PERMANENT FILE TAPES
  
  $RETURN(VSN, BLANK) 
  $SET(R1=16) 
  $WHILE, (R1 .LE. R2) ,COPYTAP1. 
     GENVSN(P1,R1+) 
     $SET(R1=R1+1)
  $ENDW(COPYTAP1) 
  $NOTE(VSN,NR)+            ) 
  $NOTE(VSN,NR)+$REVERT(NOLIST)+$EXIT. VSN+$REVERT(ABORT) VSN 
  $NOTE(BLANK,NR)+$REVERT(NOLIST)+$EXIT. BLANK+$REVERT(ABORT) BLANK 
  $PACK(VSN)
  $PACK(BLANK)
****************************************
*  TO MAKE COPIES OF THE PERM FILE TAPES
*  1. UNLOAD ALL CDC PERM FILE TAPES. 
*  2. MOUNT SCRATCH TAPES AS REQUESTED
*  3. MOUNT 1ST CDC PERM FILE TAPE. 
*  4. MOUNT 1ST TAPE TO BE COPIED TO. 
*  5. NEVER PRE-MOUNT ANY TAPES, WAIT 
*     UNTIL REQUESTED.  ONLY USE TWO
*     TAPE DRIVES, ONE FOR CDC TAPES
*     AND ONE FOR YOUR TAPES. 
****************************************
  BLANK(DEN=P2) 
  VSN.
  $RETURN(VSN, BLANK) 
  $RESOURC(P2=2)
****************************************
*MOUNT 1ST CONTROL DATA PERM FILE TAPE *
****************************************
  $LABEL(OLDTAPE,VSN=P1_P,D=P2,F=I,PO=RF) 
****************************************
*     MOUNT TAPE TO BE COPIED TO       *
****************************************
  $LABEL(NEWTAPE,D=P2,F=I,PO=WF)
  $COPYEI(OLDTAPE,NEWTAPE,V)
  $RETURN(OLDTAPE, NEWTAPE) 
$ENDIF(COPYTAP0)
.IF, ($P4$ .EQ. $YES$) ,COPYTAP2. 
  
  *  MAKE A COPY OF THE DEADSTART TAPE
  
  $RETURN(OLDTAPE, NEWTAPE) 
  $RESOURC(P2=2)
****************************************
*  MOUNT CONTROL DATA DEADSTART TAPE   *
****************************************
  $REQUEST(OLDTAPE,VSN=P1_Y,LB=KU,D=P2,F=I,PO=RF) 
****************************************
*     MOUNT TAPE TO BE COPIED TO       *
****************************************
  $REQUEST(NEWTAPE,VSN=P1_Y,LB=KU,D=P2,F=I,PO=WF) 
  $COPYEI(OLDTAPE,NEWTAPE,V)
  $RETURN(OLDTAPE, NEWTAPE) 
.ENDIF(COPYTAP2)
.IF, ($P5$ .EQ. $YES$) ,COPYTAP3. 
  
  *  MAKE A COPY OF THE CIP TAPE
  
  $RETURN(OLDTAPE, NEWTAPE) 
  $RESOURC(P2=2)
****************************************
*     MOUNT CONTROL DATA CIP TAPE      *
****************************************
  $REQUEST(OLDTAPE,VSN=P1_Z,LB=KU,D=P2,F=SI,PO=RF)
****************************************
*     MOUNT TAPE TO BE COPIED TO       *
****************************************
  $REQUEST(NEWTAPE,VSN=P1_Z,LB=KU,D=P2,F=SI,PO=WF)
  $COPYEI(OLDTAPE,NEWTAPE,V)
  $RETURN(OLDTAPE, NEWTAPE) 
.ENDIF(COPYTAP3)
$RETURN(GENVSN) 
  
***** E N D   C O P Y T A P ************
  
$REVERT(NOLIST) SYSGEN(COPYTAP) 
$EXIT. SYSGEN(COPYTAP)
$REVERT(ABORT) SYSGEN(COPYTAP)
.DATA,GENVSN
.PROC,GENVSN*I
,ASM =(*A)
,NUM =(1=A,2=B,3=C,4=D,5=E,6=F,7=G,8=H,9=I,10=J,11=K,12=L,13=M,14=N,
       15=O,16=P,17=Q,18=R,19=S,20=T,21=U,22=V,23=W,24=X) 
. 
#.IF, FILE(VSN, .NOT. AS) ,GENVSN1. 
  $NOTE(VSN,NR)+.PROC,VSN.
  $NOTE(VSN,NR)+$VSN(NEWTAPE=ASM#_NUM 
  $NOTE(BLANK,NR)+.PROC,BLANK,DEN.
  $NOTE(BLANK,NR)+$BLANK(VSN=ASM#_NUM,D=DEN)
  $NOTE(BLANK,NR)+$LABEL(TAPE,W,VSN=ASM#_NUM,D=DEN,PO=WF,LB=KL,F=I) 
  $NOTE(BLANK,NR)+$UNLOAD(TAPE) 
#.ELSE(GENVSN1) 
  $NOTE(VSN,NR)+            /ASM#_NUM 
  $NOTE(BLANK,NR)+$BLANK(VSN=ASM#_NUM,D=DEN)
  $NOTE(BLANK,NR)+$LABEL(TAPE,W,VSN=ASM#_NUM,D=DEN,PO=WF,LB=KL,F=I) 
  $NOTE(BLANK,NR)+$UNLOAD(TAPE) 
#.ENDIF(GENVSN1)
$REVERT(NOLIST) 
$EXIT. GENVSN 
$REVERT(ABORT) GENVSN(ASM,NUM)
/WEOR 
.PROC,CRSS*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C R S S **************
  
.IF, FILE(PFGCRSS, .NOT. AS) ,CRSS0.
  SYSGEN(RECLAIM, PFGCRSS)
.ENDIF(CRSS0) 
  
$IF, FILE(PFGCRSS, AS) ,CRSS1.
* 
*  INSTALL CROSS BINARIES 
* 
  SYSGEN(USER, INSTALL) 
  $REWIND(PFGCRSS)
  $NOTE(PFGFLAG)
  $RENAME(CRSS=PFGCRSS) 
  $BEGIN(RTDBAT1,INSTALL,PRDNAME=CRSS)
  $RETURN(CRSS) 
$ENDIF(CRSS1) 
  
***** E N D   C R S S ******************
$REVERT(NOLIST) SYSGEN(CRSS)
$EXIT. SYSGEN(CRSS) 
$REVERT(ABORT) SYSGEN(CRSS) FAILED
/WEOR 
.PROC,CSTD*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   C S T D **************
  
.IF, FILE(PFGCSTD, .NOT. AS) ,CSTD0.
  SYSGEN(RECLAIM, PFGCSTD)
.ENDIF(CSTD0) 
  
$IF, FILE(PFGCSTD, AS) ,CSTD1.
* 
*  INSTALL CODING STANDARDS FILES 
* 
  SYSGEN(USER, LIBRARY) 
  $REWIND(PFGCSTD)
  $RETURN(CODING, SYMPCOD)
  $COPYBF(PFGCSTD,CODING) 
  $COPYBF(PFGCSTD,SYMPCOD)
  SYSGEN(RETAIN, CODING,  DA, PU, Y)
  SYSGEN(RETAIN, SYMPCOD, DA, PU, Y)
  $RETURN(CODING, SYMPCOD, PFGCSTD) 
$ENDIF(CSTD1) 
  
***** E N D   C S T D ******************
$REVERT(NOLIST) SYSGEN(CSTD)
$EXIT. SYSGEN(CSTD) 
$REVERT(ABORT) SYSGEN(CSTD) FAILED
/WEOR 
.PROC,DBU1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   D B U 1 **************
  
.IF, FILE(PFGDBU1, .NOT. AS) ,DBU10.
  SYSGEN(RECLAIM, PFGDBU1)
.ENDIF(DBU10) 
  
$IF, FILE(PFGDBU1, AS) ,DBU11.
* 
*  INSTALL DBUBIN 
* 
  SYSGEN(USER, INSTALL) 
  $RENAME(DBUBIN=PFGDBU1) 
  SYSGEN(RETAIN, DBUBIN,  DA) 
  $RETURN(DBUBIN) 
$ENDIF(DBU11) 
  
***** E N D   D B U 1 ******************
$REVERT(NOLIST) SYSGEN(DBU1)
$EXIT. SYSGEN(DBU1) 
$REVERT(ABORT) SYSGEN(DBU1) FAILED
/WEOR 
.PROC,DCL2*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   D C L 2 **************
  
.IF, FILE(PFGDCL2, .NOT. AS) ,DCL20.
  SYSGEN(RECLAIM, PFGDCL2)
.ENDIF(DCL20) 
  
$IF, FILE(PFGDCL2, AS) ,DCL21.
* 
*  INSTALL DCL2 PERMANENT FILES 
* 
  $REWIND(PFGDCL2)
  SYSGEN(USER, LIBRARY) 
  $COPYBF(PFGDCL2,DCUPD)
  $COPYBF(PFGDCL2,DCSEL)
  $COPYBF(PFGDCL2,DCRPT)
  $COPYBF(PFGDCL2,DCRET)
  $COPYBF(PFGDCL2,DCCONVT)
  $COPYBF(PFGDCL2,DCUTL)
  $COPYBF(PFGDCL2,DCIDX)
  $COPYBF(PFGDCL2,DCGEN)
  $COPYBF(PFGDCL2,DCCONGN)
  SYSGEN(RETAIN, DCUPD,   DA, PU, Y)
  SYSGEN(RETAIN, DCSEL,   DA, PU, Y)
  SYSGEN(RETAIN, DCRPT,   DA, PU, Y)
  SYSGEN(RETAIN, DCRET,   DA, PU, Y)
  SYSGEN(RETAIN, DCCONVT, DA, PU, Y)
  SYSGEN(RETAIN, DCUTL,   DA, PU, Y)
  SYSGEN(RETAIN, DCIDX,   DA, PU, Y)
  SYSGEN(RETAIN, DCGEN,   DA, PU, Y)
  SYSGEN(RETAIN, DCCONGN, DA, PU, Y)
  $RETURN(DCUPD, DCSEL, DCRPT, DCRET, DCCONVT)
  $RETURN(DCUTL, DCIDX, DCGEN, DCCONGN, PFGDCL2)
$ENDIF(DCL21) 
  
***** E N D   D C L 2 ******************
$REVERT(NOLIST) SYSGEN(DCL2)
$EXIT. SYSGEN(DCL2) 
$REVERT(ABORT) SYSGEN(DCL2) FAILED
/WEOR 
.PROC,DCNS*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   D C N S **************
  
.IF, FILE(PFGDCNS, .NOT. AS) ,DCNS0.
  SYSGEN(RECLAIM, PFGDCNS)
.ENDIF(DCNS0) 
  
$IF, FILE(PFGDCNS, AS) ,DCNS1.
  
  SYSGEN(USER, INSTALL) 
  $REWIND(PFGDCNS)
  $BEGIN,,PFGDCNS.
  $RETURN(PFGDCNS)
  
$ENDIF(DCNS1) 
  
***** E N D   D C N S ******************
$REVERT(NOLIST) SYSGEN(DCNS)
$EXIT. SYSGEN(DCNS) 
$REVERT(ABORT) SYSGEN(DCNS) FAILED
/WEOR 
.PROC,DECK*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   D E C K **************
  
.IF, FILE(PFGDECK, .NOT. AS) ,DECK0.
  SYSGEN(RECLAIM, PFGDECK)
.ENDIF(DECK0) 
  
$IF, FILE(PFGDECK, AS) ,DECK1.
* 
*  INSTALL DECKOPL, INSTALL, GDIR, AND COMMOD 
* 
  SYSGEN(USER, INSTALL) 
  $REWIND(PFGDECK)
  $RETURN(DECKOPL, INSTALL, COMMOD, GDIR) 
  $COPYBF(PFGDECK,DECKOPL)
  $COPYBF(PFGDECK,INSTALL)
  $COPYBF(PFGDECK,COMMOD) 
  $COPYBF(PFGDECK,GDIR) 
  SYSGEN(RETAIN, DECKOPL, DA) 
  SYSGEN(RETAIN, INSTALL, DA) 
  SYSGEN(RETAIN, COMMOD,  IA) 
  SYSGEN(RETAIN, GDIR,    IA) 
  $RETURN(DECKOPL, INSTALL, COMMOD, PFGDECK, GDIR)
$ENDIF(DECK1) 
  
***** E N D   D E C K ******************
$REVERT(NOLIST) SYSGEN(DECK)
$EXIT. SYSGEN(DECK) 
$REVERT(ABORT) SYSGEN(DECK) FAILED
/WEOR 
.PROC,DISK*I"CONFIGURE 836/834 DISK UNIT",
EST     ' EST NUMBER OF DISK     (10-17)       '
          =(10,11,12,13,14,15,16,17), 
UN      ' DISK UNIT NUMBER       (0-3)         '=(0,1,2,3,*N=), 
CM      ' CONTROL MODULE NUMBER  (0-7)         '=(0,1,2,3,4,5,6,7,*N=), 
TYPE    ' TYPE OF DISK           (836 OR 834)  '=(*N=836,834,836),
D       ' TO DELETE A DISK UNIT                '
          =(*N=,D,DELETE=D,Y=D,YES=D,*K=D), 
. 
  
.* VALIDATE PARAMETERS
  
.IF, ($D$ .EQ.$$) .AND. (($CM$ .EQ. $$) .OR.($UN$ .EQ. $$)) ,DISK0. 
$RETURN(EQ0_EST)
  .IF, ($CM$ .EQ. $$) .*  CONTROL MODULE PARAMETER REQUIRED 
  .IF, ($UN$ .EQ. $$) .*  UNIT NUMBER PARAMETER REQUIRED
*  THE FORMAT FOR THE DISK COMMAND IS 
*  DISK(#EST,#UN,#CM,#TYPE) WHERE 
*      *#EST* IS THE #EST NUMBER (10-17)
*      *#UN* IS THE DISK UNIT NUMBER (0-3)
*      *#CM* IS THE CONTROL MODULE NUMBER (0-7) 
*      *#TYPE* IS THE DISK TYPE (836 OR 834)
*  TO DELETE AN INCORRECT ENTRY ENTER 
*  DISK(#EST,#D=Y) WHERE
*      *#EST* IS THE INCORRECT #EST NUMBER
* 
*  PLEASE TRY AGAIN 
.IF, (PNL .EQ. 1). REVERT(NOLIST) 
.IF, ($CM$ .EQ. $$) .REVERT(ABORT) DISK - #CM PARAMETER REQUIRED
.IF, ($UN$ .EQ. $$) .REVERT(ABORT) DISK - #UN PARAMETER REQUIRED
.ENDIF(DISK0) 
  
.* GENERATE *EQ* ENTRY
  
$LIBEDIT(P=EQPLGO,B=EQ0_EST,C,L=0,I=0)
$RETURN(EQ0_EST)
.IF, ($D$ .EQ. $$) ,DISK1.
***** 
*  TYPE DISK, #EST EST ** CONFIGURED ** 
***** 
.ELSE(DISK1)
***** 
*  DISK, #EST EST  ** DELETED **
***** 
.ENDIF(DISK1) 
$REVERT(NOLIST) DISK(EST,UN,CM,TYPE,D)
$EXIT. DISK(EST,UN,CM,TYPE,D) 
$REVERT(ABORT) DISK(EST,UN,CM,TYPE,D) 
.DATA,EQ0_EST 
EQ0_EST 
.IF, ($D$ .EQ. $$) ,DISK2.
.IF, ($TYPE$ .EQ. $836$) ,DISK3.
EQ0_EST=DG,#UN=CM_UN. 
.ELSE(DISK3)
EQ0_EST=DD,#UN=CM_UN. 
.ENDIF(DISK3) 
.ELSE(DISK2)
+WEOR 
.ENDIF(DISK2) 
/WEOR 
.PROC,DST*I 
,P1 [BASE  FILE (P)] =(*F)
,P2 [LGO   FILE (B)] =(*F)
,P3 [NEW   FILE (N)] =(*F)
,P4 [INPUT FILE (I)] =(*F)
,P5 [OPTIONAL TAPE DENSITY] =(HY,HD,PE,GE,NOTAPE,P5=NOTAPE,*N=NOTAPE) 
. 
***** S T A R T   D S T ****************
  
.IF, ($P5$ .NE. $NOTAPE$) .AND. FILE(P1, .NOT. AS)  ,ODT. 
  $RETURN(ODT)
  $LABEL(ODT,VSN=ODT,LB=KU,F=I,D=P5,PO=RF) OLD DEADSTART TAPE 
  $COPYEI(ODT,P1,V) 
  $RETURN(ODT)
.ENDIF(ODT) 
  
.IF, FILE(P1, TP) ,TAPEFILE.
  $RENAME(ZZZTAPE=P1) 
  $COPYEI(ZZZTAPE,P1,V) 
  $RETURN(ZZZTAPE)
.ENDIF(TAPEFILE)
  
.IF, ($P2$ .NE. $0$) ,LGO.
  .IF, FILE(P2, .NOT. AS) ,LGO1.
    SYSGEN(ACQUIRE, P2) 
  .ENDIF(LGO1)
.ENDIF(LGO) 
  
$REWIND(P4) 
$LIBEDIT(P=P1,B=P2,N=P3,I=P4,L=SYSLIST) 
$RETURN(ZZZZZIN)
  
.IF, ($P5$ .NE. $NOTAPE$) .AND. FILE(P3, .NOT. TP) ,NDT.
  $RETURN(NDT)
  $LABEL(NDT,W,VSN=NDT,LB=KU,F=I,D=P5,PO=WF) NEW DEADSTART TAPE 
  $COPYEI(P3,NDT,V) 
  $RETURN(NDT)
.ENDIF(NDT) 
  
***** E N D   D S T ********************
$REVERT(NOLIST) SYSGEN(DST) 
$EXIT. SYSGEN(DST)
$ENDIF(FAIL)
$REVERT(ABORT) SYSGEN(DST) FAILED 
/WEOR 
.PROC,DUAL*I
,P1 =(*N=LID,P1=LID,LID,OLDNOS,SOURCE)
,P2 =(*N=DUAL,P2=DUAL,BCU=BCU2,DUAL)
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   D U A L **************
  
.IF, FILE(PFG_P2, .NOT. AS) ,DUAL0. 
  SYSGEN(RECLAIM, PFG_P2) 
.ENDIF(DUAL0) 
  
$IF, FILE(PFG_P2, AS) ,DUAL1. 
* 
*  CREATE LIDCMID AND LIDVEID FILES 
* 
  .IF, ($P1$ .EQ. $LID$), DUAL2.
    $RETURN(VEMEM)
    $REWIND(PFG_P2) 
    $SKIPF(PFG_P2)
    $COPYBF(PFG_P2,VEMEM) 
    SYSGEN(USER, INSTALL) 
    SYSGEN(RETAIN, VEMEM, IA) 
    $SET(R1=HID/100B)      ** 1ST CHARACTER 
    $SET(R2=HID-(R1*100B)) ** 2ND CHARACTER 
    $BEGIN(,GENFILE,R1+B,R2+B)
    $RETURN(VEMEM)
  .ENDIF(DUAL2) 
* 
*  LOAD OUT VE BINARIES BUILT ON OLD LEVELS OF NOS
* 
  .IF, ($P1$ .EQ. $OLDNOS$), DUAL3. 
    $RETURN(DUMPA)
    $REWIND(PFG_P2) 
    $SKIPF(PFG_P2,2)
    $COPYBF(PFG_P2,DUMPA) 
    $REWIND(DUMPA)
    SYSGEN(USER, INSTALL) 
    RECLAIM(DB=0,L=SYSLIST,Z)/LOAD,DT=MS,DF=DUMPA,RP=Y
    $RETURN(DUMPA)
  .ENDIF(DUAL3) 
* 
*  LOAD OUT THE DUAL STATE SOURCE LIBRARY 
* 
  .IF, ($P1$ .EQ. $SOURCE$), DUAL4. 
    $RETURN(VEDSSL) 
    $REWIND(PFG_P2) 
    $COPYBF(PFG_P2,VEDSSL)
    SYSGEN(USER, INSTALL) 
    SYSGEN(RETAIN, VEDSSL, DA)
    $RETURN(VEDSSL) 
  .ENDIF(DUAL4) 
  $RETURN(PFG_P2) 
$ENDIF(DUAL1) 
$RETURN(GENFILE)
  
***** E N D   D U A L ******************
$REVERT(NOLIST) SYSGEN(DUAL)
$EXIT. SYSGEN(DUAL) 
$REVERT(ABORT) SYSGEN(DUAL) FAILED
.DATA,GENFILE 
.EXPAND(OFF)
.PROC,GENFILE*I 
,C1 [1ST CHARACTER OF MACHINE ID] 
    =(      1=A, 2=B, 3=C, 4=D, 5=E, 6=F, 7=G,
      10=H,11=I,12=J,13=K,14=L,15=M,16=N,17=O,
      20=P,21=Q,22=R,23=S,24=T,25=U,26=V,27=W,
      30=X,31=Y,32=Z,33=0,34=1,35=2,36=3,37=4,
      40=5,41=6,42=7,43=8,44=9) 
,C2 [2ND CHARACTER OF MACHINE ID] 
    =(      1=A, 2=B, 3=C, 4=D, 5=E, 6=F, 7=G,
      10=H,11=I,12=J,13=K,14=L,15=M,16=N,17=O,
      20=P,21=Q,22=R,23=S,24=T,25=U,26=V,27=W,
      30=X,31=Y,32=Z,33=0,34=1,35=2,36=3,37=4,
      40=5,41=6,42=7,43=8,44=9) 
. 
SYSGEN(USER, SYSTEMX) 
SYSGEN(RETAIN, LIDVE_C1_C2, IA, PR, Y, PERMIT)
SYSGEN(RETAIN, LIDCM_C1_C2, IA, PR, Y, PERMIT)
$RETURN(LIDCM_C1_C2, LIDVE_C1_C2) 
REVERT. GENFILE 
EXIT. GENFILE 
REVERT(ABORT) GENFILE 
.DATA,LIDCM_C1_C2 
LIDCM_C1_C2 
NPID,PID=M_C1_C2,MFTYPE=NOSHOST.
NLID,LID=M_C1_C2. 
NPID,PID=NVE,MFTYPE=NOSVE.
NLID,LID=NVE. 
.DATA,LIDVE_C1_C2 
NVE 
/WEOR 
.PROC,FILES*I 
,P1 [VSN OF PERMANENT FILE DUMP TAPE] 
    =(*S6(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ))
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   F I L E S ************
  
* PRE-LOAD NEEDED FILES 
  
$RETURN(IN, PRELOAD, ZZRECIN) 
.*
.* PROGRAMMING NOTE --> EACH DIRECTIVE LINE ON FILE *IN*
.* MUST END WITH A COMMA (,) EXCEPT THE LAST ONE
.* IF *IN* CONTAINS ONLY ONE LINE, IT MUST NOT END WITH A COMMA.
.*
.IF, ($P1$ .EQ. $ALL$) ,FILES1. 
  $NOTE(ZZRECIN)+COPY,PF=*,UN=ZZBLDUN.
.ELSE(FILES1) 
  .* ONLY LOAD FILES FROM THIS TAPE 
  $NOTE(ZZRECIN)+COPY,PF=*,UN=ZZBLDUN,TN=P1.
.ENDIF(FILES1)
  
.* FILES FROM *SITE* FUNCTION 
$NOTE(IN,NR)+PFGNDL1,PFGTOOL, 
.* PFGFSE1 ALSO NEED BY *SITE* BUT IT IS LOADED IN *LIBRARY* AREA 
.* FILES FROM *NAMSTRT* FUNCTION
$NOTE(IN,NR)+PFGNAM5,PFGRBF5,PFGITF1,PFGRHP1,PFGPSU1,PFGTCPH,PFGATF1, 
.* FILES FROM *SUBSYS* FUNCTION 
$NOTE(IN,NR)+PFGCCPL,PFGCDCS,PFGIAF1,PFGMCS1, 
$NOTE(IN,NR)+PFGMSE1,PFGMSSI,PFGRDF1, 
$NOTE(IN,NR)+PFGTAF1,PFGNSS1,PFGAP1I,PFGAP1L,PFGMMCL, 
.* PFGFSE1 ALSO NEED BY *SUBSYS* BUT IT IS LOADED IN *LIBRARY* AREA 
.* FILES FROM *LIBRARY* FUNCTION
$NOTE(IN,NR)+PFGCSTD,PFGFSE1,PFGPFTF,PFGNOSB,PFGTLIB,PFGXEDT, 
.* FILES FROM *OTHER* FUNCTION
$NOTE(IN,NR)+PFGAPL2,PFGCML1,PFGDCL2,PFGDUAL, 
$NOTE(IN,NR)+PFGNOS2,PFGONLM,PFGMAN1, 
.* FILES FROM *CDCNET* FUNCTION 
$NOTE(IN,NR)+PFGDCNS,PFGCHA1,PFGCHA2
  
  
SYSGEN(RECLAIM, IN) 
****************************************
*  THE MESSAGE *NO FILES PROCESSED* IS *
*  NOT AN INDICATION OF A FAILURE.     *
*  IGNORE THIS MESSAGE.                *
****************************************
  
$NOTE(PRELOAD)+ NEEDED FILE(S) PRELOADED
  
*  BEGIN INSTALLATION 
  
SYSGEN(SITE)           ** SITE TOOLS
SYSGEN(NAMSTRT)        ** NAMSTRT 
SYSGEN(SUBSYS)         ** SUBSYSTEMS
SYSGEN(LIBRARY)        ** USERNAME LIBRARY
SYSGEN(OTHER)          ** OTHER PRODUCTS
SYSGEN(CDCNET, HTFILE) ** CDCNET
  
***** E N D   F I L E S ****************
$REVERT(NOLIST) SYSGEN(FILES) 
$EXIT. SYSGEN(FILES)
$REVERT(ABORT) SYSGEN(FILES) FAILED 
/WEOR 
.PROC,FSEH*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   F S E H **************
  
.IF, FILE(PFGFSE1, .NOT. AS) ,FSEH0.
  SYSGEN(RECLAIM, PFGFSE1)
.ENDIF(FSEH0) 
  
$IF, FILE(PFGFSE1, AS) ,FSEH1.
* 
*  INSTALL FSEHELP, FSTEACH AND FSEPROC 
* 
  $REWIND(PFGFSE1)
  SYSGEN(USER, LIBRARY) 
  $RETURN(FSEHELP, FSTEACH, FSEPROC)
  $SKIPR(PFGFSE1) 
  $COPYBR(PFGFSE1,FSEHELP)
  $COPYBR(PFGFSE1,FSTEACH)
  $COPYBR(PFGFSE1,FSEPROC)
  SYSGEN(RETAIN, FSEHELP, DA, PU, Y)
  SYSGEN(RETAIN, FSTEACH, IA, PU, Y)
  SYSGEN(RETAIN, FSEPROC, IA, PU, Y)
  $RETURN(FSEHELP, FSTEACH, FSEPROC, PFGFSE1) 
$ENDIF(FSEH1) 
  
***** E N D   F S E H ******************
$REVERT(NOLIST) SYSGEN(FSEH)
$EXIT. SYSGEN(FSEH) 
$REVERT(ABORT) SYSGEN(FSEH) FAILED
/WEOR 
.PROC,FSES*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   F S E S **************
  
.IF, FILE(PFGFSE1, .NOT. AS) ,FSES0.
  SYSGEN(RECLAIM, PFGFSE1)
.ENDIF(FSES0) 
  
$IF, FILE(PFGFSE1, AS) ,FSES1.
* 
*  INSTALL SMFSTAT
* 
  SYSGEN(USER, INSTALL) 
  $REWIND(PFGFSE1)
  $RETURN(SMFSTAT)
  $SKIPR(PFGFSE1,4) 
  $COPYBR(PFGFSE1,SMFSTAT)
  SYSGEN(RETAIN, SMFSTAT, IA) 
  $RETURN(SMFSTAT)
  .* DO NOT RETURN PFGFSE1 SINCE IT IS USED LATER 
$ENDIF(FSES1) 
  
***** E N D   F S E S ******************
$REVERT(NOLIST) SYSGEN(FSES)
$EXIT. SYSGEN(FSES) 
$REVERT(ABORT) SYSGEN(FSES) FAILED
/WEOR 
.PROC,FSE1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   F S E 1 **************
  
.IF, FILE(PFGFSE1, .NOT. AS) ,FSE10.
  SYSGEN(RECLAIM, PFGFSE1)
.ENDIF(FSE10) 
  
$IF, FILE(PFGFSE1, AS) ,FSE11.
* 
*  INSTALL SMF STARTUP PROCEDURE
* 
  $REWIND(PFGFSE1)
  SYSGEN(USER, SYSTEMX) 
  $RETURN(SMF)
  $COPYBR(PFGFSE1,SMF)
  SYSGEN(RETAIN, SMF, IA, PR, Y, PERMIT)
  $RETURN(SMF)
  .* DO NOT RETURN PFGFSE1 SINCE IT IS USED LATER 
$ENDIF(FSE11) 
  
***** E N D   F S E 1 ******************
$REVERT(NOLIST) SYSGEN(FSE1)
$EXIT. SYSGEN(FSE1) 
$REVERT(ABORT) SYSGEN(FSE1) FAILED
/WEOR 
.PROC,FULL*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   F U L L **************
  
SYSGEN(TESTUI)         CHECK USER INDEX.
SYSGEN(MODVAL, CREATE) CREATE VALIDATION FILE 
MS(SETUP) 
SYSGEN(USER, INSTALL) 
SYSGEN(INIT, INITIAL)  LOAD RECLAIM DATABASE
SYSGEN(FILES, ALL)     LOAD ALL PFG FILES 
  
***** E N D   F U L L ******************
$REVERT(NOLIST) SYSGEN(FULL)
$EXIT. SYSGEN(FULL) 
$REVERT(ABORT) SYSGEN(FULL) FAILED
/WEOR 
.PROC,HELP*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
$REVERT(EX)SYSGEN(NOSB) 
/WEOR 
.PROC,IAF1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   I A F 1 **************
  
.IF, FILE(PFGIAF1, .NOT. AS) ,IAF10.
  SYSGEN(RECLAIM, PFGIAF1)
.ENDIF(IAF10) 
  
$IF, FILE(PFGIAF1, AS) ,IAF11.
* 
*  INSTALL IAF STARTUP PROCEDURES 
*  IAF, IAFTM, AND IAFTR
* 
  $REWIND(PFGIAF1)
  SYSGEN(USER, SYSTEMX) 
  $RETURN(IAF, IAFTM, IAFTR)
  $COPYBR(PFGIAF1, IAF) 
  $COPYBR(PFGIAF1, IAFTM) 
  $COPYBR(PFGIAF1, IAFTR) 
  SYSGEN(RETAIN, IAF,     IA, PR, Y, PERMIT)
  SYSGEN(RETAIN, IAFTM,   IA, PR, Y, PERMIT)
  SYSGEN(RETAIN, IAFTR,   IA, PR, Y, PERMIT)
  $RETURN(IAF, IAFTM, IAFTR, PFGIAF1) 
  
$ENDIF(IAF11) 
  
***** E N D   I A F 1 ******************
$REVERT(NOLIST) SYSGEN(IAF1)
$EXIT. SYSGEN(IAF1) 
$REVERT(ABORT) SYSGEN(IAF1) FAILED
/WEOR 
.PROC,INIT*I
,P1 [INITIAL OR UPGRADE SYSTEM] 
    =(P1=INITIAL,*N=INITIAL,INITIAL,UPGRADE,SEED) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   I N I T **************
  
*  GET RECLAIM DATABASE FROM DEADSTART
*  TAPE AND STORE ON THE INSTALLATION USER NAME 
  
SYSGEN(USER, INSTALL) 
.IF, FILE(SYSTEM, .NOT. AS) .$COMMON(SYSTEM)
.IF, (($P1$ .EQ. $INITIAL$) .OR. ($P1$ .EQ. $UPGRADE$)) ,INIT0. 
  $RETURN(RECLDB, LOC2, LOCFILE)
  $GTR(SYSTEM,LOCFILE)ULIB/RECLDB 
  $GTR(LOCFILE,LOC2)TEXT/*
  RECLAIM(DB=0,Z,L=SYSLIST)/COPY,DT=MS,DF=LOC2,PF=RECLDB
  SYSGEN(RETAIN, RECLDB,  DA, S)
  $RETURN(LOCFILE, LOC2, RECLDB)
.ENDIF(INIT0) 
.IF, (($P1$ .EQ. $UPGRADE$) .OR. ($P1$ .EQ. $SEED$)) ,INIT1.
  $RETURN(SYSGENP, PRODUCT, PRODX, GLOBLIB, GLOBLGO)
  $GTR(SYSTEM,SYSGENP,,,,NA)PROC/SYSGEN 
  $PURGE(SYSGEN/NA) 
  $SAVE(SYSGENP=SYSGEN/CT=S,M=R,AC=N) 
  $RETURN(PRODUCT)
  $PURGE(PRODUCT/NA)
  $DEFINE(PRODUCT/CT=S,AC=N,M=R)
  $GTR(SYSTEM,PRODX,U,,,NA)ULIB/PFGLIB
  $LIBEDIT(P=PRODUCT,B=PRODX,C,I=0) 
  $RETURN(GLOBLIB)
  $PURGE(GLOBLIB/NA)
  $DEFINE(GLOBLIB/CT=S,AC=N,M=R)
  ************************************
  *  THE MESSAGE *GTR ERRORS* IS NOT *
  *  AN INDICATION OF A FAILURE.     *
  *  RECORDS MAY OR MAY NOT BE FOUND *
  *  DEPENDING ON THE PRODUCTS       *
  *  ORDERED                         *
  ************************************
  $GTR(SYSTEM,GLOBLGO,,,,NA)ABS/NETITF,NETPLM,NETFM,OVL/MNFMOVL,SORTOVL 
  $GTR(SYSTEM,GLOBLGO,,,,NA)ABS/NETBDF,NETMDF,NETRDF,FCOPY
  $GTR(SYSTEM,GLOBLGO,,,,NA)PROC/MANCC,NPA,ANACD
  $GTR(SYSTEM,GLOBLGO,,,,NA)ABS/NDLP,OVL/INITOVL-LISTOVL,ABS/LFG
  $GTR(SYSTEM,GLOBLGO,,,,NA)ABS/UPSTRT,PROC/RCFGEN,SYSGEN 
  $LIBEDIT(P=GLOBLIB,B=GLOBLGO,U=GLOBLIB,C,I=0) 
  $RETURN(PRODUCT, PRODX, GLOBLIB, SYSGENP, GLOBLGO)
.ENDIF, INIT1.
.IF, FILE(SYSTEM, .NOT. AS) .$RETURN(SYSTEM)
  
***** E N D   I N I T ******************
$REVERT(NOLIST) SYSGEN(INIT)
$EXIT. SYSGEN(INIT) 
$REVERT(ABORT) SYSGEN(INIT) FAILED
/WEOR 
.PROC,ITF1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   I T F 1 **************
  
.IF, FILE(PFGITF1, .NOT. AS) ,ITF10.
  SYSGEN(RECLAIM, PFGITF1)
.ENDIF(ITF10) 
  
$IF, FILE(PFGITF1, AS) ,ITF11.
* 
*  INSTALL ITF NAMSTRT RECORD 
* 
  SYSGEN(USER, NETOPS)
  SYSGEN(UPSTRT, PFGITF1, $$$JOB(JOBITF,IT)$$$) 
$ENDIF(ITF11) 
  
***** E N D   I T F 1 ******************
$REVERT(NOLIST) SYSGEN(ITF1)
$EXIT. SYSGEN(ITF1) 
$REVERT(ABORT) SYSGEN(ITF1) FAILED
/WEOR 
.PROC,LIBRARY*I 
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   L I B R A R Y ********
  
.IF, FILE(PRELOAD, AS) ,LIBRARY0. 
  
  .IF, FILE(PFGCSTD, AS) .SYSGEN(CSTD)
  .IF, FILE(PFGFSE1, AS) .SYSGEN(FSEH)
  .IF, FILE(PFGNOSB, AS) .SYSGEN(NOSB)
  .IF, FILE(PFGPFTF, AS) .SYSGEN(PFTF)
  .IF, FILE(PFGTLIB, AS) .SYSGEN(TLIB)
  .IF, FILE(PFGXEDT, AS) .SYSGEN(XEDT)
  
.ELSE(LIBRARY0) 
  
  $RETURN(IN) 
  $NOTE(IN,NR)+PFGCSTD,PFGFSE1,PFGNOSB,PFGPFTF,PFGTLIB,PFGXEDT
  SYSGEN(RECLAIM, IN) 
  $NOTE(PRELOAD)+ NEEDED FILE(S) PRELOADED
  REVERT(EX)SYSGEN(LIBRARY) 
  
.ENDIF(LIBRARY0)
  
***** E N D   L I B R A R Y ************
$REVERT(NOLIST) SYSGEN(LIBRARY) 
$EXIT. SYSGEN(LIBRARY)
$REVERT(ABORT) SYSGEN(LIBRARY) FAILED 
/WEOR 
.PROC,LOADUSE*I 
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   L O A D U S E **************
  
$RETURN(ZZSYSGU, LOCFILE, LOC2) 
.IF, (OT .EQ. SYO) ,LOADU1. 
  .IF, FILE(SYSTEM, .NOT. AS) .$COMMON(SYSTEM)
  $GTR(SYSTEM,LOCFILE)ULIB/RECLDB 
  $GTR(LOCFILE,LOC2)TEXT/*
  RECLAIM(DB=0,Z,L=SYSLIST)/LOAD,DT=MS,DF=LOC2,PF=RECLDB,NN=ZRECLDB,RP=Y
  RECLAIM(DB=ZRECLDB,Z,L=SYSLIST)/COPY,PF=PFGAAAA,NN=ZZSYSGU,UN=ZZBLDUN 
  $REPLACE(ZZSYSGU) 
  $PURGE(ZRECLDB) 
  .IF, FILE(SYSTEM, .NOT. AS) .$RETURN(SYSTEM)
.ENDIF(LOADU1)
$RETURN(LOCFILE, LOC2)
  
***** E N D   L O A D U S E ******************
$REVERT(NOLIST) SYSGEN(LOADUSE) 
$EXIT. SYSGEN(LOADUSE)
$REVERT(ABORT) SYSGEN(LOADUSE) FAILED 
/WEOR 
.PROC,MAN1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   M A N 1 **************
  
.IF, FILE(PFGMAN1, .NOT. AS) ,MAN10.
  SYSGEN(RECLAIM, PFGMAN1)
.ENDIF(MAN10) 
  
$IF, FILE(PFGMAN1, AS) ,MAN11.
* 
*  INSTALL OPTIONAL SET OF ONLINE MANUALS 
* 
  $REWIND(PFGMAN1)
  SYSGEN(USER, MANUALS) 
  $BEGIN,,PFGMAN1.
  $RETURN(PFGMAN1)
$ENDIF(MAN11) 
  
***** E N D   M A N 1 ******************
$REVERT(NOLIST) SYSGEN(MAN1)
$EXIT. SYSGEN(MAN1) 
$REVERT(ABORT) SYSGEN(MAN1) FAILED
/WEOR 
.PROC,MCS1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   M C S 1 **************
  
.IF, FILE(PFGMCS1, .NOT. AS) ,MCS10.
  SYSGEN(RECLAIM, PFGMCS1)
.ENDIF(MCS10) 
  
$IF, FILE(PFGMCS1, AS) ,MCS11.
* 
*  INSTALL MCS STARTUP PROCEDURE
* 
  SYSGEN(USER, SYSTEMX) 
  $RENAME(MCS=PFGMCS1)
  SYSGEN(RETAIN, MCS, IA, PR, Y, PERMIT)
  $RETURN(MCS)
$ENDIF(MCS11) 
  
***** E N D   M C S 1 ******************
$REVERT(NOLIST) SYSGEN(MCS1)
$EXIT. SYSGEN(MCS1) 
$REVERT(ABORT) SYSGEN(MCS1) FAILED
/WEOR 
.PROC,MERGE*I"MERGE EQPDECK ENTRIES", 
DISKS   ' NUMBER OF 834-S        (2-8)         '=(2,3,4,5,6,7,8), 
MEMORY  ' 2, 4, 8, 12, 16 OR 32 MBYTES         '=(2,4,8,12,16,32=16), 
. 
.IF, FILE(SYSTEM, .NOT. AS) .$COMMON(SYSTEM)
  
$LIBEDIT(P=EQPOLD,B=EQPLGO,N=EQPNEW,I=0,L=0)
$MODIFY(P=0,C=EQPDECK,F,Z,L=ZL)/*CREATE,EQPNEW/*PREFIXC +/*NOSEQ
$RETURN(ZL) 
$PACK(EQPDECK)
  
.* UPDATE CMRDECK TO USE LIBDECK 2
.* FOR UEM IF MORE THAN 2MB MEMORY. 
  
.IF, ($MEMORY$ .NE. $2$) ,MERGE2. 
  $RETURN(ZZZDECK, ZZZZZIN) 
  $GTR(SYSTEM,ZZZDECK)CMRD02
  $NOTE(ZZZZZIN)+LIB=2. 
  $SKIPEI(ZZZDECK)
  $COPYEI(ZZZZZIN,ZZZDECK)
  $PACK(ZZZDECK)
  $LIBEDIT(P=EQPDECK,B=ZZZDECK,C,I=0,L=ZL)
  $RETURN(ZZZDECK, ZL, ZZZZZIN) 
.ENDIF(MERGE2)
  
.* BUILD NEW DEADSTART TAPE 
  
$RETURN(NEWDST) 
$NOEXIT.
$ASSIGN(60,NEWDST,D=GE,PO=W,LB=KU,F=I)
$ONEXIT.
$IF, FILE(NEWDST, AS) ,MERGE4.
  $RETURN(DISKDST)
  SYSGEN(DST, SYSTEM, EQPDECK, DISKDST, 0, NOTAPE)
  $COPYEI(DISKDST,NEWDST,V) 
  $RETURN(DISKDST, NEWDST)
  $ELSE(MERGE4) 
****************************************
*  PLEASE MOUNT A 1200 FOOT UNLABELLED *
*  TAPE ON TAPE UNIT 60 WITH THE WRITE *
*  RING IN.                            *
*  THEN, RERUN THE MERGE COMMAND.      *
****************************************
  .IF, (PNL .EQ. 1) .$REVERT(NOLIST)
  $REVERT(ABORT) MERGE(DISKS,MEMORY)
$ENDIF(MERGE4)
  
****************************************
*  NEW DEADSTART TAPE WRITTEN 
****************************************
$REVERT(NOLIST) 
$EXIT. MERGE(DISKS,MEMORY)
$REVERT(ABORT) MERGE(DISKS,MEMORY)
.DATA,EQPOLD
EQPDECK 
EQPD02
* EQPDECK FOR CYBER SUPERMINI 
.EOR
EQ005 
.IF, ($MEMORY$ .EQ. $4$) ,EQ005.
EQ005=DE,ET=EM,SZ=1000. 
.ELSE(EQ005)
.IF, ($MEMORY$ .EQ. $8$) ,EQ005.
EQ005=DE,ET=EM,SZ=2000. 
.ELSE(EQ005)
.IF, ($MEMORY$ .EQ. $12$) ,EQ005. 
EQ005=DE,ET=EM,SZ=3000. 
.ELSE(EQ005)
.IF, ($MEMORY$ .EQ. $16$) ,EQ005. 
EQ005=DE,ET=EM,SZ=5000. 
.ENDIF(EQ005) 
+WEOR 
.EOR
EQ010 
+WEOR 
.EOR
EQ011 
+WEOR 
.EOR
EQ012 
+WEOR 
.EOR
EQ013 
+WEOR 
.EOR
EQ014 
+WEOR 
.EOR
EQ015 
+WEOR 
.EOR
EQ016 
+WEOR 
.EOR
EQ017 
+WEOR 
.EOR
EQ040 
+WEOR 
.EOR
EQ041 
+WEOR 
.EOR
EQ042 
+WEOR 
.EOR
EQ043 
+WEOR 
.EOR
EQ044 
+WEOR 
.EOR
EQ045 
+WEOR 
.EOR
EQ046 
+WEOR 
.EOR
EQ047 
+WEOR 
.EOR
EQ050 
EQ050=NP,EQ=7,PI=1,CH=7,ND=1,SA=OFF.
.EOR
EQ060 
+WEOR 
.EOR
EQ061 
+WEOR 
.EOR
EQ062 
+WEOR 
.EOR
EQ070 
EQ070=RM,ST=OFF,CH=15,PT=1. 
.EOR
SYSTEM
.IF, ($DISKS$ .LE. $4$) ,SYSTEM.
SYSTEM=11.
SCKP=10,11. 
.ELSE(SYSTEM) 
SYSTEM=11,14. 
SCKP=10,14. 
.ENDIF(SYSTEM)
.*
DAYFILE=11. 
ACCOUNT=11. 
ERRLOG=11.
MAINLOG=11. 
.*
.IF, ($MEMORY$ .EQ. $8$) ,XM. 
XM=AA,,100. 
.ELSE(XM) 
.IF, ($MEMORY$ .EQ. $12$) ,XM.
XM=AA,,200. 
.ELSE(XM) 
.IF, ($MEMORY$ .EQ. $16$) ,XM.
XM=AA,,400. 
.ENDIF(XM)
.*
.IF, ($DISKS$ .EQ. $2$) .MSAL,T=10-11.
.IF, ($DISKS$ .EQ. $3$) .MSAL,T=10-12.
.IF, ($DISKS$ .EQ. $4$) .MSAL,T=10-13.
.IF, ($DISKS$ .EQ. $5$) .MSAL,T=10-14.
.IF, ($DISKS$ .EQ. $6$) .MSAL,T=10-15.
.IF, ($DISKS$ .EQ. $7$) .MSAL,T=10-16.
.IF, ($DISKS$ .EQ. $8$) .MSAL,T=10-17.
.*
.IF, ($MEMORY$ .NE. $2$) ,MSAL. 
MSAL,S=5. 
UEMIN.
ASR=5.
.ENDIF(MSAL)
.*
FAMILY=10.
.*
.IF, ($MEMORY$ .NE. $2$) ,PF. 
PF=005,F,000,000,CYBER,5. 
.ENDIF(PF)
.*
PF=010,F,377,377,CYBER,10.
PF=011,F,000,377,CYBER,11.
.IF, ($DISKS$ .GE. $3$) .PF=012,F,000,377,CYBER,12. 
.IF, ($DISKS$ .GE. $4$) .PF=013,F,000,377,CYBER,13. 
.IF, ($DISKS$ .GE. $5$) .PF=014,F,000,377,CYBER,14. 
.IF, ($DISKS$ .GE. $6$) .PF=015,F,000,377,CYBER,15. 
.IF, ($DISKS$ .GE. $7$) .PF=016,F,000,377,CYBER,16. 
.IF, ($DISKS$ .GE. $8$) .PF=017,F,000,377,CYBER,17. 
/WEOR 
.PROC,MISC*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   M I S C **************
  
.IF, FILE(PFGMISC, .NOT. AS) ,MISC0.
  SYSGEN(RECLAIM, PFGMISC)
.ENDIF(MISC0) 
  
$IF, FILE(PFGMISC, AS) ,MISC1.
* 
*  INSTALL MISCPL 
* 
  SYSGEN(USER, INSTALL) 
  $RENAME(MISCPL=PFGMISC) 
  SYSGEN(RETAIN, MISCPL,  DA) 
  $RETURN(MISCPL) 
$ENDIF(MISC1) 
  
***** E N D   M I S C ******************
$REVERT(NOLIST) SYSGEN(MISC)
$EXIT. SYSGEN(MISC) 
$REVERT(ABORT) SYSGEN(MISC) FAILED
/WEOR 
.PROC,MMCL*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   M M C L **************
  
.IF, FILE(PFGMMCL, .NOT. AS) ,MMCL0.
  SYSGEN(RECLAIM, PFGMMCL)
.ENDIF(MMCL0) 
  
$IF, FILE(PFGMMCL, AS) ,MMCL1.
  SYSGEN(USER, SYSTEMX) 
  $RETURN(MAPLIBE, MAPLIBC) 
  $REWIND(PFGMMCL)
  $COPYBF(PFGMMCL,MAPLIBE)
  $COPYBF(PFGMMCL,MAPLIBC)
  SYSGEN(RETAIN, MAPLIBE, DA) 
  SYSGEN(RETAIN, MAPLIBC, DA) 
  $RETURN(MAPLIBE, MAPLIBC, PFGMMCL)
$ENDIF(MMCL1) 
  
***** E N D   M M C L ******************
$REVERT(NOLIST) SYSGEN(MMCL)
$EXIT. SYSGEN(MMCL) 
$REVERT(ABORT) SYSGEN(MMCL)  FAILED 
/WEOR 
.PROC,MODVAL*I
,P1 [CREATE OR ADD VALIDATIONS] 
    =(P1=CREATE,*N=CREATE,ADD,CREATE) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   M O D V A L **********
  
*  SYSGEN ASSUMES THAT THE PROCEDURE IS 
*  EXECUTING UNDER USER INDEX 377777B 
  
.IF, ($P1$ .EQ. $CREATE$) ,MODVAL1. 
  $RETURN(NEWVAL, VALINDS, VALIDUS) 
  $DEFINE(NEWVAL=VALIDUS/NA)
  $IF, FILE(NEWVAL, AS) ,MODVAL2. 
    $DEFINE(VALINDS)
    $ASSIGN(MS,INPUT) 
    $MODVAL(OP=C,L=SYSLIST,LO=E)
    $RETURN(INPUT)
    $RENAME(VALIDUS=NEWVAL) 
    $MODVAL(OP=U,I=ZZZZIN1,LO=E)
    $RETURN(VALINDS, VALIDUS) 
    .IF, (OT .EQ. SYO) .$ISF. 
    SYSGEN(LOADUSE) 
  $ELSE(MODVAL2)
    .IF, FILE(ZZSYSGU, .NOT. AS) .SYSGEN(LOADUSE) 
  $ENDIF(MODVAL2) 
.ELSE(MODVAL1)
.IF, ($P1$ .EQ. $ADD$) ,MODVAL1.
  $MODVAL(OP=U,I=ZZZZIN1,LO=E,FA) 
  SYSGEN(LOADUSE) 
.ENDIF(MODVAL1) 
$RETURN(ZZZZIN1)
  
***** E N D   M O D V A L **************
$REVERT(NOLIST) SYSGEN(MODVAL)
$EXIT. SYSGEN(MODVAL) 
$RETURN(ZZZZIN1, ZZZZIN2) 
$REVERT(ABORT) SYSGEN(MODVAL) FAILED
.DATA,ZZZZIN1 
/LIBRARY,XT=*,EB=51341665656103,EI=51341665656103,
/SYSTEMX,XT=*,EB=14711100205634,EI=14711100205634,
/SUBFAM0,XT=*,EB=10701131706662,EI=10701131706662,FUI=377760B,
/NETOPS,XT=*,EB=30675714154101,EI=30675714154101, 
/INSTALL,RL=ALL,IS=BATCH,AP=NUL,AP=IAF,AP=VEIAF,AW=ALL,SAV=ALL, 
      EB=16775624477163,EI=16775624477163,
      VM=ALL, 
/MANUALS,RL=ALL,AP=NUL,AP=IAF,AW=ALL, 
      EB=61650762753116,EI=61650762753116,
/APL0,MT=3,RP=2,TL=77B,CM=40B,DB=5B,FC=7B,CS=4B,FS=6B 
      PA=EVEN,RO=37B,PX=HALF,TT=TTY,TC=NORMAL,IS=NULL,MS=6B,DF=73B, 
      CC=77B,CP=77B,LP=77B,PT=77B,EC=0B,SL=77B,DS=3B,AP=NUL,AW=NUL, 
      AW=CASF,AW=CAND,AW=CSRP,AW=CPWC,AW=CLPF,AW=CSPF,AW=CCNR,
      EB=31666446017170,EI=31666446017170,
/APL1,MT=3,RP=2,TL=77B,CM=40B,DB=5B,FC=7B,CS=4B,FS=6B 
      PA=EVEN,RO=37B,PX=HALF,TT=TTY,TC=NORMAL,IS=NULL,MS=6B,DF=73B, 
      CC=77B,CP=77B,LP=77B,PT=77B,EC=0B,SL=77B,DS=3B,AP=NUL,AW=NUL, 
      AW=CASF,AW=CAND,AW=CSRP,AW=CPWC,AW=CLPF,AW=CSPF,AW=CCNR,
      EB=66411524121406,EI=66411524121406,
/SSPOT,MT=7,RP=7,SC=50B,MS=77B,CM=20B,TL=77B,CP=77B,
      DB=7,LP=77B,CC=77B,DF=77B,SL=77B,AW=NUL,
      AW=CLPF,AW=CSPF,AW=CCNR,AW=CASF,AW=CAND,AW=CSRP,AW=CSAP,
      EB=50757247340541,EI=50757247340541,
/KB100DC,FUI=16B,RL=ALL,AP=NUL,AW=ALL,SAV=ALL,CM=0, 
      EB=71041003777576,EI=71041003777576,
/CDCCE,RL=ALL,AP=NUL,AW=ALL,SAV=ALL,VM=ALL, 
      EB=76112361267310,EI=76112361267310,
/CDCCE2,RL=ALL,AP=NUL,AW=ALL,SAV=ALL,VM=NUL,VM=NS,
      EB=34340126045562,EI=34340126045562,
/PRINT01,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=15513646042464,EI=15513646042464,
/PRINT02,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=40453424717674,EI=40453424717674,
/PRINT03,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=36252522773744,EI=36252522773744,
/PRINT04,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=35137505563223,EI=35137505563223,
/PRINT05,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=40674305174243,EI=40674305174243,
/PRINT06,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=21046065266762,EI=21046065266762,
/PRINT07,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=26517140332443,EI=26517140332443,
/PRINT08,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=73704063313113,EI=73704063313113,
/PRINT09,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=67047434735552,EI=67047434735552,
/PRINT10,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=56227272346460,EI=56227272346460,
/PRINT11,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=75541545151336,EI=75541545151336,
/PRINT12,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=PSU, 
      EB=26163607120313,EI=26163607120313,
/NETADMN,RL=ALL,IS=BATCH,AP=ALL,AW=ALL,SAV=ALL, 
      EB=17575050240727,EI=17575050240727,
      VM=ALL, 
/NVE,RL=ALL,AW=ALL,SAV=ALL,AP=NUL,AP=IAF,AP=VEIAF,VM=ALL, 
      TC=ASCII,EB=13172356310116,EI=13172356310116, 
      IS=BATCH,FS=6,
/WEOR 
.PROC,MOVE*I
,P1 [FILE TO MOVE] =(*F)
,P2 [USERNAME TO MOVE FILE TO] =(*F)
,P3 [PUBLIC(PU), PRIVATE(PR), SEMI-PR(S)] =(*N=,PU,PR,S,P3=)
,P4 [ALTERNATE CATALOG DISPLAY OPTION]    =(*N=,Y,N,P4=)
,P5 [PERMIT TO INSTALLATION USER NAME]    =(*N=,PERMIT,P5=) 
. 
***** S T A R T   M O V E **************
  
SYSGEN(USER, INSTALL) 
SYSGEN(ACQUIRE, P1) 
SYSGEN(USER, P2)
$IF, FILE(P1, PM) ,MOVE1. 
  SYSGEN(RETAIN, P1, DA, P3, P4, P5)
$ELSE(MOVE1)
  SYSGEN(RETAIN, P1, IA, P3, P4, P5)
$ENDIF(MOVE1) 
$RETURN(P1) 
  
***** E N D   M O V E ******************
$REVERT(NOLIST) SYSGEN(MOVE)
$EXIT. SYSGEN(MOVE) 
$REVERT(ABORT) SYSGEN(MOVE) 
/WEOR 
.PROC,MSE1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   M S E 1 **************
  
.IF, FILE(PFGMSE1, .NOT. AS) ,MSE10.
  SYSGEN(RECLAIM, PFGMSE1)
.ENDIF(MSE10) 
  
$IF, FILE(PFGMSE1, AS) ,MSE11.
  SYSGEN(USER, SYSTEMX) 
  $RETURN(MSE, MSESLAV, MSECONF)
  $REWIND(PFGMSE1)
  $COPYBR(PFGMSE1,MSE)
  $COPYBR(PFGMSE1,MSESLAV)
  $COPYBR(PFGMSE1,MSECONF)
  SYSGEN(RETAIN, MSE,     IA, PR, Y, PERMIT)
  SYSGEN(RETAIN, MSESLAV, IA, PR, Y, PERMIT)
  SYSGEN(USER, SUBFAM0) 
  SYSGEN(RETAIN, MSECONF, IA, PR, Y, PERMIT)
  $RETURN(MSE, MSESLAV, MSECONF, PFGMSE1) 
$ENDIF(MSE11) 
  
***** E N D   M S E 1 ******************
$REVERT(NOLIST) SYSGEN(MSE1)
$EXIT. SYSGEN(MSE1) 
$REVERT(ABORT) SYSGEN(MSE1)  FAILED 
/WEOR 
.PROC,MSSI*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   M S S I **************
  
.IF, FILE(PFGMSSI, .NOT. AS) ,MSSI0.
  SYSGEN(RECLAIM, PFGMSSI)
.ENDIF(MSSI0) 
  
$IF, FILE(PFGMSSI, AS) ,MSSI1.
  SYSGEN(USER, SYSTEMX) 
  $RETURN(MAPCMI, MAPECS, MAPCH)
  $REWIND(PFGMSSI)
  $COPYBF(PFGMSSI,MAPCMI) 
  $COPYBF(PFGMSSI,MAPECS) 
  $COPYBF(PFGMSSI,MAPCH)
  SYSGEN(RETAIN, MAPCMI,  IA, PR, Y, PERMIT)
  SYSGEN(RETAIN, MAPECS,  IA, PR, Y, PERMIT)
  SYSGEN(RETAIN, MAPCH,   IA, PR, Y, PERMIT)
  SYSGEN(USER, INSTALL) 
  $RETURN(MSSIP, MJOBSPL) 
  $COPYBF(PFGMSSI,MSSIP)
  $COPYBF(PFGMSSI,MJOBSPL)
  SYSGEN(RETAIN, MSSIP,   DA) 
  SYSGEN(RETAIN, MJOBSPL, DA) 
  $RETURN(MSSIP, MJOBSPL, MAPCMI, MAPECS, MAPCH, PFGMSSI) 
$ENDIF(MSSI1) 
  
***** E N D   M S S I ******************
$REVERT(NOLIST) SYSGEN(MSSI)
$EXIT. SYSGEN(MSSI) 
$REVERT(ABORT) SYSGEN(MSSI)  FAILED 
/WEOR 
.PROC,NAMSTRT*I 
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   N A M S T R T **************
  
.IF, FILE(PRELOAD, AS) ,NAMSTRT0. 
  
  SYSGEN(USER, NETOPS)
  $RETURN(ZZZZDIR, ZZZNAMS) 
  $REWIND(PFGNAM5,PFGITF1,PFGPSU1,PFGRBF5,PFGRHP1,PFGCHA1,PFGTCPH)
  $REWIND(PFGATF1)
  .IF, FILE(PFGNAM5, AS) ,NAMADD. 
    $RETURN(NAMSTRT, NAM, NAMNOGO)
    $COPYBF(PFGNAM5,NAMSTRT)
    $COPYBF(PFGNAM5,NAM)
    $COPYBF(PFGNAM5,NAMNOGO)
    SYSGEN(RETAIN, NAMSTRT, IA, PU) 
    $RETURN(NAMSTRT)
  .ENDIF(NAMADD)
  .IF, FILE(PFGATF1, AS) ,ATFADD. 
    $NOTE(ZZZZDIR,NR)+JOB(JOBATF,AT,ATF)
    $NOTE(ZZZZDIR,NR)+PARAM(STKCON=STK) 
    $COPYBR(PFGATF1,ZZZNAMS)
    $RETURN(PFGATF1)
  .ENDIF(ATFADD)
  .IF, FILE(PFGITF1, AS) ,ITFADD. 
    $NOTE(ZZZZDIR,NR)+JOB(JOBITF,IT)
    $COPYBR(PFGITF1,ZZZNAMS)
  .ENDIF(ITFADD)
  .IF, FILE(PFGPSU1, AS) ,PSUADD. 
    $NOTE(ZZZZDIR,NR)+JOB(JOBPSU,PR,SY,NS)
    $COPYCR(PFGPSU1,ZZZNAMS)
    $REWIND(PFGPSU1)
    $SKIPF(PFGPSU1) 
    $COPYCF(PFGPSU1,EVFULFN)
    SYSGEN(RETAIN, EVFULFN, IA, PU) 
    $RETURN(EVFULFN)
  .ENDIF(PSUADD)
  .IF, FILE(PFGRBF5, AS) ,RBFADD. 
    $NOTE(ZZZZDIR,NR)+JOB(JOBRBF,RB,RBF)
    $COPYBR(PFGRBF5,ZZZNAMS)
    $RETURN(PFGRBF5)
  .ENDIF(RBFADD)
  .IF, FILE(PFGRHP1, AS) ,RHPADD. 
    $NOTE(ZZZZDIR,NR)+JOB(JOBQTF,QT,SY,NS)
    $NOTE(ZZZZDIR,NR)+JOB(JOBQTFS,QS,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBPTFS,PS,SY,NS) 
    $COPYBR(PFGRHP1,ZZZNAMS,3)
  .ENDIF(RHPADD)
  .IF, FILE(PFGTCPH, AS) ,TCPADD. 
    $NOTE(ZZZZDIR,NR)+JOB(JOBFTPI,IP,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBFTIR,PI,DI,SY,NS)
    $NOTE(ZZZZDIR,NR)+JOB(JOBFTPS,ST,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBFTSR,TS,DI,SY,NS)
    $NOTE(ZZZZDIR,NR)+PARAM(PISTART=YES)
    $NOTE(ZZZZDIR,NR)+PARAM(TSSTART=YES)
    $COPYBR(PFGTCPH,ZZZNAMS,4)
  .ENDIF(TCPADD)
  .IF, FILE(PFGCHA1, AS) ,CHA1ADD.
    $NOTE(ZZZZDIR,NR)+JOB(JOBFSR,FS,DI,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBLSR,LS,DI,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBOUR,OU,DI,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBFS,SF,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBLS,SL,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBOU,UO,SY,NS) 
    $NOTE(ZZZZDIR,NR)+JOB(JOBINMD,IN,SY,NS) 
    $NOTE(ZZZZDIR,NR)+PARAM(CDCNET=YES) 
    $NOTE(ZZZZDIR,NR)+PARAM(ZZFC=500) 
    $NOTE(ZZZZDIR,NR)+PARAM(FSSTART=NO) 
    $NOTE(ZZZZDIR,NR)+PARAM(LSSTART=NO) 
    $NOTE(ZZZZDIR,NR)+PARAM(OUSTART=NO) 
    $SKIPF(PFGCHA1,4) 
    $COPYEI(PFGCHA1,ZZZNAMS)
  .ENDIF(CHA1ADD) 
  $IF, FILE(ZZZNAMS, AS) ,NAMSADD.
    SYSGEN(UPSTRT, ZZZNAMS, , ZZZZDIR)
  $ENDIF(NAMSADD) 
  .IF, FILE(PFGNAM5, AS) ,NAMEND. 
    SYSGEN(ACQUIRE, NAMSTRT)
    SYSGEN(USER, INSTALL) 
    SYSGEN(RETAIN, NAMSTRT, IA, PU) 
    SYSGEN(USER, SYSTEMX) 
    SYSGEN(RETAIN, NAM,     IA, PR, Y, PERMIT)
    SYSGEN(RETAIN, NAMNOGO, IA, PR, Y, PERMIT)
  .ENDIF(NAMEND)
  $RETURN(ZZZZDIR, ZZZNAMS, NAM, NAMNOGO, NAMSTRT)
  $RETURN(PFGNAM5, PFGITF1, PFGPSU1, PFGRBF5, PFGRHP1, PFGTCPH) 
  $RETURN(PFGATF1)
  
.ELSE(NAMSTRT0) 
  
  $RETURN(IN) 
  $NOTE(IN,NR)+PFGNAM5,PFGITF1,PFGPSU1,PFGRBF5,PFGRHP1,PFGCHA1,PFGTCPH, 
  $NOTE(IN,NR)+PFGATF1
  SYSGEN(RECLAIM, IN) 
  $NOTE(PRELOAD)+ NEEDED FILE(S) PRELOADED
  REVERT(EX)SYSGEN(NAMSTRT) 
  
.ENDIF(NAMSTRT0)
  
  
***** E N D   N A M S T R T ******************
$REVERT(NOLIST) SYSGEN(NAMSTRT) 
$EXIT. SYSGEN(NAMSTRT)
$REVERT(ABORT) SYSGEN(NAMSTRT) FAILED 
/WEOR 
.PROC,NAM5*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   N A M 5 **************
  
.IF, FILE(PFGNAM5, .NOT. AS) ,NAM50.
  SYSGEN(RECLAIM, PFGNAM5)
.ENDIF(NAM50) 
  
$IF, FILE(PFGNAM5, AS) ,NAM51.
* 
*  INSTALL NAMSTRT, NAM AND NAMNOGO 
* 
  SYSGEN(USER, NETOPS)
  $RETURN(NAMSTRT, NAM, NAMNOGO)
  $REWIND(PFGNAM5)
  $COPYBF(PFGNAM5,NAMSTRT)
  $COPYBF(PFGNAM5,NAM)
  $COPYBF(PFGNAM5,NAMNOGO)
  SYSGEN(RETAIN, NAMSTRT, IA, PU) 
  SYSGEN(USER, SYSTEMX) 
  SYSGEN(RETAIN, NAM,     IA, PR, Y, PERMIT)
  SYSGEN(RETAIN, NAMNOGO, IA, PR, Y, PERMIT)
  $RETURN(NAMSTRT, NAM, NAMNOGO, PFGNAM5) 
$ENDIF(NAM51) 
  
***** E N D   N A M 5 ******************
$REVERT(NOLIST) SYSGEN(NAM5)
$EXIT. SYSGEN(NAM5) 
$REVERT(ABORT) SYSGEN(NAM5) FAILED
/WEOR 
.PROC,NDL1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   N D L 1 **************
  
.IF, FILE(PFGNDL1, .NOT. AS) ,NDL10.
  SYSGEN(RECLAIM, PFGNDL1)
.ENDIF(NDL10) 
  
$IF, FILE(PFGNDL1, AS) ,NDL11.
* 
*  INSTALL NDLDATA AND THE COMPILED 
*  BINARIES 
* 
  SYSGEN(USER, NETADMN) 
  $RETURN(NDLDATA, NCFFILE, LCFFILE)
  $REWIND(PFGNDL1)
  $COPYBF(PFGNDL1,NDLDATA)
  SYSGEN(RETAIN, NDLDATA, IA, PR) 
  $COPYBF(PFGNDL1,NCFFILE)
  $COPYBF(PFGNDL1,LCFFILE)
  SYSGEN(RETAIN, NCFFILE, DA) 
  SYSGEN(RETAIN, LCFFILE, DA) 
  $PERMIT(NCFFILE,ZZNOPUN=R)
  $PERMIT(LCFFILE,ZZNOPUN=R)
  $RETURN(PFGNDL1, NDLDATA, NCFFILE, LCFFILE) 
$ENDIF(NDL11) 
  
***** E N D   N D L 1 ******************
$REVERT(NOLIST) SYSGEN(NDL1)
$EXIT. SYSGEN(NDL1) 
$REVERT(ABORT) SYSGEN(NDL1) FAILED
/WEOR 
.PROC,NEWNOS*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   N E W N O S **********
  
.* IF *NEWNOS* IS ENTERED WITH FILE *DISK* ASSIGNED THEN EXECUTE THIS 
.* VERSION OF THE *NEWNOS* PROC. IF *DISK* IS NOT ASSIGNED, THEN
.* REQUEST A NEW DEADSTART TAPE AND PULL A NEW SYSGEN (NEWNOS) FROM 
.* IT. THIS METHOD IS USED TO PROPERLY UPDATE THE SYSTEM VERSION IN 
.* THE CMRDECK, FOLLOWING THE PROCEDURES IN THE SUPERMINI OPERATIONS
.* HANDBOOK.
  
.IF, FILE(DISK, .NOT. AS) ,NEWNOS1. 
  
  $RETURN(TAPE, PFG, SYSGEN)
  $LABEL(TAPE,VSN=ODT,D=GE,LB=KU,PO=RF) 
  $COPYEI(TAPE,DISK,V)
  $RETURN(TAPE) 
  $GTR(DISK,SYSGEN)PROC/SYSGEN
  $GTR(DISK,PFG)ULIB/PFGLIB 
  $REVERT(EX)$REVERT(EX)SYSGEN(NEWNOS)
  
.ELSE(NEWNOS1)
  
  .IF, FILE(SYSTEM, .NOT. AS) .$COMMON(SYSTEM)
  $RETURN(DECKS)
  $GTR(SYSTEM,DECKS)CMRD02
  $EDIT(DECKS,I=ZZZZZIN,L=SYSLIST)      * UPDATE SYSTEM VERSION 
  $GTR(SYSTEM,DECKS)EQPD02
  .IF, FILE(SYSTEM, .NOT. AS). $RETURN(SYSTEM)
  $RETURN(ZZZZZIN)
  SYSGEN(DST, DISK, DECKS, NEW, 0, GE)
  
.ENDIF(NEWNOS1) 
$REVERT(EX)$REVERT(EX)REQUEST,OPER. NEWNOS COMPLETE.
***** E N D   N E W N O S **************
$REVERT(NOLIST) SYSGEN(NEWNOS)
$EXIT. SYSGEN(NEWNOS) 
$REVERT(EX)$REVERT(EX)REQUEST,OPER. NEWNOS FAILED.
$REVERT(ABORT) SYSGEN(NEWNOS) FAILED
.DATA,ZZZZZIN 
S:/VERSION=/
D;1 
S;-1
A 
;VERSION=NOS 2.8.7 871.;
END 
/WEOR 
.PROC,NOSB*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   N O S B **************
  
.IF, FILE(PFGNOSB, .NOT. AS) ,NOSB0.
  SYSGEN(RECLAIM, PFGNOSB)
.ENDIF(NOSB0) 
  
$IF, FILE(PFGNOSB, AS) ,NOSB1.
* 
*  INSTALL HELPLIB
* 
  SYSGEN(USER, LIBRARY) 
  $RENAME(HELPLIB=PFGNOSB)
  SYSGEN(RETAIN, HELPLIB, DA, PU, Y)
  $RETURN(HELPLIB)
$ENDIF(NOSB1) 
  
***** E N D   N O S B ******************
$REVERT(NOLIST) SYSGEN(NOSB)
$EXIT. SYSGEN(NOSB) 
$REVERT(ABORT) SYSGEN(NOSB) FAILED
/WEOR 
.PROC,NOS2*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   N O S 2 **************
  
.IF, FILE(PFGNOS2, .NOT. AS) ,NOS20.
  SYSGEN(RECLAIM, PFGNOS2)
.ENDIF(NOS20) 
  
$IF, FILE(PFGNOS2, AS) ,NOS21.
* 
*  INSTALL STAGE JOB STARTUP PROCEDURE
* 
  SYSGEN(USER, SYSTEMX) 
  $RENAME(STAGE=PFGNOS2)
  SYSGEN(RETAIN, STAGE, IA, PR, Y, PERMIT)
  $RETURN(STAGE)
$ENDIF(NOS21) 
  
***** E N D   N O S 2 ******************
$REVERT(NOLIST) SYSGEN(NOS2)
$EXIT. SYSGEN(NOS2) 
$REVERT(ABORT) SYSGEN(NOS2) FAILED
/WEOR 
.PROC,NSS1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   N S S 1 **************
  
.IF, FILE(PFGNSS1, .NOT. AS) ,NSS10.
  SYSGEN(RECLAIM, PFGNSS1)
.ENDIF(NSS10) 
  
$IF, FILE(PFGNSS1, AS) ,NSS11.
* 
*  INSTALL SSF STARTUP PROCEDURE
* 
  SYSGEN(USER, SYSTEMX) 
  $RENAME(SSF=PFGNSS1)
  SYSGEN(RETAIN, SSF, IA, PR, Y, PERMIT)
  $RETURN(SSF)
$ENDIF(NSS11) 
  
***** E N D   N S S 1 ******************
$REVERT(NOLIST) SYSGEN(NSS1)
$EXIT. SYSGEN(NSS1) 
$REVERT(ABORT) SYSGEN(NSS1) FAILED
/WEOR 
.PROC,ONLM*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   O N L M **************
  
.IF, FILE(PFGONLM, .NOT. AS) ,ONLM0.
  SYSGEN(RECLAIM, PFGONLM)
.ENDIF(ONLM0) 
  
$IF, FILE(PFGONLM, AS) ,ONLM1.
* 
*  INSTALL DEFAULT SET OF ONLINE MANUALS
* 
  $REWIND(PFGONLM)
  SYSGEN(USER, MANUALS) 
  $BEGIN,,PFGONLM.
  $RETURN(PFGONLM)
$ENDIF(ONLM1) 
  
***** E N D   O N L M ******************
$REVERT(NOLIST) SYSGEN(ONLM)
$EXIT. SYSGEN(ONLM) 
$REVERT(ABORT) SYSGEN(ONLM) FAILED
/WEOR 
.PROC,OTHER*I 
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   O T H E R ************
  
.IF, FILE(PRELOAD, AS) ,OTHER0. 
  
  .IF, FILE(PFGAPL2, AS) .SYSGEN(APL2)
  .IF, FILE(PFGDCL2, AS) .SYSGEN(DCL2)
  .IF, FILE(PFGDUAL, AS) .SYSGEN(DUAL)
  .IF, FILE(PFGNOS2, AS) .SYSGEN(NOS2)
  .* *MAN1* MUST COME AFTER *ONLM* IN ORDER TO PROPERLY SET 
  .* *SYSBOOK* MANUAL.
  .IF, FILE(PFGONLM, AS) .SYSGEN(ONLM)
  .IF, FILE(PFGMAN1, AS) .SYSGEN(MAN1)
  .IF, FILE(PFGCML1, AS) .SYSGEN(CML1)
  
.ELSE(OTHER0) 
  
  $RETURN(IN) 
  $NOTE(IN,NR)+PFGAPL2,PFGCML1,PFGDCL2,PFGDUAL,PFGONLM,PFGMAN1
  SYSGEN(RECLAIM, IN) 
  $NOTE(PRELOAD)+ NEEDED FILE(S) PRELOADED
  REVERT(EX)SYSGEN(OTHER) 
  
.ENDIF(OTHER0)
  
***** E N D   O T H E R ****************
$REVERT(NOLIST) SYSGEN(OTHER) 
$EXIT. SYSGEN(OTHER)
$REVERT(ABORT) SYSGEN(OTHER) FAILED 
/WEOR 
.PROC,PARTIAL*I 
,P1 [VSN OF FIRST COMPONENT ORDER TAPE] 
    =(*S6(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ))
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   P A R T I A L ********
  
.IF, FILE(SYSTEM, .NOT. AS) .$COMMON(SYSTEM)
SYSGEN(UPGRADE, SYSTEM, NEW, P1, GE, GE)
.IF, FILE(SYSTEM, .NOT. AS). $RETURN(SYSTEM)
  
SYSGEN(FILES, P1) INSTALL PERMANENT FILES 
  
$REVERT(EX)$REVERT(EX)REQUEST,OPER. PARTIAL COMPLETE. 
***** E N D   P A R T I A L ************
$REVERT(NOLIST) SYSGEN(PARTIAL) 
$EXIT. SYSGEN(PARTIAL) FAILED 
$REVERT(EX)$REVERT(EX)REQUEST,OPER. PARTIAL FAILED. 
$REVERT(ABORT) SYSGEN(PARTIAL) FAILED 
/WEOR 
.PROC,PFTF*I
,P1 [PFTF TYPE, C64, C63] =(*N=C64,P1=C64,C64,C63)
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   P F T F **************
  
.IF, FILE(PFGPFTF, .NOT. AS) ,PFTF0.
  SYSGEN(RECLAIM, PFGPFTF)
.ENDIF(PFTF0) 
  
$IF, FILE(PFGPFTF, AS) ,PFTF1.
* 
*  INSTALL PFTFTR, AND RMUGET 
* 
  $REWIND(PFGPFTF)
  SYSGEN(USER, LIBRARY) 
  $RETURN(PFTFTR, RMUGET) 
  .IF, ($P1$ .EQ. $C64$) .* FILE 1 IS 64 CSET 
  .IF, ($P1$ .EQ. $C63$) .$SKIPF(PFGPFTF,1)  ** SKIP TO 63 CSET 
  $COPYBF(PFGPFTF,RMUGET) 
  $REWIND(PFGPFTF)
  $SKIPF(PFGPFTF,2)   ** REPOSITION FILE TO PULL OFF ULIB **
  $COPYBF(PFGPFTF,PFTFTR)  ** ULIB/PFTF **
  SYSGEN(RETAIN, RMUGET,  IA, PU, Y)
  SYSGEN(RETAIN, PFTFTR,  DA, PU, Y)
  $RETURN(PFTFTR, RMUGET, PFGPFTF)
$ENDIF(PFTF1) 
  
***** E N D   P F T F ******************
$REVERT(NOLIST) SYSGEN(PFTF)
$EXIT. SYSGEN(PFTF) 
$REVERT(ABORT) SYSGEN(PFTF) FAILED
/WEOR 
.PROC,PRPT*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   P R P T **************
  
.IF, FILE(PFGPRPT, .NOT. AS) ,PRPT0.
  SYSGEN(RECLAIM, PFGPRPT)
.ENDIF(PRPT0) 
  
$IF, FILE(PFGPRPT, AS) ,PRPT1.
* 
*  INSTALL PSR REPORT 
* 
  SYSGEN(USER, INSTALL) 
  $RENAME(PSRRPT=PFGPRPT) 
  SYSGEN(RETAIN, PSRRPT,  DA) 
  $RETURN(PSRRPT) 
$ENDIF(PRPT1) 
  
***** E N D   P R P T ******************
$REVERT(NOLIST) SYSGEN(PRPT)
$EXIT. SYSGEN(PRPT) 
$REVERT(ABORT) SYSGEN(PRPT) FAILED
/WEOR 
.PROC,PSU1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   P S U 1 **************
  
.IF, FILE(PFGPSU1, .NOT. AS) ,PSU10.
  SYSGEN(RECLAIM, PFGPSU1)
.ENDIF(PSU10) 
  
$IF, FILE(PFGPSU1, AS) ,PSU11.
* 
*  INSTALL PSU NAMSTRT RECORD 
* 
  $REWIND(PFGPSU1)
  $COPYCF(PFGPSU1,STRTREC)
  $COPYCF(PFGPSU1,EVFULFN)
  SYSGEN(USER, NETOPS)
  SYSGEN(UPSTRT, STRTREC, $$$JOB(JOBPSU,PR,SY,NS)$$$) 
  SYSGEN(RETAIN, EVFULFN, IA, PU) 
  $RETURN(PFGPSU1, EVFULFN, STRTREC)
$ENDIF(PSU11) 
  
***** E N D   P S U 1 ******************
$REVERT(NOLIST) SYSGEN(PSU1)
$EXIT. SYSGEN(PSU1) 
$REVERT(ABORT) SYSGEN(PSU1) FAILED
/WEOR 
.PROC,RBF5*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   R B F 5 **************
  
.IF, FILE(PFGRBF5, .NOT. AS) ,RBF50.
  SYSGEN(RECLAIM, PFGRBF5)
.ENDIF(RBF50) 
  
$IF, FILE(PFGRBF5, AS) ,RBF51.
* 
*  INSTALL RBF NAMSTRT RECORD 
* 
  SYSGEN(USER, NETOPS)
  SYSGEN(UPSTRT, PFGRBF5, $$$JOB(JOBRBF,RB,RBF)$$$) 
$ENDIF(RBF51) 
  
***** E N D   R B F 5 ******************
$REVERT(NOLIST) SYSGEN(RBF5)
$EXIT. SYSGEN(RBF5) 
$REVERT(ABORT) SYSGEN(RBF5) FAILED
/WEOR 
.PROC,RDF1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   R D F 1 **************
  
.IF, FILE(PFGRDF1, .NOT. AS) ,RDF10.
  SYSGEN(RECLAIM, PFGRDF1)
.ENDIF(RDF10) 
  
$IF, FILE(PFGRDF1, AS) ,RDF11.
* 
*  INSTALL RDF STARTUP PROCEDURE
* 
  SYSGEN(USER, SYSTEMX) 
  $RENAME(RDF=PFGRDF1)
  SYSGEN(RETAIN, RDF, IA, PR, Y, PERMIT)
  $RETURN(RDF)
$ENDIF(RDF11) 
  
***** E N D   R D F 1 ******************
$REVERT(NOLIST) SYSGEN(RDF1)
$EXIT. SYSGEN(RDF1) 
$REVERT(ABORT) SYSGEN(RDF1) FAILED
/WEOR 
.PROC,RECLAIM*I 
,P1 [NAME OF 1ST FILE TO LOAD]          =(P1=*,*F,*N=*) 
,P2 [NAME OF 2ND FILE TO LOAD]          =(P2=*,*F,*N=*) 
,P3 [NAME OF 3RD FILE TO LOAD]          =(P3=*,*F,*N=*) 
,P4 [NAME OF 4TH FILE TO LOAD]          =(P4=*,*F,*N=*) 
,P5 [NAME OF 5TH FILE TO LOAD]          =(P5=*,*F,*N=*) 
. 
***** S T A R T   R E C L A I M *** 
  
.IF, FILE(PRELOAD, AS) ,RECLAIM0. 
  
*  ALL NEEDED FILES HAVE BEEN PRELOADED 
  
.ELSE(RECLAIM0) 
  
  SYSGEN(TESTUI)
  $RETURN(ZZZZIN1, ZZZLIST) 
  $REWIND(ZZRECIN)
  $COPYBR(ZZRECIN,ZZZZIN1)  ** RECLAIM *COPY* DIRECTIVE 
  .IF, ($P1$ .EQ. $IN$) ,RECLAIM1.
    .* FILE *IN* CONTAINS RECLAIM DIRECTIVES, USE IT. 
    $REWIND(IN) 
    $COPYEI(IN,ZZZZIN1) 
  .ELSE(RECLAIM1) 
    .* ADD LIST OF FILES TO COPY
    .* USE P1-P5 AS FILE NAMES
    $EDIT(ZZZZIN2,I=ZZZZIN3,L=ZZZLIST)
    $COPYEI(ZZZZIN2,ZZZZIN1)
  .ENDIF(RECLAIM1)
  $NOTE(ZZZZIN1,NR)+END 
  $PACK(ZZZZIN1)
  
  *  FIND THE RECLAIM DATABASE
  
  $RETURN(RECLDB) 
  $ATTACH(RECLDB/NA)
  $IF, FILE(RECLDB, AS) ,RECLAIM2.
    $RETURN(TESTA)
    $GTR(RECLDB,TESTA,,,S,NA)TEXT/ZZBLDUN,ZZIUN 
*  * MISSING TEXT/ZZBLDUN *  OR 
*  * MISSING TEXT/ZZIUN *  IS A 
*  NORMAL MESSAGE AND DOES NOT INDICATE 
*  AN ERROR.
    $IF, FILE(TESTA, AS) ,RECLAIM2. 
    $RETURN(RECLDB) 
    RECLAIM(I=ZZZZIN1,L=SYSLIST,NA)   ** DATABASE ON CURRENT USERNAME 
  $ELSE(RECLAIM2) 
    $ATTACH(RECLDB/UN=ZZIUN,NA) 
    $IF, FILE(RECLDB, AS) ,RECLAIM3.
      $RETURN(RECLDB) 
      RECLAIM(I=ZZZZIN1,UN=ZZIUN,L=SYSLIST,NA) ** DATABASE ON UN=ZZIUN
    $ELSE(RECLAIM3) 
*************************************** 
*     RECLAIM DATABASE NOT FOUND      * 
*************************************** 
      $SKIP(FAIL) 
    $ENDIF(RECLAIM3)
  $ENDIF(RECLAIM2)
.ENDIF(RECLAIM0)
$SET(R1G = 0) 
$RETURN(ZZZZIN1, ZZZZIN2, ZZZZIN3, ZZZLIST, IN, CHECKUN)
  
***** E N D   R E C L A I M ******* 
$REVERT(NOLIST) SYSGEN(RECLAIM) 
$EXIT. SYSGEN(RECLAIM)
****************************************
*                                      *
*  AN ERROR OCCURRED WHILE ATTEMPTING  *
*  TO RECLAIM FILES FROM THE PERMANENT *
*  FILE TAPE. PLEASE CHECK THE DAYFILE *
*  AND FILE SYSLIST FOR THE CAUSE.     *
*                                      *
****************************************
$ENDIF(FAIL)
$COPY(ZZZLIST,SYSLIST)
$REVERT(ABORT) SYSGEN(RECLAIM) FAILED 
.*
.DATA,ZZZZIN3 
RS:/,*/,/ /;* 
END 
.*
.DATA,ZZZZIN2 
P1,P2,P3,P4,P5
.*
.IF, FILE(ZZRECIN, .NOT. AS) ,RECLAIM4. 
.DATA,ZZRECIN 
COPY,PF=*,UN=ZZBLDUN
.ENDIF(RECLAIM4)
.*
/WEOR 
.PROC,RETAIN*I
,P1 [FILE TO RETAIN] =(*F)
,P2 [DIRECT(DA) OR INDIRECT(IA) ACCESS]   =(IA,DA)
,P3 [PUBLIC(PU), PRIVATE(PR), SEMI-PR(S)] =(*N=,PU,PR,S,P3=)
,P4 [ALTERNATE CATALOG DISPLAY OPTION]    =(*N=,Y,N,P4=)
,P5 [PERMIT TO INSTALLATION USER NAME]    =(*N=,PERMIT,P5=) 
. 
***** S T A R T   R E T A I N ***** 
  
$PURGE(ZZZZZP2/NA)
.IF, ($P2$ .EQ. $DA$) ,RETAIN1. 
  $RETURN(ZZZZZP1)
  $REWIND(P1) 
  $DEFINE(ZZZZZP1=ZZZZZP2/CT=P3,AC=P4)
  $COPYEI(P1,ZZZZZP1) 
  $RETURN(ZZZZZP1)
.ELSE(RETAIN1)
  $SAVE(P1=ZZZZZP2/CT=P3,AC=P4) 
.ENDIF(RETAIN1) 
$PURGE(P1/NA) 
$CHANGE(P1=ZZZZZP2) 
.IF, ($P5$ .EQ. $PERMIT$) , RETAIN2.
  $PERMIT(P1,ZZIUN=R) 
.ENDIF(RETAIN2) 
  
***** E N D   R E T A I N ********* 
$REVERT(NOLIST) SYSGEN(RETAIN)
$EXIT. SYSGEN(RETAIN) 
****************************************
*                                      *
*  AN ERROR OCCURRED WHILE ATTEMPTING  *
*  TO RETAIN FILE *P1* AS A PERMANENT  *
*  FILE.  CHECK THE DAYFILE FOR THE    *
*  CAUSE.                              *
*                                      *
****************************************
$REVERT(ABORT) SYSGEN(RETAIN) FAILED
/WEOR 
.PROC,RHP1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   R H P 1 **************
  
.IF, FILE(PFGRHP1, .NOT. AS) ,RHP10.
  SYSGEN(RECLAIM, PFGRHP1)
.ENDIF(RHP10) 
  
$IF, FILE(PFGRHP1, AS) ,RHP11.
* 
*  INSTALL RHP NAMSTRT RECORD(S)
* 
  SYSGEN(USER, NETOPS)
  $RETURN(ZZZZDIR)
  $NOTE(ZZZZDIR,NR)+JOB(JOBQTF,QT,SY,NS)
  $NOTE(ZZZZDIR,NR)+JOB(JOBQTFS,QS,SY,NS) 
  $NOTE(ZZZZDIR,NR)+JOB(JOBPTFS,PS,SY,NS) 
  SYSGEN(UPSTRT, PFGRHP1, , ZZZZDIR)
$ENDIF(RHP11) 
  
***** E N D   R H P 1 ******************
$REVERT(NOLIST) SYSGEN(RHP1)
$EXIT. SYSGEN(RHP1) 
$REVERT(ABORT) SYSGEN(RHP1) FAILED
/WEOR 
.PROC,SITE*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   S I T E **************
  
.IF, FILE(PRELOAD, AS) ,SITE0.
  
  .IF, FILE(PFGNDL1, AS) .SYSGEN(NDL1)
  .IF, FILE(PFGFSE1, AS) .SYSGEN(FSES)
  .IF, FILE(PFGTOOL, AS) .SYSGEN(TOOL)
  
.ELSE(SITE0)
  
  $RETURN(IN) 
  $NOTE(IN,NR)+PFGNDL1,PFGFSE1,PFGTOOL
  SYSGEN(RECLAIM, IN) 
  $NOTE(PRELOAD)+ NEEDED FILE(S) PRELOADED
  REVERT(EX)SYSGEN(SITE)
  
.ENDIF(SITE0) 
  
***** E N D   S I T E ******************
$REVERT(NOLIST) SYSGEN(SITE)
$EXIT. SYSGEN(SITE) 
$REVERT(ABORT) SYSGEN(SITE) FAILED
/WEOR 
.PROC,SOURCE*I
,P1 [INSTALL CCP SOURCE FILES] =(*N=,CCP,P1=) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   S O U R C E **********
  
.IF, FILE(PRELOAD, AS) ,SOURCE0.
  
  .IF, FILE(PFGDECK, AS) .SYSGEN(DECK)
  .IF, FILE(PFGCCPB, AS) .AND. ($P1$ .EQ. $CCP$) .SYSGEN(CCPB)
  .IF, FILE(PFGCCPU, AS) .SYSGEN(CCPU)
  .IF, FILE(PFGCODE, AS) .SYSGEN(CODE)
  .IF, FILE(PFGCRSS, AS) .AND. ($P1$ .EQ. $CCP$) .SYSGEN(CRSS)
  .IF, FILE(PFGDBU1, AS) .SYSGEN(DBU1)
  .IF, FILE(PFGMISC, AS) .SYSGEN(MISC)
  .IF, FILE(PFGPRPT, AS) .SYSGEN(PRPT)
  .IF, FILE(PFGSRB1, AS) .SYSGEN(SRB1)
  
.ELSE(SOURCE0)
  
  SYSGEN(TESTUI)
  SYSGEN(USER, INSTALL) 
  .IF, FILE(SYSTEM, .NOT. AS) .$COMMON(SYSTEM)
  * 
  *  PUT RECLAIM OUT TO PERMANENT AND 
  *  LOCAL FILES
  * 
  $RETURN(RECLAIM)
  $GTR(SYSTEM,RECLAIM)ABS/RECLAIM 
  SYSGEN(RETAIN, RECLAIM, IA, S)
  * 
  *  PUT OUT RECLAIM DATABASE IF ONE
  *  DOES NOT ALREADY EXIST.
  * 
  $RETURN(RECLDB) 
  $ATTACH(RECLDB/NA)
  $IF, FILE(RECLDB, .NOT. AS) .SYSGEN(INIT, UPGRADE)
  $RETURN(IN) 
  $NOTE(IN,NR)+COPY,PF=*,UN=ZZBLDUN 
  $NOTE(IN,NR)+PFGDECK,PFGCCPB,PFGCCPU,PFGCRSS,PFGCODE, 
  $NOTE(IN,NR)+PFGDBU1,PFGMISC,PFGPRPT,PFGSRB1
  $NOTE(IN,NR)+END
  $PACK(IN) 
  .* TO USE RECLAIM DATABASE ON THIS USERNAME, MUST USE RECLAIM DIRECTLY
  RECLAIM(I=IN,L=SYSLIST,NA)
  $NOTE(PRELOAD)+ NEEDED FILE(S) PRELOADED
  REVERT(EX)SYSGEN(SOURCE, P1)
  
.ENDIF(SOURCE0) 
  
***** E N D   S O U R C E **************
$REVERT(NOLIST) SYSGEN(SOURCE)
$EXIT. SYSGEN(SOURCE) 
$REVERT(ABORT) SYSGEN(SOURCE) FAILED
/WEOR 
.PROC,SRB1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   S R B 1 **************
  
.IF, FILE(PFGSRB1, .NOT. AS) ,SRB10.
  SYSGEN(RECLAIM, PFGSRB1)
.ENDIF(SRB10) 
  
$IF, FILE(PFGSRB1, AS) ,SRB11.
* 
*  INSTALL PSR REPORT 
* 
  SYSGEN(USER, INSTALL) 
  $RENAME(SRB1=PFGSRB1) 
  SYSGEN(RETAIN, SRB1,  DA) 
  $RETURN(SRB1) 
$ENDIF(SRB11) 
  
***** E N D   S R B 1 ******************
$REVERT(NOLIST) SYSGEN(SRB1)
$EXIT. SYSGEN(SRB1) 
$REVERT(ABORT) SYSGEN(SRB1) FAILED
/WEOR 
.PROC,SUBSYS*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   S U B S Y S **********
  
.IF, FILE(PRELOAD, AS) ,SUBSYS0.
  
  .IF, FILE(PFGAP1I, AS) .SYSGEN(AP1I)
  .IF, FILE(PFGAP1L, AS) .SYSGEN(AP1L)
  .IF, FILE(PFGCCPL, AS) .SYSGEN(CCPL)
  .IF, FILE(PFGCDCS, AS) .SYSGEN(CDCS)
  .IF, FILE(PFGFSE1, AS) .SYSGEN(FSE1)
  .IF, FILE(PFGIAF1, AS) .SYSGEN(IAF1)
  .IF, FILE(PFGMCS1, AS) .SYSGEN(MCS1)
  .IF, FILE(PFGMMCL, AS) .SYSGEN(MMCL)
  .IF, FILE(PFGMSE1, AS) .SYSGEN(MSE1)
  .IF, FILE(PFGMSSI, AS) .SYSGEN(MSSI)
  .IF, FILE(PFGNSS1, AS) .SYSGEN(NSS1)
  .IF, FILE(PFGRDF1, AS) .SYSGEN(RDF1)
  .IF, FILE(PFGTAF1, AS) .SYSGEN(TAF1)
  
.ELSE(SUBSYS0)
  
  $RETURN(IN) 
  $NOTE(IN,NR)+PFGCCPL,PFGCDCS,PFGFSE1,PFGIAF1,PFGMCS1, 
  $NOTE(IN,NR)+PFGMSE1,PFGMSSI,PFGRDF1, 
  $NOTE(IN,NR)+PFGTAF1,PFGNSS1,PFGAP1I,PFGAP1L,PFGMMCL
  SYSGEN(RECLAIM, IN) 
  $NOTE(PRELOAD)+ NEEDED FILE(S) PRELOADED
  REVERT(EX)SYSGEN(SUBSYS)
  
.ENDIF(SUBSYS0) 
  
***** E N D   S U B S Y S **************
$REVERT(NOLIST) SYSGEN(SUBSYS)
$EXIT. SYSGEN(SUBSYS) 
$REVERT(ABORT) SYSGEN(SUBSYS) FAILED
/WEOR 
.PROC,SWAP*I
,P1 [DENSITY OF NEW DEADSTART TAPE] =(*N=PE,P1=PE,PE,GE,HY,HD)
,P2 [PRODUCT TO SWAP (RBF,NAM,NIP,834)] 
    =(*N=P2,P2=P2,NAM=PFGNAMD,RBF=PFGRBFD,NIP=PFGNIPB,834=PFGC834)
,P3 [PRODUCT TO SWAP (RBF,NAM,NIP,834)] 
    =(*N=P3,P3=P3,NAM=PFGNAMD,RBF=PFGRBFD,NIP=PFGNIPB,834=PFGC834)
,P4 [PRODUCT TO SWAP (RBF,NAM,NIP,834)] 
    =(*N=P4,P4=P4,NAM=PFGNAMD,RBF=PFGRBFD,NIP=PFGNIPB,834=PFGC834)
,P5 =(*A) 
. 
***** S T A R T   S W A P **************
  
.* ENSURE THAT PARAMETERS ARE CORRECT 
  
.IF, ($P2$ .EQ. $P3$ .OR. $P2$ .EQ. $P4$ .OR. $P3$ .EQ. $P4$) ,SWAP1. 
****************************************
*  SPECIFY PRODUCT NAMES ONLY ONCE
****************************************
SKIP(FAIL)
.ENDIF(SWAP1) 
  
$RETURN(P2, P3, P4) 
SYSGEN(RECLAIM, P2, P3, P4) 
.IF, FILE(SYSTEM, .NOT. AS) .$COMMON(SYSTEM)
$RETURN(IN) 
$IF, FILE(P2, AS) .$NOTE(IN,NR)+*FILE,P2
$IF, FILE(P3, AS) .$NOTE(IN,NR)+*FILE,P3
$IF, FILE(P4, AS) .$NOTE(IN,NR)+*FILE,P4
$IF, FILE(IN, AS) ,SWAP4. 
  $PACK(IN) 
  SYSGEN(DST, SYSTEM, 0, NEW, IN, P1) 
$ENDIF(SWAP4) 
.IF, FILE(SYSTEM, .NOT. AS) .$RETURN(SYSTEM)
$RETURN(P2, P3, P4) 
  
***** E N D   S W A P ******************
$REVERT(NOLIST) SYSGEN(SWAP)
$EXIT. SYSGEN(SWAP) 
$ENDIF(FAIL)
$REVERT(ABORT) SYSGEN(SWAP) 
/WEOR 
.PROC,SYSGEN*I
,PROC    [NAME OF PROC TO EXECUTE] =(*F,*A) 
,P1      [USED BY CALLED *PROC*]   =(*A,*N) 
,P2      [USED BY CALLED *PROC*]   =(*A,*N) 
,P3      [USED BY CALLED *PROC*]   =(*A,*N) 
,P4      [USED BY CALLED *PROC*]   =(*A,*N) 
,P5      [USED BY CALLED *PROC*]   =(*A,*N) 
. 
  
.IF, FILE(PFG, AS) ,SYSGEN1.
  .IF, (PNL .NE. 1) ,SYSGEN2. 
    .*
    .* THIS IS INSIDE OTHER LEVELS OF SYSGEN. 
    .* MAKE THIS LEVEL GO AWAY USING .EX. 
    .*
    .EX.$BEGIN(PROC,PFG,P1,P2,P3,P4,P5) 
  .ENDIF(SYSGEN2) 
.ELSE(SYSGEN1)
  .*
  .* TRY TO GET *PFG* FROM PRODUCT FILE 
  .*
  .IF, FILE(PRODUCT, .NOT. AS) .$ATTACH(PRODUCT/UN=ZZIUN,NA)
  $IF, FILE(PRODUCT, AS) ,SYSGEN2A. 
    $GTR(PRODUCT,PFG,,,,NA)ULIB/PFGLIB
    $RETURN(PRODUCT)
  $ENDIF(SYSGEN2A)
  $IF, FILE(PFG, .NOT. AS) ,SYSGEN3.
    .*
    .* TRY TO GET FILE *PFG* FROM THE SYSTEM
    .*
    .IF, FILE(SYSTEM, .NOT. AS) .$COMMON(SYSTEM)
    $SKIP(OKAY1)
    $EXIT. SYSGEN 
    ************************************
    *  UNABLE TO COMMON SYSTEM         *
    *  PLEASE CORRECT VALIDATIONS      *
    ************************************
    $SKIP(FAIL) 
    $ENDIF(OKAY1) 
    .*
    $GTR(SYSTEM,PFG,,,,NA)ULIB/PFGLIB 
    $IF, FILE(PFG, .NOT. AS) ,SYSGEN4.
    ************************************
    *  ULIB/PFGLIB IS NOT ON YOUR      *
    *  SYSTEM FILE. YOU MAY BE USING AN*
    *  INCORRECT DEADSTART TAPE.       *
    ************************************
    $SKIP(FAIL) 
    $ENDIF(SYSGEN4) 
    .IF, FILE(SYSTEM, .NOT. AS) .$RETURN(SYSTEM)
  $ENDIF(SYSGEN3) 
  $LIBEDIT(P=PFG,B=0,C,Z,LO=E)/*BUILD,OPLD
  $RETURN(NEW)
.ENDIF(SYSGEN1) 
.IF, FILE(SYSGEN, .NOT. AS) ,SYSGEN5. 
   $GTR(PFG,SYSGEN)#PROC/SYSGEN 
.ENDIF(SYSGEN5) 
.*
.* THE PROCEDURE NESTING LEVEL (PNL) IS 1.
.* THIS MEANS THIS IS THE VERY FIRST SYSGEN CALL. 
.* EXECUTE A NORMAL BEGIN SO ANY ERRORS WILL RETURN 
.* TO THIS COPY OF SYSGEN 
.*
$SETASL(*)
$SETJSL(*)
$SETTL(*) 
.IF, (OT .EQ. SYO) .AND. FILE(OUTPUT, .NOT. AS) .$WRITER(OUTPUT)
$GET(ZZSYSGU/NA)
$BEGIN(PROC,PFG,P1,P2,P3,P4,P5) 
$RETURN(PRELOAD, ZZSYSGU) 
  
***** E N D   S Y S G E N **************
$REVERT(NOLIST) SYSGEN
$EXIT. SYSGEN 
****************************************
*                                      *
*  AN ERROR OCCURRED WHILE EXECUTING   *
*  A SYSGEN PROCEDURE.  CONSULT THE    *
*  DAYFILE FOR THE CAUSE.              *
*                                      *
****************************************
$ENDIF(FAIL)
$RETURN(ZZSYSGU)
.*
.* DETERMINE WHAT TO DO BASED ON THE ORIGIN TYPE
.*
.IF, (OT .EQ. SYO) ,T1. 
* DROP. 
  $REVERT(EX)DIS. 
.ELSE(T1) 
.IF, (OT .EQ. TXO) ,T1. 
  $NOTE.+ + ***  SYSGEN FAILURE *** + 
  $REVERT(NOLIST) SYSGEN
.ELSE(T1) 
$REVERT(ABORT) SYSGEN FAILURE 
.ENDIF(T1)
/WEOR 
.PROC,TAF1*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   T A F 1 **************
  
.IF, FILE(PFGTAF1, .NOT. AS) ,TAF10.
  SYSGEN(RECLAIM, PFGTAF1)
.ENDIF(TAF10) 
  
$IF, FILE(PFGTAF1, AS) ,TAF11.
* 
*  INSTALL TAF STARTUP PROCEDURE
*  AND ITS TASKLIB
* 
  $REWIND(PFGTAF1)
  $RETURN(TAF, TASKLIB) 
  $COPYBF(PFGTAF1,TAF)
  $COPYBF(PFGTAF1,TASKLIB)
  SYSGEN(USER, SYSTEMX) 
  SYSGEN(RETAIN, TAF, IA, PR, Y, PERMIT)
  SYSGEN(USER, KB100DC) 
  SYSGEN(RETAIN, TASKLIB, DA, PU) 
  $CHANGE(TASKLIB/M=RM) 
  $RETURN(TAF, TASKLIB, PFGTAF1)
$ENDIF(TAF11) 
  
***** E N D   T A F 1 ******************
$REVERT(NOLIST) SYSGEN(TAF1)
$EXIT. SYSGEN(TAF1) 
$REVERT(ABORT) SYSGEN(TAF1) FAILED
/WEOR 
.PROC,TAPE*I"CONFIGURE 639 TAPE DRIVE", 
EST     ' EST NUMBER OF UNIT     (60,61)       '=(60,61), 
CH      ' CHANNEL NUMBER         (1,3,6,20,26) '=(1,3,6,20,26,*N=), 
D       ' TO DELETE A TAPE UNIT                '
          =(*N=,Y=D,YES=D,D,DELETE=D,*K=D), 
. 
  
.* VALIDATE PARAMETERS
  
.IF, ($D$ .EQ.$$) .AND. ($CH$ .EQ. $$) ,TAPE0.
$RETURN(EQ0_EST)
*  TAPE CHANNEL NUMBER PARAMETER REQUIRED 
* 
*  THE FORMAT FOR THE TAPE COMMAND IS 
*  TAPE(#EST,#CH) WHERE 
*  *#EST* IS THE #EST NUMBER (60,61)
*  *#CH* IS THE TAPE CHANNEL NUMBER (1,3,6,20,26) 
*  TO DELETE AN INCORRECT ENTRY ENTER 
*  TAPE(#EST,#D=Y) WHERE
*      *#EST* IS THE INCORRECT #EST NUMBER
* 
*  PLEASE TRY AGAIN 
.IF, (PNL .EQ. 1). REVERT(NOLIST) 
REVERT(ABORT) DISK - #CH PARAMETER REQUIRED 
.ENDIF(TAPE0) 
  
.* GENERATE *EQ* ENTRY
  
$LIBEDIT(P=EQPLGO,B=EQ0_EST,C,L=0,I=0)
$RETURN(EQ0_EST)
.IF, ($D$ .EQ. $$) ,TAPE1.
***** 
*  639 TAPE, #EST EST ** CONFIGURED **
***** 
.ELSE(TAPE1)
***** 
*  639 TAPE, #EST EST   ** DELETED ** 
***** 
.ENDIF(TAPE1) 
$REVERT(NOLIST) TAPE(EST,CH,D)
$EXIT. TAPE(EST,CH,D) 
$REVERT(ABORT) TAPE(EST,CH,D) 
.DATA,EQ0_EST 
EQ0_EST 
.IF, ($D$ .EQ. $$) ,TAPE3.
EQ0_EST=NT,EQ=0,UN=0,#CH=CH,TF=IST. 
.ELSE(TAPE3)
+WEOR 
.ENDIF(TAPE3) 
/WEOR 
.PROC,TCPH*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   T C P H **************
  
.IF, FILE(PFGTCPH, .NOT. AS) ,TCPH0.
  SYSGEN(RECLAIM, PFGTCPH)
.ENDIF(TCPH0) 
  
$IF, FILE(PFGTCPH, AS) ,TCPH1.
* 
*  INSTALL TCP/IP NAMSTRT RECORDS 
* 
  SYSGEN(USER, NETOPS)
  $RETURN(ZZZZDIR)
  $NOTE(ZZZZDIR,NR)+JOB(JOBFTPI,IP,SY,NS) 
  $NOTE(ZZZZDIR,NR)+JOB(JOBFTIR,PI,DI,SY,NS)
  $NOTE(ZZZZDIR,NR)+JOB(JOBFTPS,ST,SY,NS) 
  $NOTE(ZZZZDIR,NR)+JOB(JOBFTSR,TS,DI,SY,NS)
  $NOTE(ZZZZDIR,NR)+PARAM(PISTART=YES)
  $NOTE(ZZZZDIR,NR)+PARAM(TSSTART=YES)
  SYSGEN(UPSTRT, PFGTCPH, , ZZZZDIR)
$ENDIF(TCPH1) 
  
***** E N D   T C P H ******************
$REVERT(NOLIST) SYSGEN(TCPH)
$EXIT. SYSGEN(TCPH) 
$REVERT(ABORT) SYSGEN(TCPH) FAILED
/WEOR 
.PROC,TESTUI*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   T E S T U I ***** 
  
.IF, (OT .EQ. SYO) ,TESTUI1.
  $NOTE(XZ25CSQ)+ FILE TO TEST IF UNDER UI=0
  $PURGE(XZ25CSQ/NA)
  $SAVE(XZ25CSQ/NA) 
  $RETURN(XZ25CSQ)
  $GET(XZ25CSQ/NA)
  $IF, FILE(XZ25CSQ, .NOT. AS) ,TESTUI2.
****************************************
*  *** NO USER INDEX OR USERNAME SET ***
*  SYSGEN MUST BE EXECUTED IN ONE OF THE
*  FOLLOWING WAYS - 
*  A. X.SYSGEN(FUNCTION, PARAMETERS,...)
*  B. X.DIS.
*     SUI(USERINDEX)
*     SYSGEN(FUNCTION, PARAMETERS,...)
*  C. X.DIS.
*     USER(USERNAME, PASSWORD)
*     SYSGEN(FUNCTION, PARAMETERS,...)
*  RUN SYSGEN(FULL) WITH METHOD *A*.
*  PLEASE RERUN.
****************************************
    $SKIP(FAIL) 
  $ELSE(TESTUI2)
    $RETURN(XZ25CSQ)
    $PURGE(XZ25CSQ/NA)
  $ENDIF(TESTUI2) 
.ENDIF(TESTUI1) 
  
***** E N D   T E S T U I ********* 
$REVERT(NOLIST) SYSGEN(TESTUI)
$EXIT. SYSGEN(TESTUI) 
$ENDIF(FAIL)
$REVERT(ABORT) SYSGEN(TESTUI) FAILED
/WEOR 
.PROC,TLIB*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   T L I B **************
  
.IF, FILE(PFGTLIB, .NOT. AS) ,TLIB0.
  SYSGEN(RECLAIM, PFGTLIB)
.ENDIF(TLIB0) 
  
$IF, FILE(PFGTLIB, AS) ,TLIB1.
* 
*  INSTALL TERMLIB
* 
  $REWIND(PFGTLIB)
  SYSGEN(USER, LIBRARY) 
  $RETURN(TERMLIB, TDUFILE) 
  $COPYBF(PFGTLIB,TERMLIB)
  $COPYBF(PFGTLIB,TDUFILE)
  SYSGEN(RETAIN, TERMLIB, IA, PU, Y)
  SYSGEN(RETAIN, TDUFILE, DA, PU, Y)
  $RETURN(TERMLIB, TDUFILE, PFGTLIB)
$ENDIF(TLIB1) 
  
***** E N D   T L I B ******************
$REVERT(NOLIST) SYSGEN(TLIB)
$EXIT. SYSGEN(TLIB) 
$REVERT(ABORT) SYSGEN(TLIB) FAILED
/WEOR 
.PROC,TOOL*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   T O O L **************
  
.IF, FILE(PFGTOOL, .NOT. AS) ,TOOL0.
  SYSGEN(RECLAIM, PFGTOOL)
.ENDIF(TOOL0) 
  
$IF, FILE(PFGTOOL, AS) ,TOOL1.
* 
*  INSTALL SECURITY AUDIT REDUCTION TOOL FILES
* 
  $REWIND(PFGTOOL)
  SYSGEN(USER, SYSTEMX) 
  $RETURN(SECART, MSGID)
  $COPYBF(PFGTOOL,SECART) 
  $COPYBF(PFGTOOL,MSGID)
  SYSGEN(RETAIN, SECART,  DA) 
  SYSGEN(RETAIN, MSGID,   IA) 
  $RETURN(SECART, MSGID, PFGTOOL) 
$ENDIF(TOOL1) 
  
***** E N D   T O O L ******************
$REVERT(NOLIST) SYSGEN(TOOL)
$EXIT. SYSGEN(TOOL) 
$REVERT(ABORT) SYSGEN(TOOL) FAILED
/WEOR 
.PROC,UPGRADE*I 
,P1 [NAME OF BASE PRODUCT FILE] =(*F) 
,P2 [NAME OF NEW PRODUCT FILE ] =(*F) 
,P3 [DUMP TAPE VSN] =(*S6(ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789))
,P4 [DUMP TAPE DENSITY] =(HD, HY, PE, GE) 
,P5 [DEADSTART TAPE DENSITY] =(HY,HD,PE,GE,NOTAPE,P5=NOTAPE,*N=NOTAPE)
. 
***** S T A R T   U P G R A D E ********
  
.IF, ($P1$ .EQ. $PRODUCT$) .OR. 
     ($P2$ .EQ. $PRODUCT$) ,UPGRADE1. 
****************************************
*  THE NAME OF THE BASE PRODUCT FILE   *
*  AND THE NEW PRODUCT FILE MAY NOT BE *
*  *PRODUCT*. CHANGE FILE NAMES AND    *
*  RERUN.                              *
****************************************
$SKIP(FAIL) 
.ENDIF(UPGRADE1)
  
SYSGEN(TESTUI)
SYSGEN(USER, INSTALL) 
  
.IF, ($P1$ .NE. $0$) .AND. ($P2$ .NE. $0$) ,UPGRADE2. 
  .IF, FILE(P1, .NOT. AS) .AND. ($P5$ .EQ. $NOTAPE$) ,UPGRADE3. 
****************************************
*  YOU MUST PREASSIGN BASE PRODUCT FILE*
*  OR SUPPLY THE DENSITY OF A DEADSTART*
*  TAPE TO REQUEST TO USE AS THE BASE  *
*  PRODUCT FILE.                       *
****************************************
$SKIP(FAIL) 
  .ENDIF(UPGRADE3)
  
  .IF, ($P5$ .NE. $NOTAPE$) .AND. FILE(P1, .NOT. AS) ,UPGRADE4. 
    $RETURN(ODT)
    $LABEL(ODT,VSN=ODT,LB=KU,F=I,D=P5,PO=RF) OLD DEADSTART TAPE 
    $COPYEI(ODT,P1,V) 
    $RETURN(ODT)
  .ENDIF(UPGRADE4)
  
  .IF, FILE(P1, TP) ,UPGRADE5.
    $RENAME(ZZZTAPE=P1) 
    $COPYEI(ZZZTAPE,P1,V) 
    $RETURN(ZZZTAPE)
  .ENDIF(UPGRADE5)
.ENDIF(UPGRADE2)
  
* 
*  CREATE THE RECLAIM DATABASE
*  IF IT DOES NOT ALREADY EXIST 
* 
$RETURN(RECLDB) 
$ATTACH(RECLDB/NA)
$IF, FILE(RECLDB, .NOT. AS) ,UPGRADE5A. 
  $DEFINE(RECLDB/CT=S,M=R)
$ENDIF(UPGRADE5A) 
$RETURN(RECLDB) 
* 
*  UPDATE DATABASE
* 
$RETURN(PRODUCT, DSTDIR, BLDLIB, IN)
$NOTE(IN,NR)+COPY,TN=P3,D=P4,PF=*,UN=ZZBLDUN
$NOTE(IN,NR)+PRODUCT,DSTDIR,BLDLIB
$NOTE(IN,NR)+END
$PACK(IN) 
RECLAIM(L=SYSLIST,I=IN,NA)
****************************************
*  THE MESSAGE *NO FILES PROCESSED* IS *
*  NOT AN INDICATION OF A FAILURE.     *
*  IGNORE THIS MESSAGE.                *
****************************************
$RETURN(IN) 
  
.IF, ($P1$ .NE. $0$) .AND. ($P2$ .NE. $0$) ,UPGRADE6. 
  $IF, FILE(PRODUCT, AS) .AND.
       FILE(DSTDIR,  AS) .AND.
       FILE(BLDLIB,  AS) ,UPGRADE7. 
    * 
    *  RESOLVE ALL ULIB PROBLEMS
    * 
    BLDLIB. 
    * 
    *  GENERATE NEW DEADSTART TAPE
    * 
    SYSGEN(DST, P1, PRODUCT, P2, DSTDIR, P5)
  $ENDIF(UPGRADE7)
.ENDIF(UPGRADE6)
$RETURN(INSTRP) 
  
***** E N D   U P G R A D E ************
$REVERT(NOLIST) SYSGEN(UPGRADE) 
$EXIT. SYSGEN(UPGRADE)
$ENDIF(FAIL)
$REVERT(ABORT) SYSGEN(UPGRADE) FAILED 
.DATA,INSTRP
.PROC,CRELIB*I
,LIBNAME [NAME OF LIBRARY TO PROCESS] =(*F) 
,NX      [CROSS REFERENCE]            =(0,1)
. 
***** S T A R T   C R E L I B **********
  
$RETURN(LIB1, LIB2, LIB3, LIB4) 
* 
*  GET LIBRARY FROM BASE SYSTEM. DO NOT 
*  ABORT IF THE LIBRARY IS NOT PRESENT
*  SINCE THIS PRODUCT MAY NOT HAVE BEEN 
*  ON THE ORIGINAL SYSTEM.
* 
$GTR(P1,LIB1,,,,NA)ULIB/LIBNAME 
* 
*  GET LIBRARY FROM PRODUCT FILE. 
* 
$GTR(PRODUCT,LIB2)ULIB/LIBNAME
* 
*  MERGE THE TWO LIBRARIES TOGETHER 
* 
$LIBEDIT(P=LIB1,B=LIB2,N=LIB3,I=0,L=SYSLIST)
* 
*  MAKE INTO A ULIB 
* 
$LIBGEN(F=LIB3,P=LIB4,N=LIBNAME,##NX=NX)
* 
*  UPDATE PRODUCT WITH NEW LIBRARY
* 
$LIBEDIT(P=PRODUCT,B=LIB4,C,I=0,L=SYSLIST)
* 
*  DONE 
* 
$RETURN(LIB1, LIB2, LIB3, LIB4, NEW)
  
***** E N D   C R E L I B **************
$REVERT(NOLIST) 
$EXIT. CRELIB 
$REVERT(ABORT) CRELIB FAILED
/WEOR 
.PROC,UPSTRT*I
,P1 [RECORD TO BE ADDED TO NAMSTRT] =(*F) 
,P2 [JOB STATEMENT]                 =(*N=NODIR,P2=NODIR,*A) 
,P3 [JOB STATEMENT FILE]            =(*N=NOFILE,P3=NOFILE,*F) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   U P S T R T ***** 
  
SYSGEN(ACQUIRE, NAMSTRT)
$RETURN(ZZZLIST, ZZZTMP1, ZZZTMP2)
$GTR(NAMSTRT,ZZZTMP1,,NR)INIT 
$WRITEF(ZZZTMP1)
$GTR(NAMSTRT,ZZZTMP1,,NR)RECOVR 
$WRITEF(ZZZTMP1)
$GTR(NAMSTRT,ZZZTMP1,,NR)RESTRT 
$WRITEF(ZZZTMP1)
$GTR(NAMSTRT,ZZZTMP1,,NR)MULTI
$WRITEF(ZZZTMP1)
$GTR(NAMSTRT,ZZZTMP1,,NR)MINIT
$WRITEF(ZZZTMP1)
$GTR(NAMSTRT,ZZZTMP1,,NR)MRECOV 
$WRITEF(ZZZTMP1)
  
.IF, ($P3$ .EQ. $NOFILE$) ,UPSTRT0. 
  UPSTRT(ZZZTMP1,ZZZFILE,ZZZTMP2) 
.ELSE(UPSTRT0)
  UPSTRT(ZZZTMP1,P3,ZZZTMP2)
  $RETURN(P3) 
.ENDIF(UPSTRT0) 
  
$LIBEDIT(P=NAMSTRT,B=0,C,LO=E,L=SYSLIST,Z./*FILE P1/*FILE ZZZTMP2 
  
SYSGEN(RETAIN, NAMSTRT, IA, PU) 
$RETURN(NEW, P1, ZZZTMP1, ZZZTMP2, ZZZFILE) 
  
***** E N D   U P S T R T ********* 
$REVERT(NOLIST) SYSGEN(UPSTRT)
$EXIT. SYSGEN(UPSTRT) 
$REWIND(ZZZLIST)
$COPY(ZZZLIST,SYSLIST)
$REVERT(ABORT) SYSGEN(UPSTRT) FAILED
.DATA,ZZZFILE 
P2
/WEOR 
.PROC,USER*I
,P1 [USERNAME] =(*F)
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   U S E R ********* 
  
.IF, (OT .EQ. SYO) .AND. FILE(ZZSYSGU, AS) .ZZSYSGU(P1) 
  
***** E N D   U S E R ************* 
$REVERT(NOLIST) SYSGEN(USER)
$EXIT. SYSGEN(USER) 
$REVERT(ABORT) SYSGEN(USER) FAILED
/WEOR 
.PROC,XEDT*I
,P1 =(*A) 
,P2 =(*A) 
,P3 =(*A) 
,P4 =(*A) 
,P5 =(*A) 
. 
***** S T A R T   X E D T **************
  
.IF, FILE(PFGXEDT, .NOT. AS) ,XEDT0.
  SYSGEN(RECLAIM, PFGXEDT)
.ENDIF(XEDT0) 
  
$IF, FILE(PFGXEDT, AS) ,XEDT1.
* 
*  INSTALL XEDIT HELP FILE (XEDITH) 
* 
  SYSGEN(USER, LIBRARY) 
  $RENAME(XEDITH=PFGXEDT) 
  SYSGEN(RETAIN, XEDITH,  IA, PU, Y)
  $RETURN(XEDITH) 
$ENDIF(XEDT1) 
  
***** E N D   X E D T ******************
$REVERT(NOLIST) SYSGEN(XEDT)
$EXIT. SYSGEN(XEDT) 
$REVERT(ABORT) SYSGEN(XEDT) FAILED
*WEOR 
