*DECK,DB$RPV
          IDENT  DB$RPV 
          ENTRY  DB$RPV 
*#
* *   DB$RPV                                     PAGE 1 
* *   C O GIMBER                                 2-4-75 
* 
* DC  PURPOSE 
* 
*     DB$RPV CALLS THE RECOVER PP PROGRAM SO THAT THE PROGRAM WILL BE 
*     REPRIEVED IF AN ABORT OCCURS. 
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETER IS THE PROCEDURE TO BE CALLED IN CASE OF AN ABORT.
* 
* DC  DESCRIPTION 
* 
*#
          EJECT 
DB$RPV    BSSZ   1
*#
*     FORM RJ INSTRUCTION TO REPRIEVE PROC PASSED AS PARAMETER
*       AND STORE IT IN REPRIEVE CODE TO BE EXECUTED. 
*#
          LX1    30D               (X1)=PROC ADDR IN UPPER 30 BITS
          MX2    1
          LX2    -5 
          BX6    X1+X2             (X6)=RJ PROC ADDRR INSTRUCTION 
          SA6    RPVCALL
*#
*     CALL PP PROGRAM RPV TO RETURN TO RCVENTER IF A REPRIEVE OCCURS. 
*       FLAGS ARE SET SO THAT A REPRIEVE OCCURS FOR ALL BUT A NORMAL
*       TERMINATION.
*#
          SA1    RCVCALL
          BX6    X1 
          RJ   =XSYS=              MAKE RPV CALL
          EQ   DB$RPV 
*#
*     RCVCALL IS THE FORMED RA+1 CALL TO RPV
*     RCVRAY IS THE 21B WORD ARRAY WHICH IS USED BY PP PRGM RPV.
*     RCVCALL WHICH IS RCVCALL+21B IS THE ADDRESS WHICH IS JUMPED TO
*       WHEN A REPRIEVE OCCURS.  THE REPRIEVE PROC PASSED AS A
*       PARAMETER TO DB$RPV IS CALLED.
*#
RCVCALL   VFD    24D/4LRPVP,12D/77B,24D/RPVRAY
RPVRAY    BSSZ   21B
RPVCALL   RJ   0
*#
*     RPV IS CALLED AGAIN TO RESTORE THE ORIGINAL ERROR CONDITION 
*       AND THE RUN IS ENDED. 
*#
          SA1    RPVEND 
          BX6    X1 
          RJ   =XSYS= 
          ENDRUN
  
RPVEND    VFD    24/3LRPV,1/1,35/0
  
          END 
