*DECK FFSUSRM 
USETEXT TEXTFFS 
PROC FFSUSRM(RSPCN, MSGNO, PFM);
                                                                       #
*     CDCNET - COPYRIGHT CONTROL DATA SYSTEMS INC. 1994.
                                                                       #
# TITLE FFSUSRM - SEND RESPONSE MESSAGE.                               #
  
      BEGIN                            # FFSUSRM                       #
  
# 
**    FFSUSRM - SEND RESPONSE MESSAGE.
* 
*     AML                              04/20/88 
* 
*     THIS PROCEDURE IS CALLED BY THE FTP LAYER TO SEND 
*     A RESPONSE MESSAGE VIA A SEND DATA REQUEST CALL TO
*     *FFSLCRP*.
* 
*     PROC FFSUSRM(RSPCN, MSGNO, PFM) 
* 
*     ENTRY     RSPCN = CONNECTION FOR RESPONSES. 
*               MSGNO = MESSAGE NUMBER. 
*               PFM   = PFM$ => PFM TEXT TO BE SENT ALONG 
*                               WITH THE MESSAGE. 
*                       NOPFM$ => NO PFM TEXT TO BE SENT
*                               ALONG WITH THE MESSAGE. 
* 
*     EXIT      *FFSLCRP* CALLED TO SEND THE MESSAGE. 
* 
*     METHOD    IF MULTIPLE RESPONSE TO BE SENT:  
*                 SET UP THE MULTIPLE RESPONSE. 
*               SEND THE RESPONSE.
*               IF MULTIPLE RESPONSE TO BE SENT:  
*                 SEND THE LAST RESPONSE. 
# 
  
      ITEM RSPCN       U;              # RESPONSE CONNECTION           #
      ITEM MSGNO       U;              # MESSAGE NUMBER                #
      ITEM PFM         B;              # INDICATOR FOR PFM TEXT        #
# 
***   PROC FFSUSRM - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC FFSLCRP;                  # CN MGMENT REQUEST PROCESSOR   #
        PROC FFSUCDA;                  # CONVERT DISPLAY MSG TO ASCII88#
        FUNC FFSULLN I;                # LINE LENGTH                   #
        END 
  
# 
*** 
# 
  
      ITEM LENCHAR           U;        # BYTES IN CONVERTED MESSAGE    #
      ITEM MORE              B;        # INDICATOR FOR MORE MESSAGE    #
  
      CONTROL EJECT;
# 
*     START MAIN PROCEDURE. 
# 
  
      MORE = FALSE;                    # PRESET TO SINGLE RESPONSE     #
  
      IF     (PFM)
         AND (PFM$T[0] NQ 0)
      THEN
        BEGIN                          # PFM TEXT TO BE SENT           #
        MORE = TRUE;                   # MULTIPLE RESPONSE MESSAGE     #
        MORE$ERNM[0] = FTP$MNO[MSGNO]; # SET MSG NO FOR LAST RESPONSE  #
        MORE$TEXT    = C<0,FFSULLN(PFM$MSG,PFMMSG$)>PFM$TEXT; 
        MORE$END     = 0;              # ZERO BYTE TERMINATOR          #
  
        FTP$HYPHEN[MSGNO] = "-" ;      # SET - FOR MULTIPLE RESPONSE   #
        END 
  
      P<TBUFF> = LOC(FTPRMSG[MSGNO]);  # ADDRESS OF MESSAGE TEXT       #
      FFSUCDA(TBUFF, FMSGSIZ$,         # CONVERT MSG FROM DC TO ASCII  #
              SENDBUF, LENCHAR);
  
      REQ$RCODE[RFTPCM$]  = RCM"RCSENDAT";
      REQ$CTYPE[RFTPCM$]  = RSPCN;
      REQ$ADDR[RFTPCM$]   = LOC(SENDBUF); 
      REQ$LEN[RFTPCM$]    = LENCHAR;
      FFSLCRP;                         # SEND THE RESPONSE MESSAGE     #
  
      IF MORE 
      THEN
        BEGIN 
        P<TBUFF> = LOC(MORE$MSG[0]);
        FFSUCDA(TBUFF, MMSG$,          # CONVERT TEXT FROM DC TO ASCII #
                SENDBUF, LENCHAR);
        REQ$ADDR[RFTPCM$]   = LOC(SENDBUF); 
        REQ$LEN[RFTPCM$]    = LENCHAR;
        FFSLCRP;                       # SEND THE TEXT                 #
        END 
  
      FTP$HYPHEN[MSGNO] = " ";         # RESET THE HYPHEN              #
  
      RETURN; 
  
      END                              # FFSUSRM                       #
  
      TERM
