*DECK FCSFRNS 
USETEXT TEXTFCS;
      FUNC FCSFRNS B; 
*CALL COPYRITE
# TITLE FCSFRNS - PROCESS FTP RENAME SEQUENCE.                         #
  
      BEGIN                            # FCSFRNS                       #
  
# 
**    FCSFRNS - PROCESS FTP RENAME SEQUENCE.
* 
*     C. J. RAMSAY                     87/11/03 
* 
*     THIS PROCEDURE PROCESSES AN FTP RENAME SEQUENCE.
* 
*     FUNC FCSFRNS
* 
*     ENTRY   PARMS[1]   = REMOTE FILE NAME.
*             PARMS[2]   = NEW REMOTE FILE NAME.
* 
*     EXIT    FCSFRNS    = TRUE IF COMMAND SEQUENCE COMPLETED OK. 
*             FCSFRNS    = FALSE IF COMMAND SEQUENCE NOT COMPLETED OK.
*             FTPERROR   = TRUE IF PROTOCOL ERROR DETECTED. 
*             FTPFAIL    = TRUE IF COMMAND FAILURE DETECTED.
* 
*     METHOD  SEND *RNFR* FTP COMMAND TO REMOTE HOST. 
*             WAIT FOR RESPONSE FROM REMOTE HOST. 
*             SEND *RNTO* FTP COMMAND TO REMOTE HOST. 
*             WAIT FOR RESPONSE FROM REMOTE HOST. 
* 
# 
  
# 
****  FUNC FCSFRNS - XREF LIST
# 
      XREF
        BEGIN 
        PROC FCSNODB;                  # OUTPUT DATA BLOCK             #
        PROC FCSNWFR;                  # WAIT FOR FTP REPLY            #
        PROC FCSUCRE;                  # COPY FTP REPLY TO ERROR BUFFER#
        PROC MESSAGE;                  # DISPLAY / DAYFILE A MESSAGE   #
        PROC NETUCAC;                  # COPY AN ASCII CHARACTER       #
        PROC NETUCAS;                  # COPY AN ASCII STRING          #
        END 
# 
****
# 
      ITEM SPACE         U = X"200000000000000";
  
      ARRAY BEGRNS [00:00] S(4);
        BEGIN 
        ITEM  BRN$TEXT   C(00,00,32) =
       [" FTP PROCESSING RENAME SEQUENCE."];
        ITEM  BRN$ZBYTE  U(03,12,48) = [0]; 
        END 
  
      ARRAY ENDRNS [00:00] S(4);
        BEGIN 
        ITEM  ERN$TEXT   C(00,00,30) =
       [" FTP RENAME SEQUENCE COMPLETE."];
        ITEM  ERN$ZBYTE  U(03,00,60) = [0]; 
        END 
      CONTROL EJECT;
# 
*     START MAIN PROCEDURE
# 
      MESSAGE (BEGRNS[0], 1);          # DISPLAY START MESSAGE         #
      FCSFRNS = TRUE;                  # DEFAULT TO SEQUENCE OKAY      #
# 
*     SEND *RNFR* COMMAND TO REMOTE HOST. 
# 
      OUTLEN = AIPIHDR$;               # INITIALIZE OUTPUT LENGTH      #
      NETUCAS (FTPCRNFR, 0, 4,
               OUTBUF, OUTLEN);        # COPY *RNFR* FTP COMMAND       #
      NETUCAC (SPACE, 0,
               OUTBUF, OUTLEN);        # COPY ASCII SPACE              #
      NETUCAS (PARMS[1], 0, PARAMSZ[1], 
               OUTBUF, OUTLEN);        # COPY OLD FILE NAME            #
      FCSNODB (AIPISC, REMOTEID);      # SEND TO REMOTE HOST           #
      FCSNWFR (REMOTEID);              # WAIT FOR RESPONSE             #
# 
*     PROCESS RESPONSE TO *RNFR* COMMAND FROM REMOTE HOST.
# 
      IF (FTPRPYC1 EQ 1) OR 
         (FTPRPYC1 EQ 2)
      THEN
        BEGIN                          # PROTOCOL ERROR DETECTED       #
        FTPERROR = TRUE;               # SET FTP ERROR FLAG            #
        END 
      IF (FTPRPYC1 EQ 4) OR 
         (FTPRPYC1 EQ 5)
      THEN
        BEGIN                          # COMMAND FAILURE DETECTED      #
        FTPFAIL = TRUE;                # SET FTP FAILURE FLAG          #
        END 
# 
*     IF RESPONSE OKAY SEND *RNTO* COMMAND TO REMOTE HOST.
# 
      IF FTPRPYC1 EQ 3
      THEN
        BEGIN 
        OUTLEN = AIPIHDR$;             # INITIALIZE OUTPUT LENGTH      #
        NETUCAS (FTPCRNTO, 0, 4,
                 OUTBUF, OUTLEN);      # COPY *RNTO* FTP COMMAND       #
        NETUCAC (SPACE, 0,
                 OUTBUF, OUTLEN);      # COPY ASCII SPACE              #
        NETUCAS (PARMS[2], 0, PARAMSZ[2], 
                 OUTBUF, OUTLEN);      # COPY NEW FILE NAME            #
        FCSNODB (AIPISC, REMOTEID);    # SEND TO REMOTE HOST           #
        FCSNWFR (REMOTEID);            # WAIT FOR RESPONSE             #
# 
*     PROCESS RESPONSE TO *RNTO* COMMAND FROM REMOTE HOST.
# 
        IF (FTPRPYC1 EQ 1) OR 
           (FTPRPYC1 EQ 3)
        THEN
          BEGIN                        # PROTOCOL ERROR DETECTED       #
          FTPERROR = TRUE;             # SET FTP ERROR FLAG            #
          END 
        IF (FTPRPYC1 EQ 4) OR 
           (FTPRPYC1 EQ 5)
        THEN
          BEGIN                        # COMMAND FAILURE DETECTED      #
          FTPFAIL = TRUE;              # SET FTP FAILURE FLAG          #
          END 
        END 
# 
*     PROCESS ANY ERROR CONDITIONS. 
# 
      MESSAGE (ENDRNS[0], 1);          # DISPLAY COMPLETE MESSAGE      #
  
      IF (FTPERROR OR FTPFAIL)
      THEN
        BEGIN                          # SEQUENCE DID NOT COMPLETE OK  #
        FCSUCRE;                       # COPY FTP REPLY TO ERROR BUFFER#
        FCSFRNS = FALSE;               # RETURN FALSE TO CALLER        #
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FCSFRNS                       #
  
      TERM
