*DECK DB$FTDX 
USETEXT CDCSCTX 
      PROC DB$FTDX; 
      BEGIN 
 #
* *   DB$FTDX                                    PAGE  1
* *   CRM END-OF-DATA HANDLER 
* *   W P CEAGLIO                                DATE  5/20/76
* 
* DC  PURPOSE 
* 
*     PERFORM END-OF-DATA PROCESSING IN CONNECTION WITH CRM CALLS 
* 
* 
* DC  ENTRY CONDITIONS
* 
*     DB$FTDX IS ENTERED FROM CRM VIA THE "DX" ADDRESS IN THE FIT.
* 
* DC  EXIT CONDITIONS 
* 
*     REQUEST IS TERMINATED WITH AN "END OF DATA" INDICATION. 
* 
* DC  CALLING ROUTINES
* 
*     CRM (VIA "DX" FIELD IN THE FIT
* 
* DC  CALLED ROUTINES 
* 
*     DB$FLOP    GENERATE FLOW POINT
*     DB$SFWR    SFCALL INTERFACE (WRITE TO UCP)
*     DB$WRP     REQUEST WRAP-UP
* 
* DC  NON-LOCAL VARIABLES 
* 
*     CDCS COMMON 
* 
*           TQT         POINTER TO CURRENT ENTRY
*           RCB         POINTER SET 
*           RSARBLK     POINTER TO CURRENT AREA CONTROL BLOCK SET 
* 
* DC  DESCRIPTION 
* 
      THE ERROR STATUS FIELD IN THE REQUEST PACKET HEADER IS SET TO 
      REFLECT THE END-OF-DATA CONDITION.  THEN DB$SFWR IS CALLED TO 
      WRITE THE STATUS TO THE RUN-UNIT FIELD LENGTH SO THAT THE OBJECT- 
      TIME ROUTINE DB$RQST CAN DETECT THIS STATUS  WHEN CONTROL IS
      RETURNED TO THE RUN-UNIT. 
* 
 #
  
# EXTERNAL REFERENCES                                                  #
  
      XREF PROC DB$CALL;                # MAKE CALL TO SPECIFIED ADDR  #
      XREF PROC DB$FLOP;                # GENERATE FLOW POINT          #
      XREF PROC DB$SFCL;                # ISSUE SFCALL                 #
      XREF PROC DB$WRP;                 # REQUEST WRAP-UP              #
  
  
  
  
# S T A R T   O F   D B $ F T D X   E X E C U T A B L E   C O D E      #
  
  
# GENERATE A FLOW POINT                                                #
  
      CONTROL IFGR DFFLOP,0;
        DB$FLOP ("FTDX"); 
      CONTROL ENDIF;
  
      IF LOC(FPT) GR 0
        AND FPFTDX[0] NQ DFFTDX1   # IF NOT INTENDED FOR DB$FTDX       #
      THEN
        BEGIN 
        IF FPFTDX[0] EQ DFFTDX2    # IF IT IS A DB$MFP END PROCESSOR   #
        THEN
          BEGIN 
          DB$CALL(FTDX2); 
          END 
        RETURN; 
  
        END 
  
      FPFITFP[0] = UFFITFP[0];
  
# SET END-OF-DATA FLAG IN REQUEST STATUS WORD                          #
  
      RCIRRC[0] = DFERREOD; 
      DB$SFCL(DFSFWRIT,2,RCIRUCPA[0],LOC(RCIRES[0])); 
  
# WRAP-UP REQUEST (RETURN TO RUN-UNIT)                                 #
  
      DB$WRP; 
  
      END 
      TERM
