.PROC,DELLIB*I,
R "- Record name (or ALL or *)"        = (ALL=*,*,*F),
T "- Type of record to delete"         = (ABS,CAP,OPL,OPLC,OPLD,OVL,
                                           PP,PPU,PROC,REL,TEXT,ULIB),
L "- Library file name"                = (*N=#FILE,*F),
.
.HELP
 The DELLIB procedure DELetes records from a LIBrary file.
 Requires CATALOG binaries with GENCAT entry point.

 Parameter   Default   Description
   Name       Value

   r                   record to delete (or ALL, or *)
   t                   type of record to delete
  [l]                  library file from which record is deleted

.HELP,R
 The R parameter names the records to delete from a library.
.HELP,T
 The T parameter selects the type of record to delete.
.HELP,L
 The L parameter names the file from which records are deleted.
 The default value is the file containing this procedure.
.ENDHELP
GETFILE,L,L,A=YES.
$GTR,L,YYYDEL2,,,,NA.T/R
$IFE,FILE(YYYDEL2,AS),GOTSOME.
  .IFE,$R$.NE.$*$,RECNAMED.
    $RENAME,R=YYYDEL2.
    UPDVER,DATE+,TIME+,R,L,DELETE.
    $UNLOAD,R.
  .ELSE,RECNAMED.
    $RENAME,T=YYYDEL2.
    UPDVER,DATE+,TIME+,T,L,DELETE.
    $UNLOAD,T.
  .ENDIF,RECNAMED.
  $NOTE(YYYDEL1,NR)+*D T/R
  $PACK(YYYDEL1)
  $REWIND,DISVER.
  $LIBEDIT,P=L,N=L,B=DISVER,#L=YYYYERR,LO=EM,I=YYYDEL1,U=L.
$ELSE,GOTSOME.
  .IFE,FILE(L,.NOT.AS),FILEPRM.
    $UNLOAD,L.
  .ENDIF,FILEPRM.
  .IFE,$R$.NE.$*$,RECNAMED.
    $REVERT,ABORT. T R NOT ON L
  .ELSE,RECNAMED.
    $REVERT,ABORT. NO T RECORDS ON L
  .ENDIF,RECNAMED.
$ENDIF,GOTSOME.
$SKIP,NOERROR.
  $EXIT.
  $REWIND,YYYYERR.
  $COPYEI,YYYYERR,OUTPUT.
  $UNLOAD,YYYDEL2,YYYYERR,ZZZZZG1,ZZZZZG2.
  $UNLOAD,YYYDEL1,YYYSCR2,DISVER.
  .IFE,FILE(L,.NOT.AS),FILEPRM.
    $UNLOAD,L.
  .ENDIF,FILEPRM.
  $IFE,(EF.EQ.TIE).OR.(EF.EQ.TAE),TERMINATED.
    $EXIT. DELLIB *TERMINATED*
  $ENDIF,TERMINATED.
  $REVERT,ABORT. DELETE L T/R FAILED
$ENDIF,NOERROR.
$UNLOAD,YYYDEL2,YYYYERR,ZZZZZG2.
$UNLOAD,YYYDEL1,YYYSCR2,DISVER.
$IFE,.NOT.((FILE(L,PM)).AND.(FILE(L,WR))),REWRITE.
  REPFILE,L,L,DEFINE=YES.
$ENDIF,REWRITE.
.IFE,FILE(L,.NOT.AS),FILEPRM.
  $UNLOAD,L.
.ELSE,FILEPRM.
  $LIBRARY,L/D.
  $LIBRARY,L/A.
.ENDIF,FILEPRM.
.IFE,$R$.NE.$*$,NOTALL.
  $REVERT. DELETED T R --> L
.ELSE,NOTALL.
  $REVERT. DELETED ALL T --> L
.ENDIF,NOTALL.
/EOR
