PRDIN 
.PROC,PRDIN*I"GET SOURCE PL FOR PRODUCT PRDNAME",\
*CALL,COMPRD
OLDPL   ' OUTPUT SOURCE PROGRAM LIBRARY        '=(*N,*F), 
DISK    ' FILE TO RECEIVE COPY OF PRDNAME      '=(*N,*F), 
PN      ' PACK NAME FOR INPUT PROGRAM LIBRARY  '=(*N=,*A),
PR      ' DEVICE TYPE FOR INPUT PL             '=(*N=,*A),
*CALL,COMBLUN 
*CALL,COMIUN
*CALL,COMDISK 
*CALL,COMIN 
*CALL,COMOUT
. 
*IF,DEF,PDOC
.HELP 
  
THIS PROCEDURE IS USED TO GET PRODUCT SOURCE PL *PRDNAME* LOCAL TO
THE BUILD JOB AND TO PERFORM SOME PROCESSING ON THAT FILE BASED ON
WHAT PARAMETERS WERE SPECIFIED WHEN *PRDIN* WAS CALLED.  THE
FOLLOWING STEPS ARE PERFORMED.
  
1.  MAKE THE FILE *PRDNAME* LOCAL TO THE JOB.  THE ORDER OF SEARCH
FOR THIS FILE IS: 
  
 - FILE NAMED *PRDNAME* IS ALREADY LOCAL. 
 - ATTACH FILE *PRDNAME_PSRIN* FROM USER *UN1* PACK *PN* TYPE *PR*. 
 - RECLAIM FILE *PRDNAME_PSRIN* FROM CDC SUPPLIED DUMP TAPE.
  
2.  IF DISKINS=YES (A DISK INSTALLATION)...  IF THE FILE *PRDNAME*
WAS LOADED FROM THE RECLAIM TAPE, MAKE THE FILE PERMANENT ON THE
CURRENT USERNAME.  THE FILE NAME WILL BE *PRDNAME_PSRIN*, AND THE 
PACK NAME/TYPE ARE SPECIFIED BY *PN*/*PR* PARAMETERS.  (PRDIN WILL
ABORT IF THE *UN1* PARAMETER DOES NOT SPECIFY THE CURRENT USERNAME BY 
*UN1=0*). 
  
3. IF *PRDNAME* IS A MULTI-FILE FILE (*DISK*.NE.0), COPY *PRDNAME*
TO THE FILE *DISK*. FILE 1 OF *PRDNAME* IS A SEQUENTIAL AS OPPOSED
TO RANDOM FORMATTED UPDATE PL. IF FILE *OLDPL* IS TO BE WRITTEN 
USE COPYBF. 
  
4. IF *PRDNAME* IS A SINGLE-FILE FILE (*DISK*.EQ.0) THEN FILE *DISK*
WILL NOT BE CREATED. *PRDNAME* CONTAINS A RANDOM AS OPPOSED TO
SEQUENTIAL FORMATTED UPDATE PL. IF FILE *OLDPL* IS NEEDED, COPY 
*PRDNAME* TO *OLDPL*. 
.ENDHELP
*ENDIF
*CALL,PSRLEV
* PRDIN - GET SOURCE PL FOR PRODUCT *PRDNAME* 
  
.**** PRDIN 
.*
.*    SEE HELP DESCRIPTION ABOVE FOR DETAILS ON PROCEDURE FUNCTION. 
  
***************** P R D I N **********************
RETURN(DISK,OLDPL)
SET(R1=0) 
  
* 
*  NOTE THAT IT FIRST TRIES TO FIND THE PL FROM 
*  THIS USER NUMBER, THEN IF NOT FOUND, TRIES TO
*  RECLAIM IT FROM TAPE BUILT BY THE CUSTOMER; IF 
*  STILL NOT FOUND, WILL TRY TO RECLAIM IT FROM 
*  CDC'S DUMP TAPES.
* 
.* GET THE PRODUCT FILE LOCAL AS FILE *PRD*.
  
.IF, FILE(PRDNAME, .NOT. AS) ,PRDIN10.
  ATTACH(PRDNAME=PRDNAME_PSRIN/UN=UN1,#PN=PN,R=PR,NA) 
  IF, FILE(PRDNAME, .NOT. AS) ,PRDIN20. 
    * ATTEMPT TO GET PL WITH CUSTOMER UN
    RECLAIM(Z,UN=IUN,L=RL)/COPY,PF=PRDNAME_PSRIN,NN=PRDNAME,UN=IUN. 
      IF, FILE(PRDNAME, .NOT. AS), PRDIN22. 
      * ATTEMPT TO GET PL WITH CDC UN 
      RECLAIM(Z,UN=IUN,L=RL)/COPY,PF=PRDNAME_PSRIN,NN=PRDNAME,UN=BLDUN. 
        IF, FILE(PRDNAME, .NOT. AS) ,PRDIN25. 
REVERT(ABORT)PRDIN - FILE *PRDNAME* NOT ON DUMP TAPE
        ENDIF(PRDIN25)
      ENDIF(PRDIN22)
      SET(R1=1) 
  ENDIF(PRDIN20)
.ENDIF(PRDIN10) 
REWIND(PRDNAME) 
  
.* DEFINE SOURCE PL ON DISK IF THIS IS A DISK INSTALLATION
  
IF, ( $DISKINS$ .EQ. $YES$ ) .AND.
    ( R1        .EQ. 1     ) ,PRDIN30.
  .* PUT *PRDNAME* ON DISK IF *UN1* PARAMETER IS OKAY.
  .IF, ( $UN1$ .NE. $0$ ) ,PRDIN40. 
REVERT(ABORT)PRDIN - #UN1 MUST BE ZERO TO SAVE INPUT PL.
  .ENDIF(PRDIN40) 
  UNLOAD(PRDNAME_PSRIN) 
  DEFINE(PRDNAME_PSRIN/#PN=PN,R=PR) 
  COPYEI(PRDNAME,PRDNAME_PSRIN) 
  UNLOAD(PRDNAME,PRDNAME_PSRIN) 
  ATTACH(PRDNAME=PRDNAME_PSRIN/#PN=PN,R=PR) 
ENDIF(PRDIN30)
  
.* BREAK UP *PRDNAME*.
  
.IF, ( $DISK$ .NE. $0$       ) ,PRDIN80.
  .IF, ( $OLDPL$ .NE. $0$ ) ,PRDIN70. 
    COPYBF(PRDNAME,OLDPL) 
  .ENDIF(PRDIN70) 
  REWIND(PRDNAME) 
  COPYEI(PRDNAME,DISK)
  REWIND(DISK)
  SKIPF(DISK) 
.ELSE(PRDIN80)
  .IF, ( $OLDPL$ .NE. $0$ ) ,PRDIN60. 
    COPY(PRDNAME,OLDPL) 
  .ENDIF(PRDIN60) 
.ENDIF(PRDIN80) 
  
REWIND(PRDNAME) 
RETURN(RL)
  
REVERT. PRDIN ************************************
EXIT. PRDIN 
REWIND(RL)
COPYEI(RL,OUTPUT) 
REVERT(ABORT) PRDIN ******************************
*WEOR 
