*DECK CHKFTT
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBF 
USETEXT COMACBX 
USETEXT COMADFM 
PROC CHKFTT(ACN); 
# TITLE CHKFTT - CHECK FILE TRANSFER TABLE.  #
  
      BEGIN  # CHKFTT # 
  
# 
**    CHKFTT - CHECK FILE TRANSFER TABLE. 
* 
*     CHKFTT CHECKS THE FILE TRANSFER TABLE AND SETS FTTINDEX TO
*     THE LOWEST AVAILABLE ENTRY. 
* 
*     PROC CHKFTT(ACN)
* 
*     ENTRY      ACN - APPLICATION CONNECTION NUMBER. 
* 
*     EXIT       FTTINDEX  = FILE TRANSFER TABLE INDEX (.GE. 0).
*                <FTTENT>  = FWA FTT ENTRY. 
*                FTTACN    = ACN (APPLICATION CONNECTION NUMBER). 
* 
*                IF ERROR:  
*                FTTINDEX = -1. 
*                STATUSWD = [SECOND-TRANSFER-ON-ACN]. 
* 
*     PROCESS    SCAN THE FILE TRANSFER TABLE.
*                IF ACN IS ALREADY IN TABLE,
*                THEN:  
*                  CALL DAYFMSG TO WRITE AN ERROR MESSAGE.
*                  SET STATUS TO INDICATE SECOND TRANSFER ATTEMPTED ON
*                    ACN. 
*                ELSE:  
*                  IF EMPTY ENTRY FOUND,
*                  THEN 
*                    SET FTTINDEX AND FTTACN. 
*                  ELSE:  
*                    CALL DAYFMSG TO ABORT CONTROL POINT WITH 
*                      MESSAGE *ALL TRANSFER TABLES IN USE.*
* 
# 
  
      ITEM ACN        I;             # APPLICATION CONNECTION NUMBER #
  
# 
****  PROC CHKFTT - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        PROC DAYFMSG;                #  WRITE DAYFILE MESSAGE # 
        FUNC DECCHF     C(10);       # DECIMAL DISPLAY CODE # 
        END 
  
# 
****  PROC CHKFTT XREF LIST END.
# 
  
  
      ITEM ERROR      B;             # ERROR FLAG # 
      ITEM I          I;             # LOOP VARIABLE #
                                               CONTROL EJECT; 
      ERROR = FALSE;
      FTTINDEX = -1;
  
      SLOWFOR I = MAXFILEXM1 STEP -1 UNTIL 0 DO 
        BEGIN 
        P<FTTENT> = LOC(FTT$WD0[I]);  # SET POINTER TO NEXT FTT ENTRY # 
        IF FTTACN EQ ACN
        THEN
          BEGIN  # SECOND FILE TRANSFER ON THIS ACN # 
          ERROR = TRUE; 
          IDFM$ACN2A[S$XFR$ACN] = DECCHF(ACN,4);
          DAYFMSG (S$XFR$ACN);     # SEND DAYFILE MESSAGE # 
          STATUSWD[0] = S$XFR$ACN;  # SET NETXFR STATUS # 
          END 
  
        ELSE
          BEGIN  # SEARCH FOR EMPTY FTT ENTRY # 
          IF FTTACN EQ 0
          THEN
            BEGIN  # EMPTY FTT ENTRY FOUND #
            FTTINDEX = I; 
            END 
  
          END 
  
        END 
  
      IF ERROR
      THEN
        BEGIN  # SECOND FILE TRANSFER ON THIS ACN # 
        FTTINDEX = -1;
        END 
  
      ELSE
        BEGIN 
        IF FTTINDEX GE 0
        THEN
          BEGIN 
          P<FTTENT> = LOC(FTT$WD0[FTTINDEX]);  # SET POINTER #
          FTTACN = ACN;                 # SET ACN # 
          END 
  
        ELSE
          BEGIN  # NO EMPTY FTT ENTRIES FOUND # 
          DAYFMSG (XFRTAB$ERR);    # SEND MESSAGE AND ABORT CP #
          END 
  
        END 
      END    # CHKFTT # 
  
      TERM
