PRDOUT
.PROC,PRDOUT*I"WRITE OUTPUT PL FOR PRODUCT PRDNAME",\ 
*CALL,COMPRD
NEWPL   ' FILE HOLDING OUTPUT PL               '=(*N,*F), 
PNO     ' PACK NAME FOR OUTPUT PROGRAM LIBRARY '=(*N=,*A),
PRO     ' DEVICE TYPE FOR OUTPUT PL            '=(*N=,*A),
*CALL,COMDISK 
*CALL,COMDEN
*CALL,COMIUN
*CALL,COMIN 
*CALL,COMOUT
. 
*IF,DEF,PDOC
.HELP 
  
THIS PROCEDURE IS USED TO WRITE THE OUTPUT PL FOR PRODUCT *PRDNAME*.
IT ALSO DOES SOME SPECIAL PROCESSING FOR INTERNAL SMD BUILDS. 
  
1.  (FOR SMD BUILDS ONLY) ( R1G .NE. 0 ) COPY THE CONTENTS OF FILE
*NEWPL* TO FILE *SMDPL*.
  
2.  IF OUTPUT PL'S ARE NOT TO BE WRITTEN (OUTPRD=NO) THEN REVERT. 
  
3.  IF THE FILE *PRDNAME_NEW* IS NOT ASSIGNED THEN DO STEP 3A OR 3B 
DEPENDING ON THE *DISKINS* PARAMETER. 
  
3A.  IF *DISKINS=YES* THEN SAVE *NEWPL* ON DISK.  THE PERMANENT FILE
NAME WILL BE *PRDNAME_PSROUT*, PACK LOCATION/TYPE SPECIFIED BY
*PNO/PRO*.  (PRDOUT WILL ABORT IF *UN2* DOES NOT SPECIFY CURRENT
USERNAME BY *UN2=0* ).
  
3B.  IF *DISKINS=NO* *NEWPL* WILL BE DUMPED USING RECLAIM.  SINCE 
RECLAIM CAN ONLY DUMP PERMANENT FILES, DEFINE A TEMPORARY FILE FOR
RECLAIM TO USE. 
  
4.  COPY *NEWPL* TO *PRDNAME_NEW*.
  
5. IF A TEMPORARY FILE WAS DEFINED, RECLAIM THE FILE THEN PURGE THE 
TEMPORARY ONE.
  
.ENDHELP
*ENDIF
*CALL,PSRLEV
* PRDOUT - WRITE OUTPUT PL FOR PRODUCT *PRDNAME*
  
*************** P R #D O U T ********************** 
  
.IF, ( FILE(NEWPL, .NOT. AS) ),PRDOUT1. 
REVERT(ABORT)PRDOUT - NO #NEWPL FILE
.ENDIF(PRDOUT1) 
  
.IF, ( R1G .NE. 0 ) ,PRDOUT05.
  REWIND(NEWPL,SMDPL) 
  COPYEI(NEWPL,SMDPL) 
.ENDIF(PRDOUT05)
  
.IF, ( $OUTPRD$ .EQ. $NO$ ) ,PRDOUT10.
REVERT.*PRDOUT - NO OUTPUT SOURCE FILE WRITTEN. 
.ENDIF(PRDOUT10)
  
SET(R1=0) 
.IF, ( FILE(PRDNAME_NEW, .NOT. AS) ) ,PRDOUT40. 
  .IF, ( $DISKINS$ .EQ. $YES$  ) ,PRDOUT30. 
    * DEFINE THE OUTPUT SOURCE FILE IF UN2 IS OKAY
    .IF, ( $UN2$ .NE. $0$ ) ,PRDOUT20.
REVERT(ABORT)PRDOUT - #UN2 MUST BE ZERO TO SAVE OUTPUT PL.
    .ENDIF(PRDOUT20)
    PURGE(PRDNAME_PSROUT/#PN=PNO,R=PRO,NA)
    DEFINE(PRDNAME_NEW=PRDNAME_PSROUT/#PN=PNO,R=PRO)
  .ELSE(PRDOUT30) 
    * DEFINE A TEMPORARY COPY FOR RECLAIM USAGE.
    PURGE(ZZZ_PRDNAME/NA) 
    DEFINE(PRDNAME_NEW=ZZZ_PRDNAME) 
    SET(R1=1) 
  .ENDIF(PRDOUT30)
.ENDIF(PRDOUT40)
  
REWIND(NEWPL,PRDNAME_NEW) 
COPYEI(NEWPL,PRDNAME_NEW) 
UNLOAD(PRDNAME_NEW) 
  
IF, ( R1 .EQ. 1 ) ,PRDOUT50.
  RETURN(ZZZZZIN) 
  NOTE(ZZZZZIN,NR)+DUMP,PF=*,TN=OUTPLS,#D=D.
  NOTE(ZZZZZIN,NR)+PRDNAME_PSROUT=ZZZ_PRDNAME 
  NOTE(ZZZZZIN,NR)+END
  PACK(ZZZZZIN) 
  RECLAIM(UN=IUN,L=RLIST,I=ZZZZZIN) 
  RETURN(ZZZZZIN) 
  PURGE(ZZZ_PRDNAME/NA) 
ENDIF(PRDOUT50) 
  
REVERT. PRDOUT ***********************************
EXIT. PRDOUT
REVERT(ABORT) PRDOUT *****************************
*WEOR 
