*DECK FCSBRAF 
USETEXT TEXTFCS;
      PROC FCSBRAF (XFERCMD); 
*CALL COPYRITE
# TITLE FCSBRAF - PROCESS REPLACE_FILE AND APPEND_FILE COMMANDS.       #
  
      BEGIN                            # FCSBRAF                       #
  
# 
**    FCSBRAF - PROCESS REPLACE_FILE AND APPEND_FILE COMMANDS.
* 
*     C. J. RAMSAY                     87/11/03 
* 
*     THIS PROCEDURE PROCESSES THE REPLACE_FILE AND APPEND_FILE 
*     COMMANDS. 
* 
*     PROC FCSBRAF (XFERCMD)
* 
*     ENTRY   XFERCMD    = *STOR* FOR REPLACE_FILE. 
*                        = *APPE* FOR APPEND_FILE.
*             PARMS[1]   = LOCAL FILE NAME. 
*             PARMS[2]   = REMOTE FILE NAME.
*             PARMS[3]   = STATUS VARIABLE (IGNORED). 
* 
*     EXIT    FTPERROR   = TRUE IF PROTOCOL ERROR DETECTED. 
*             FTPFAIL    = TRUE IF COMMAND FAILURE DETECTED.
*             FTPUSERE   = TRUE IF USER ERROR DETECTED. 
* 
*     METHOD  CHECK FOR REMOTE HOST CONNECTION. 
*             VALIDATE LOCAL FILE CHARACTERISTICS.
*             IF REMOTE FILE NAME NOT SPECIFIED THEN
*               USE LOCAL FILE NAME AS REMOTE FILE NAME.
*             INITIALIZE MBT ENTRY FOR LOCAL FILE.
*             CHECK THAT LOCAL FILE EXISTS. 
*             PROCESS THE FTP FILE TRANSFER SEQUENCE
*               SENDING *RETR* FTP COMMAND TO LOCAL HOST. 
*               SENDING *STOR* OR *APPE* FTP COMMAND TO REMOTE HOST.
* 
# 
  
# 
****  PROC FCSBRAF - XREF LIST
# 
      XREF
        BEGIN 
        FUNC FCSFFTS B;                # FTP FILE TRANSFER SEQUENCE    #
        PROC FCSOWOF;                  # WRITE TO OUTPUT FILE          #
        FUNC FCSUCRC B;                # CHECK FOR REMOTE CONNECTION   #
        FUNC FCSUIMB B;                # INITIALIZE MBT ENTRY          #
        FUNC FCSUVFC B;                # VALIDATE FILE CHARACTERISTICS #
        PROC FSTATUS;                  # CHECK IF LOCAL FILE EXISTS    #
        PROC MOVE;                     # MOVE A NUMBER OF WORDS        #
        END 
# 
****
# 
      ITEM XFERCMD       U;            # REMOTE FILE TRANSFER FTP CMD  #
  
      ARRAY NLFMSG [00:00] S(5);
        BEGIN 
        ITEM  NLF$TEXT   C(00,00,47) =
       ["--ERROR--  LOCAL FILE SPECIFIED DOES NOT EXIST."]; 
        ITEM  NLF$ZBYTE  U(04,42,18) = [0]; 
        END 
      CONTROL EJECT;
# 
*     START MAIN PROCEDURE
# 
      IF NOT FCSUCRC
      THEN
        BEGIN                          # NO REMOTE CONNECTION EXISTS   #
        RETURN;                        # GET OUT OF HERE QUICKLY       #
        END 
# 
*     VALIDATE LOCAL FILE CHARACTERISTICS.
# 
      IF NOT FCSUVFC (PARAMNZ[1], TRUE, TRUE, FALSE)
      THEN
        BEGIN                          # INVALID FILE CHARACTERISTICS  #
        RETURN;                        # GET OUT OF HERE QUICKLY       #
        END 
# 
*     IF REMOTE_FILE NOT SPECIFIED THEN USE THE SAME FILE NAME AS 
*     LOCAL_FILE. 
# 
      IF PARAMSZ[2] EQ 0
      THEN
        BEGIN                          # REMOTE_FILE NOT SPECIFIED     #
        MOVE (PARSIZ$, PARMS[1],
              PARMS[2]);               # USE LOCAL_FILE AS REMOTE_FILE #
        END 
# 
*     INITIALIZE MBT ENTRY AND CHECK THAT LOCAL FILE EXISTS.
# 
      IF FCSUIMB (FTXFER, PARAMNZ[1]) 
      THEN
        BEGIN                          # MBT ENTRY INITIALIZED         #
        FSTATUS (MBT[MBXX]);           # CHECK IF FILE EXISTS          #
        IF MBT$FSTAT[MBXX] EQ 0 
        THEN
          BEGIN                        # LOCAL FILE DOES NOT EXIST     #
          FCSOWOF (NLFMSG[0], 
                   INTERNAL$);         # WRITE ERROR MESSAGE           #
          FTPUSERE = TRUE;             # SET USER ERROR FLAG           #
          END 
        ELSE
# 
*     INITIATE AND PROCESS THE FILE TRANSFER. 
# 
          BEGIN 
          IF FCSFFTS (FTPCRETR, PARMS[1], 
                      XFERCMD, PARMS[2])
          THEN
            BEGIN                      # FILE TRANSFER SEQUENCE OKAY   #
            END 
          END 
        MBT$LFN[MBXX] = XFERLFN[0];    # RESTORE TRANSFER FILE NAME    #
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FCSBRAF                       #
  
      TERM
