*DECK DFTTIND 
USETEXT COMCBEG 
USETEXT COMADEF 
USETEXT COMACBF 
USETEXT COMACBX 
PROC DFTTIND(ASUPMSGIND); 
# TITLE DFTTIND - DETERMINE FTTINDEX #
  
      BEGIN  # DFTTIND #
  
# 
**    DFTTIND - DETERMINE FTTINDEX. 
* 
*     DFTTIND DETERMINES FTTINDEX BASED ON THE SUPPLIED ASUPMSGIND
*     PARAMETER.
* 
*     PROC DFTTIND(ASUPMSGIND)
* 
*     ENTRY      ASUPMSGIND - INDEX OF A PARTICULAR ASYNCHRONOUS
*                             SUPERVISORY MESSAGE.
* 
*     EXIT       FTTINDEX .LT. MAXFILEXFR (FTT ENTRY MATCHING ACN). 
*                <FTTENT> = FWA FTT ENTRY.
* 
*                FTTINDEX = MAXFILEXFR (NO MATCHING FTT ENTRY FOUND). 
* 
*     PROCESS    DEPENDING ON WHICH CASE APPLIES: 
*                  CASE (CM/EXIT/N) 
*                    DETERMINE ACN. 
*                  CASE (CM/SEL/A)
*                    DETERMINE ACN. 
*                  CASE (CM/SEL/N)
*                    DETERMINE ACN. 
*                  CASE (CON/CB/R)
*                    DETERMINE ACN. 
*                  CASE (CTRL/INFO/R) 
*                    USE ACN OF LAST INITIATED FILE TRANSFER. 
*                  CASE (DC/CICT/R) 
*                    DETERMINE ACN. 
*                  CASE (ERR/LGL/R) 
*                    DETERMINE ACN. 
*                  CASE (FC/ACK/R)
*                    DETERMINE ACN. 
*                  CASE (FC/BRK/R)
*                    DETERMINE ACN. 
*                  CASE (FC/NAK/R)
*                    DETERMINE ACN. 
*                  CASE (SHUT/INSD/R) 
*                    USE ACN OF LAST INITIATED FILE TRANSFER. 
*                  CASE (ALL OTHERS)
*                    USE ACN OF LAST INITIATED FILE TRANSFER. 
*                DETERMINE FTTINDEX.
# 
  
      ITEM ASUPMSGIND I;
  
  
      ITEM ACN       I;              # APPLICATION CONNECTION NUMBER #
      ITEM DONE      B;              # LOOP CONTROL FLAG #
  
      SWITCH FTTASM:ASMGS  DFTTIND0:CM$EXIT$N,
                           DFTTIND0:CM$SEL$A, 
                           DFTTIND0:CM$SEL$N, 
                           DFTTIND0:CON$CB$R, 
                           DFTTIND3:CTRL$INF$R, 
                           DFTTIND0:DC$CICT$R,
                           DFTTIND2:ERR$LGL$R,
                           DFTTIND0:FC$ACK$R, 
                           DFTTIND0:FC$BRK$R, 
                           DFTTIND0:FC$NAK$R, 
                           DFTTIND3:SHUT$INS$R, 
                           DFTTIND3:ALL$OTHERS; 
                                               CONTROL EJECT; 
      GOTO FTTASM[ASUPMSGIND];
  
DFTTIND0: 
  
# 
*     DETERMINE ACN FOR ALL MESSAGES WHOSE ACN IS IN BYTE 2 
*     OF WORD 0 OF TEXT AREA. 
# 
  
      ACN  =  TAIA$ACN[0];
      GOTO DFTTINDCON;
  
DFTTIND2: 
  
# 
*     DETERMINE ACN FOR ERR/LGL/R MESSAGES. 
# 
  
      ACN = TAIA$ACN4[0]; 
      GOTO DFTTINDCON;
  
DFTTIND3: 
  
# 
*     DETERMINE ACN FOR MESSAGES WHICH HAVE NO ASSOCIATED ACN.
# 
  
      ACN = LASTXFRACN; 
      GOTO DFTTINDCON;
  
DFTTINDCON: 
  
      FTTINDEX =  0;
      DONE = FALSE; 
      ASLONGAS NOT DONE  DO 
        BEGIN 
        P<FTTENT> = LOC(FTT$WD0[FTTINDEX]);  # SET FTT ENTRY ADDR # 
        IF FTTACN   EQ  ACN 
        THEN
          BEGIN 
          DONE = TRUE;
          END 
  
        ELSE
          BEGIN 
          FTTINDEX = FTTINDEX + 1;
          IF  FTTINDEX GE MAXFILEXFR
          THEN
            BEGIN 
            DONE = TRUE;
            END 
  
          END 
  
        END 
  
      END  # DFTTIND #
  
      TERM
