*DECK DB$RCVD 
USETEXT CDCSCTX 
      PROC DB$RCVD(XPKG); 
 #
* *   DB$RCVD - TAKE A CM DUMP                   PAGE  1
* *   R L MCALLESTER                             DATE  05/21/80 
* 
* DC  PURPOSE 
* 
*     ON AN ABNORMAL TERMINATION - TAKE A DUMP BEFORE ANY OTHER 
*     REPRIEVE PROCESSING IS DONE.
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
# 
      ARRAY XPKG;            # EXCHANGE PACKAGE AND RA+1 SAVE AREA     #
        BEGIN 
        ITEM ERRCODE I(00,42,18);  # ERROR CODE OF REPRIEVED PROGRAM   #
        END 
# 
*     ASSUMPTIONS 
* 
*     THIS IS THE LAST ENTRY ON THE RECOVR STACK. 
* 
* DC  EXIT CONDITIONS 
* 
*     NONE
* 
* DC  CALLING ROUTINES
* 
*     RECOVR, RESULTING FROM A RECOVR CALL IN DB$INIT.
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$DUMP;     # WRITE CORE DUMP TO OUTPUT FILE          #
      XREF PROC DB$FLUI;     # FLOW POINT REPORT TEXT INSERTION        #
      XREF PROC DB$MSG;      # WRITE A MESSAGE DAYFILE                 #
      XREF PROC DB$MSGB;     # WRITE A MESSAGE TO THE B DISPLAY        #
      XREF PROC DB$$END;     # CDCSBTF USER ENDRUN PROCESSOR.          #
                             # IGNORED FOR CDCS.                       #
# 
* DC  NON-LOCAL VARIABLES MODIFIED
# 
      XREF ITEM CMMSBI  I;   # CMM SMALL BLOCK BOUNDARY INCREMENT      #
      XREF ITEM CMM$SBL I;   # CMM SMALL BLOCK LIMIT (CMM.SBL IN CMM)  #
      XDEF ITEM FLOWPR B=FALSE;    # FLOW POINTR REPORT SWITCH         #
# 
* DC  DESCRIPTION 
* 
*     IF DB$RCVD IS CALLED ON A NORMAL TERMINATION, 
*       CALL DB$$END FOR CDCSBTF PROCESSING AND RETURN. 
* 
*     CALL DB$DUMP TO DUMP THE EXCHANGE PACKAGE SAVE AREA.
*     CALL DB$DUMP TO TAKE A FULL FL DUMP.
* 
 #
      BEGIN 
      IF ERRCODE[0] EQ 0     # IF THIS IS A NORMAL TERMINATION         #
      THEN
        BEGIN 
        DB$$END;             # USED BY CDCSBTF, IGNORED BY CDCS        #
        RETURN; 
  
        END 
  
      CONTROL IFGR DFFLOP,0;
        DB$FLUI(" CDCS  "); 
        DB$FLUI("ABORTED"); 
      CONTROL ENDIF;
  
      TERMFLAG = TRUE;       # FLAG AN ABNORMAL TERMINATION FOR DB$RCVR#
      DB$MSG("  STARTING CM DUMP:");
      DB$MSGB("$WAIT - CM DUMP IN PROGRESS:");
      DB$DUMP(LOC(XPKG),LOC(XPKG)+16);  # DUMP THE EXCHANGE PACKAGE    #
      DB$DUMP(0,O"377777"); 
                             # NEGATE SMALL BLOCK RESTRICTIONS         #
                             # DURING REPRIEVE PROCESSING              #
      CMMSBI = 0; 
      CMM$SBL = O"377700";
  
      DB$MSG("      CRM REPRIEVE:");
      DB$MSGB("CRM REPRIEVE IN PROGRESS:"); 
  
      END 
      TERM; 
