*DECK FCSUCRE 
USETEXT TEXTFCS;
      PROC FCSUCRE; 
*CALL COPYRITE
# TITLE FCSUCRE - UTILITY TO COPY FTP REPLY TO ERROR REPLY BUFFER.     #
  
      BEGIN                            # FCSUCRE                       #
  
# 
**    FCSUCRE - UTILITY TO COPY FTP REPLY TO ERROR REPLY BUFFER.
* 
*     C. J. RAMSAY                     87/11/03 
* 
*     THIS PROCEDURE COPIES THE CURRENT FTP REPLY TO THE ERROR REPLY
*     BUFFER. 
* 
*     PROC FCSUCRE
* 
*     ENTRY   FTPID      = CONNECTION IDENTIFIER. 
*             P<LRB>     = PTR TO BUFFER CONTAINING LOCAL REPLY.
*             P<RRB>     = PTR TO BUFFER CONTAINING REMOTE REPLY. 
*             RPYLEN     = NUMBER OF OCTETS IN REPLY. 
*             P<ERB>     = POINTER TO BUFFER CONTAINING ERROR REPLIES.
*             ERBLEN     = NUMBER OF OCTETS IN ERROR REPLIES. 
* 
*     EXIT    ERBLEN     = NUMBER OF OCTETS IN ERROR REPLIES. 
* 
*     METHOD  ENSURE ERROR REPLY BUFFER IS LARGE ENOUGH.
*             COPY FTP REPLY TO ERROR REPLY BUFFER. 
* 
# 
  
# 
****  PROC FCSUCRE - XREF LIST
# 
      XREF
        BEGIN 
        PROC FCSMATS;                  # ALLOCATE TABLE SPACE          #
        PROC NETUCAS;                  # COPY ASCII STRING             #
        END 
# 
****
# 
      ITEM TOTLEN        I;            # TOTAL LENGTH OF ERROR REPLIES #
      CONTROL EJECT;
# 
*     START MAIN PROCEDURE
# 
      FOR TOTLEN = ERBLEN + RPYLEN
        WHILE ((TOTLEN*10)+70)/75 GR ERBL DO
        BEGIN                          # DATA WILL OVERFLOW BUFFER     #
        FCSMATS (P<ERB>, ERBL,
                 RPYSIZ$);             # ALLOCATE MORE SPACE           #
        END 
# 
*     COPY FROM LOCAL OR REMOTE REPLY QUEUE TO ERROR QUEUE. 
# 
      IF FTPID EQ LOCALID 
      THEN
        BEGIN                          # REPLY FROM LOCAL HOST         #
        NETUCAS (LRB[0], 0, RPYLEN, 
                 ERB[0], ERBLEN);      # COPY TO ERROR REPLY BUFFER    #
        END 
      ELSE
        BEGIN                          # REPLY FROM REMOTE HOST        #
        NETUCAS (RRB[0], 0, RPYLEN, 
                 ERB[0], ERBLEN);      # COPY TO ERROR REPLY BUFFER    #
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FCSUCRE                       #
  
      TERM
