*DECK FCSCCIF 
USETEXT TEXTFCS;
      PROC FCSCCIF; 
*CALL COPYRITE
# TITLE FCSCCIF - PROCESS CHANGE_INPUT_FILE COMMAND.                   #
  
      BEGIN                            # FCSCCIF                       #
  
# 
**    FCSCCIF - PROCESS CHANGE_INPUT_FILE COMMAND.
* 
*     C. J. RAMSAY                     87/11/03 
* 
*     THIS PROCEDURE PROCESSES THE CHANGE_INPUT_FILE COMMAND. 
* 
*     PROC FCSCCIF
* 
*     ENTRY   PARMS[1]   = NEW INPUT FILE NAME. 
*             PARMS[2]   = STATUS VARIABLE (IGNORED). 
*             FTPINPUT   = FTP INPUT FILE NAME. 
*             MBIX       = INDEX OF MBT ENTRY FOR INPUT FILE. 
* 
*     EXIT    FTPERROR   = TRUE IF PROTOCOL ERROR DETECTED. 
*             FTPFAIL    = TRUE IF COMMAND FAILURE DETECTED.
*             FTPUSERE   = TRUE IF USER ERROR DETECTED. 
*             FTPINPUT   = FTP INPUT FILE NAME. 
*             MBIX       = INDEX OF MBT ENTRY FOR INPUT FILE. 
* 
*     METHOD  VALIDATE LOCAL FILE NAME AND CHARACTERISTICS. 
*             INITIALIZE THE INPUT FILE FET.
*             UPDATE THE INPUT FILE NAME. 
*             DETERMINE DEVICE TYPE INPUT FILE IS ASSIGNED TO.
* 
# 
  
# 
****  PROC FCSCCIF - XREF LIST
# 
      XREF
        BEGIN 
        PROC FCSOWOF;                  # WRITE TO OUTPUT FILE          #
        FUNC FCSUIMB B;                # INITIALIZE AN MBT ENTRY       #
        FUNC FCSUVFC B;                # VALIDATE FILE CHARACTERISTICS #
        PROC FPSTAT;                   # GET FILE POSITION AND STATUS  #
        END 
# 
****
# 
      ARRAY EINPMSG [00:00] S(6); 
        BEGIN 
        ITEM EINP$TEXT   C(00,00,54) =
       ["--ERROR--  INPUT FILE DOES NOT SUPPORT ANY PARAMETERS."];
        ITEM EINP$ZBYTE2 U(05,24,36) = [0]; 
        END 
      CONTROL EJECT;
# 
*     START MAIN PROCEDURE
# 
      IF PARAMLZ[1] NQ PARAMSZ[1] 
      THEN
        BEGIN                          # LOCAL FILE NAME + PARAMETERS  #
        FCSOWOF (EINPMSG, INTERNAL$);  # WRITE ERROR MESSAGE           #
        FTPUSERE = TRUE;               # SET USER ERROR FLAG           #
        RETURN;                        # GET OUT OF HERE QICKLY        #
        END 
# 
*     CHECK IF CHANGING TO SAME FILE NAME.
# 
      IF PARAMNB[1] EQ FTPINPUT 
      THEN
        BEGIN                          # CHANGING TO SAME FILE NAME    #
        RETURN;                        # GET OUT OF HERE QICKLY        #
        END 
# 
*     VALIDATE FILE CHARACTERISTICS.
# 
      IF PARAMNB[1] NQ "0"
      THEN
        BEGIN                          # INPUT FILE DESIRED            #
        IF NOT FCSUVFC (PARAMNZ[1], FALSE, TRUE, FALSE) 
        THEN
          BEGIN                        # INVALID FILE CHARACTERISTICS  #
          RETURN;                      # GET OUT OF HERE QUICKLY       #
          END 
        END 
# 
*     INITIALIZE MBT ENTRY FOR INPUT FILE.
# 
      IF FCSUIMB (FTINPUT, PARAMNZ[1])
      THEN
        BEGIN                          # MBT ENTRY INITIALIZED         #
        MBIX     = MBTX;               # INPUT FILE MBT ENTRY INDEX    #
        FTPINPUT = PARAMNB[1];         # SAVE INPUT FILE NAME          #
        IF FTPINPUT EQ "0"
        THEN
          BEGIN                        # NO INPUT FILE DESIRED         #
          MBT$LFNU[MBIX] = 0;          # CLEAR LOCAL FILE NAME         #
          RETURN;                      # GET OUT OF HERE QUICKLY       #
          END 
# 
*     DETERMINE DEVICE TYPE INPUT FILE IS ASSIGNED TO.
# 
        FPSTAT (MBT[MBIX]);            # DETERMINE DEVICE TYPE         #
        MBT$STAT[MBIX] = 1;            # CLEAR STATUS + SET COMPLETION #
        IF (FTPINTER) AND 
           (FTPINPUT EQ "INPUT" OR FTPINPUT EQ "OUTPUT") AND
           (MBT$DT[MBIX] EQ 0)
        THEN
          BEGIN                        # *INPUT* / *OUTPUT* NOT THERE  #
          MBT$DT[MBIX] = "TT";         # ASSIGN IT TO THE TERMINAL     #
          END 
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FCSCCIF                       #
  
      TERM
