*DECK DB$CRDL 
USETEXT RVRSCTX 
USETEXT JLDEFTX 
      PROC DB$CRDL; 
      BEGIN 
 #
* *   DB$CRDL - DELETE A CRITERIA TABLE ENTRY    PAGE  1
* *   J E ESLER                                  DATE  06/28/76 
* 
* DC  PURPOSE 
* 
*     DELETE A CRITERIA TABLE ENTRY. GIVE A WARNING MESSAGE IF BEGIN/END
*     TIME OR RECOVERY POINT HAD NOT FIRST BEEN DETECTED. 
* 
* DC  ENTRY CONDITIONS
* 
*     P<CRITERIA> POINTS TO ENTRY TO BE DELETED.
*     ARRAY LOGREC IN DB$RCOM CONTAINS CURRENT LOG RECORD.
* 
* DC  EXIT CONDITIONS 
* 
*     ENTRY HAS BEEN DELETED. 
* 
* DC  CALLING ROUTINES
* 
*     DB$CREV - CRITERIA TABLE EVENT CHECKER. 
*     DB$RSEL - RECOVERY/RESTORE SELECTION ROUTINE. 
* 
* DC  CALLED ROUTINES 
# 
      XREF FUNC DB$CDIS C(10);     #CONVERT BINARY TO DISPLAY CODE# 
      XREF PROC DB$EPRT;           #WRITE A LINE TO OUTPUT FILE#
      XREF PROC DB$LNKD;           #DELETE A LINKED BLOCK#
      XREF PROC DB$MSG;            #ISSUE DAYFILE MESSAGE#
# 
* DC  NON-LOCAL VARIABLES 
* 
*     RECOVERY/RESTORE COMMON 
* 
* DC  DESCRIPTION 
 #
      CONTROL EJECT;
      PROC MISSINGRP((RPNUM));
 #
*     MISSINGRP - PRINT A WARNING MESSAGE THAT A RECOVERY POINT WAS NOT 
*     FOUND.
 #
      BEGIN 
      ITEM LOSTRP C(45) = " ****RECOVERY POINT            NOT FOUND:";
      ITEM RPNUM C(10); 
  
          C<20,10>LOSTRP = RPNUM; 
          DB$EPRT(LOSTRP,42); 
          DB$MSG(LOSTRP); 
          SELECTERRS = TRUE;           #FLAG THE ERROR# 
      END 
  
  
  
  
      PROC MISSINGTIME(DATE,TIME);
 #
*     MISSINGTIME - PRINT WARNING MESSAGE THAT A SPECIFIED TIME WAS 
*     NOT REACHED ON THE LOG FILE.
 #
      BEGIN 
      ITEM DATE C(5);              #JULIAN DATE TO BE PRINTED#
      ITEM TIME C(10);             #TIME TO BE PRINTED# 
      ITEM NOENDTIME C(56) = " ****     TIME YYDDD HH.MM.SS NOT FOUND BE
FORE EOI ****:";
  
          C<15,5>NOENDTIME = DATE;
          C<21,9>NOENDTIME = TIME;
          DB$EPRT(NOENDTIME,55);
          DB$MSG(NOENDTIME);
          SELECTERRS = TRUE;           #FLAG THE ERROR# 
      END 
      CONTROL EJECT;
 #
* 
*     CHECK BEGIN DATE/TIME AGAINST CURRENT LOG RECORD. REPORT AN ERROR 
*     IF CURRENT TIME IS EARLIER. 
 #
        IF CRBDATE[0] GR JLHDDATE[0]
          OR(CRBDATE[0] EQ JLHDDATE[0]
            AND CRBTIME[0] GR JLHDTIME[0])
          THEN
            MISSINGTIME(CRBDATE[0],CRBTIME[0]); 
        IF CREDATE[0] NQ DFBIGDATE
          AND(CREDATE[0] GR JLHDDATE[0] 
            OR(CREDATE[0] EQ JLHDDATE[0] AND CRETIME[0] GR JLHDTIME[0]))
          THEN
            MISSINGTIME(CREDATE[0],CRETIME[0]); 
        IF CRBRPI[0] NQ 0 THEN         #BEGIN RECOVERY POINT NOT FOUND# 
          MISSINGRP(CRBRP[0]);
        IF CRERPI[0] NQ 0 THEN         #END RECOVERY POINT NOT FOUND# 
          MISSINGRP(CRERP[0]);
 #
*     DELINK THE ENTRY. 
 #
        DB$LNKD(P<CRITERIA>); 
      END 
      TERM
