*DECK FFSSPCA 
USETEXT TEXTFFS 
      PROC FFSSPCA; 
*CALL COPYRITE
# TITLE FFSSPCA - PROCESS CON/ACRQ/A SUPERVISORY MESSAGE               #
  
      BEGIN                            # FFSSPCA                       #
# 
**    FFSSPCA  PROCESS CON/ACRQ/A SUPERVISORY MESSAGE 
* 
*     A. LIM                           88/01/18 
* 
*     THIS PROCEDURE PROCESSES A CON/ACRQ/A SUPERVISORY MESSAGE.
* 
*     PROC FFSSPCA
* 
*     ENTRY    P<ABH>  = PTR TO INPUT APPLICATION BLOCK HEADER (*IABH*).
*              ABHABN  = C/N TYPE WHICH IS USED AS INDEX INTO ACN 
*              P<APSM> = PTR TO INPUT SUPERVISORY MESSAGE (*INPBUF*). 
*              CURACN  = FILE SERVER CONNECTION NUMBER. 
* 
*     EXIT     P<APSM> = PTR TO OUTPUT SUPERVISORY MESSAGE (*OUTBUF*).
* 
*     METHOD   IF CONNECTION STATE IS *NULL*, *PENDING*, *ACTIVE*,
*              *ENDPEND* OR *RETRYPEND*, THEN TREAT IT AS A NAM 
*              PROTOCOL ERROR.
* 
*              ACN ENTRY CLEARED
*              REISSUE CON/ACRQ/R 
* 
*     NOTE:    FOR A DETAIL DESCRIPTION, REFER TO NAM STATE TABLE.
# 
  
# 
****  PROC FFSSPCA - XREF LIST
# 
  
      DEF RCMSGSIZ       #05#;
  
      XREF
        BEGIN 
        PROC FFSEEFS;    # END ALL FILE SERVER CONNECTIONS             #
        PROC FFSSIAA;    # INITIATE A-A CONNECTION                     #
        PROC FFSURAE;    # RESET ACN ENTRY                             #
        PROC MESSAGE; 
        PROC NETWAIT;    # SUSPEND NETWORK APPLICATION                 #
        FUNC XCDD  C(10); 
        END 
  
      ARRAY RCMSG[0:0] S(RCMSGSIZ);    # MSG FOR CONACRQ/A REASON CODE #
        BEGIN 
        ITEM RCMSG$ID   C(00,06,04);             # EITHER FTPI OR FTPS #
        ITEM RCMSG$TXT1 C(00,00,22)=[" FTPX-CON/ACRQ/A, RC ="]; 
        ITEM RCMSG$RC   C(02,12,04);
        ITEM RCMSG$TXT2 C(02,36,11) = [". RETRYING."];
        ITEM RCMSG$END  U(04,42,18) = [0];
        END 
  
  
      ITEM TEMCHAR     C(10); 
# 
****
# 
      CONTROL EJECT;
# 
**    START MAIN PROCEDURE
# 
  
# 
*     TREAT THE RESPONSE AS A NAM PROTOCOL ERROR IF THE CONNECTION
*     TYPE IS NOT SAP, CONTROL OR DATA. 
# 
  
      IF    (CONAABN[0] LS CTYPE"CTSAP")
         OR (CONAABN[0] GR CTYPE"CTDATA") 
      THEN
        BEGIN 
        FFSEEFS (NCONACRQA);
        END;
  
# 
*     DAYFILE THIS EVENT IF REASON CODE DIFFERS FROM LAST TIME. 
# 
      IF RC NQ LAST$ACRQ$RC 
      THEN
        BEGIN 
        TEMCHAR = XCDD(RC);            # CONVERT RC TO DISPLAY CODE    #
        RCMSG$RC = C<06,04>TEMCHAR; 
        RCMSG$ID = PRGM$NAME;          # MESSAGE PREFIX  FTPI-/FTPS-   #
        MESSAGE (RCMSG, 0);            # DAYFILE IT.                   #
        LAST$ACRQ$RC = RC;             # SAVE REASON CODE              #
        END 
  
  
      ACNX = CONAABN[0];               # GET INDEX INTO ACN            #
  
      IF ACN$STATE[ACNX] LAN PCONACRQ NQ 0
      THEN
        BEGIN                          # STATE IS WAITING FOR RESPONSE #
        NETWAIT (30, 0);               # DELAY BEFORE RETRY            #
        FFSURAE;                       # RESET ACN ENTRY               #
        FFSSIAA;                       # REISSUE A-A CONNECTION        #
        END 
      ELSE                             # TREAT AS NAM PROTOCOL ERROR   #
        BEGIN 
        FFSEEFS (NCONACRQA);
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # FFSSPCA                       #
  
      TERM
