*DECK FFSSPCE 
USETEXT TEXTFFS 
      PROC FFSSPCE; 
*CALL COPYRITE
# TITLE FFSSPCE - PROCESS CON/END/N SUPERVISORY MESSAGE.               #
  
      BEGIN                            # FFSSPCE                       #
# 
**    FFSSPCE  PROCESS CON/END/N SUPERVISORY MESSAGE. 
* 
*     A. LIM                           88/01/18 
* 
*     THIS PROCEDURE PROCESSES A CON/END/N SUPERVISORY MESAGE.
* 
*     PROC FFSSPCE
* 
*     ENTRY    P<APSM> = PTR TO INPUT SUPERVISORY MESSAGE (*INPBUF*). 
*              CURACN  = FILE SERVER CONNECTION NUMBER. 
*              NUMACN  = COUNT OF CURRENT FILE SERVER CONNECTIONS.
* 
*     EXIT     NUMACN  = COUNT OF CURRENT FILE SERVER CONNECTIONS.
*              FILE SERVER CONNECTION ENTRY DELETED.
*              IF NO MORE FILE SERVER CONNECTIONS EXIST AND THE FILE
*              SERVER IS NOT IN THE NORMAL RUNNING STATE THEN FILE
*              SERVER OPERATION IS ENDED. 
* 
*     METHOD   IF THE CONNECTION STATE IS *NULL*, *PCONACRQ*, *PENDING* 
*              OR *ACTIVE*, THEN THE CON/END/N IS TREATED AS A
*              NAM PROTOCOL ERROR.
* 
*              IF THE CONNECTION STATE IS *ENDPEND* THEN THE FILE SERVER
*              CONNECTION ENTRY IS CLEARED. 
*              DECREMENT *NUMACN*.
* 
*              IF THE CONNECTION STATE IS *RETRYPEND*, REISSUE A-A
*              REQUEST, AND CHANGE STATE TO *PCONACRQ*. 
*              DECREMENT *NUMACN*.
* 
# 
  
# 
****  PROC FFSSPCE - XREF LIST
# 
      XREF
        BEGIN 
        PROC FFSEEFS;    # END FILE SERVER                             #
        PROC FFSSIAA;    # INITIATE A-A CONNECTION                     #
        PROC FFSURAE;    # RESET ACN ENTRY                             #
        FUNC FFSUFCE B;  # UTILITY TO FIND FILE SERVER CONNECTION ENTRY#
        END 
# 
****
# 
      CONTROL EJECT;
  
#     START MAIN PROCEDURE                                             #
  
#     CONNECTION STATE IS *NULL* - TREAT AS A NAM PROTOCOL ERROR.      #
  
      IF NOT FFSUFCE
      THEN
        BEGIN 
        FFSEEFS (NCONENDN);            # END WITH NAM PROTOCOL ERROR   #
        END 
# 
*     CON/END ON INBOUND CONNECTION, AND
*     CONNECTION STATE IS *ENDPEND*,
*     END WITH NAM PROTOCOL ERROR.
# 
  
      IF     (ACN$STATE[ACNX] EQ ENDPEND) 
         AND (ACNX EQ S"CTCS")
      THEN
        BEGIN 
        FFSEEFS (NCONENDN);            # END WITH NAM PROTOCOL ERROR   #
        END 
  
      IF ACN$STATE[ACNX] EQ ENDPEND 
      THEN
        BEGIN 
        FFSURAE;                       # RESET ACN ENTRY               #
        NUMACN = NUMACN - 1;           # DECREMENT NO OF CONNECTD C/N  #
        IND$ICODE[INAMTCP$] = INAM"INCONBKN";   # C/N BROKEN INDICATION#
        RETURN; 
        END 
  
# 
*     CONNECTION STATE IS *RETRYPEND*.
# 
      IF ACN$STATE[ACNX] EQ RETRYPEND 
      THEN
        BEGIN 
        NUMACN = NUMACN - 1;           # DECREMENT NO OF CONNECTED C/N #
        FFSURAE;                       # RESET ACN ENTRY               #
        IF ACNX NQ S"CTCS"
        THEN
          BEGIN                        # CON/END ON OUTBOUND CONNECTION#
          FFSSIAA;                     # INITIATE A-A CONNECTION       #
          END 
        END 
# 
*     FOR ALL OTHER STATES, DECLARE NAM PROTOCOL ERROR. 
# 
      ELSE
        BEGIN 
        FFSEEFS (NCONENDN);            # END FTPS WITH NAM PROTOCOL ERR#
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FFSSPCE                       #
  
      TERM
