*DECK FCSCCTT 
USETEXT TEXTFCS;
      PROC FCSCCTT; 
*CALL COPYRITE
# TITLE FCSCCTT - PROCESS CHANGE_TRANSFER_TYPE COMMAND.                #
  
      BEGIN                            # FCSCCTT                       #
  
# 
**    FCSCCTT - PROCESS CHANGE_TRANSFER_TYPE COMMAND. 
* 
*     C. J. RAMSAY                     87/11/03 
* 
*     THIS PROCEDURE PROCESSES THE CHANGE_TRANSFER_TYPE COMMAND.
* 
*     PROC FCSCCTT
* 
*     ENTRY   PARMS[1]   = NEW TRANSFER TYPE. 
*             PARMS[2]   = STATUS VARIABLE (IGNORED). 
* 
*     EXIT    FTPERROR   = TRUE IF PROTOCOL ERROR DETECTED. 
*             FTPFAIL    = TRUE IF COMMAND FAILURE DETECTED.
*             FTPUSERE   = TRUE IF USER ERROR DETECTED. 
*             FTPTYPE    = FTP TRANSFER TYPE. 
* 
*     METHOD  CHECK FOR REMOTE HOST CONNECTION. 
*             VALIDATE TRANSFER TYPE SPECIFIED. 
*             SEND *TYPE* COMMAND TO REMOTE HOST. 
*             WAIT FOR REPLY FROM REMOTE HOST.
*             SEND *TYPE* COMMAND TO LOCAL HOST.
*             WAIT FOR REPLY FOM LOCAL HOST.
*             UPDATE FTP TRANSFER TYPE. 
* 
# 
  
# 
****  PROC FCSCCTT - XREF LIST
# 
      XREF
        BEGIN 
        FUNC FCSFSCS B;                # FTP SINGLE COMMAND SEQUENCE   #
        PROC FCSOWOF;                  # WRTIE TO OUTPUT FILE          #
        FUNC FCSUCRC B;                # CHECK FOR REMOTE CONNECTION   #
        END 
# 
****
# 
      ITEM NEWTYPE       C(10);        # NEW TRANSFER TYPE             #
  
      ARRAY BADTYPE [00:00] S(6); 
        BEGIN 
        ITEM BADT$TEXT   C(00,00,52) =
       ["--ERROR--  TRANSFER TYPE SPECIFIED IS NOT SUPPORTED."];
        ITEM BADT$ZBYTE2 U(05,12,48) = [0]; 
        END 
      CONTROL EJECT;
# 
*     START MAIN PROCEDURE
# 
      IF NOT FCSUCRC
      THEN
        BEGIN                          # NO REMOTE CONNECTION          #
        RETURN;                        # GET OUT OF HERE QUICKLY       #
        END 
# 
*     VALIDATE THE TRANSFER TYPE SPECIFIED. 
# 
      IF (PARAMNB[1] EQ OPTASCII$) OR 
         (PARAMNB[1] EQ OPTA$)
      THEN
        BEGIN                          # *ASCII* OR *A*                #
        NEWTYPE    = OPTASCII$;        # TRANSFER TYPE IS ASCII        #
        PARAM[1]   = PARA$; 
        PARAMSZ[1] = 1;                # SEND ONLY *A*                 #
        END 
      ELSE IF (PARAMNB[1] EQ OPTIMAGE$) OR
              (PARAMNB[1] EQ OPTI$) OR
              (PARAMNB[1] EQ OPTBINARY$) OR 
              (PARAMNB[1] EQ OPTB$) 
      THEN
        BEGIN                          # *IMAGE* *I* *BINARY* OR *B*   #
        NEWTYPE    = OPTIMAGE$;        # TRANSFER TYPE IS IMAGE        #
        PARAM[1]   = PARI$; 
        PARAMSZ[1] = 1;                # SEND ONLY *I*                 #
        END 
      ELSE
        BEGIN                          # BAD TRANSFER TYPE SPECIFIED   #
        FCSOWOF (BADTYPE[0],
                 INTERNAL$);           # WRITE MESSAGE TO OUTPUT FILE  #
        FTPUSERE = TRUE;               # USER ERROR ENCOUNTERED        #
        RETURN;                        # GET OUT OF HERE QUICKLY       #
        END 
# 
*     SEND *TYPE* COMMAND TO REMOTE AND LOCAL HOSTS, AND IF SUCCESSFUL
*     UPDATE THE FTP TRANSFER TYPE. 
# 
      IF FCSFSCS (FTPCTYPE, PARMS[1], REMOTEID) 
      THEN
        BEGIN                          # REMOTE SEQUENCE COMPLETED OK  #
        IF FCSFSCS (FTPCTYPE, PARMS[1], LOCALID)
        THEN
          BEGIN                        # LOCAL SEQUENCE COMPLETED OK   #
          FTPTYPE = NEWTYPE;           # UPDATE TRANSFER TYPE          #
          END 
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FCSCCTT                       #
  
      TERM
