*DECK FFSLTIP 
USETEXT TEXTFFS 
      PROC FFSLTIP; 
*CALL COPYRITE
# TITLE FFSLTIP - TCP INDICATIONS/REQUESTS PROCESSOR.                  #
  
      BEGIN                          # FFSLTIP/FFSLTRP                 #
  
# 
**    FFSLTIP - TCP INDICATIONS/REQUESTS PROCESSOR. 
* 
*     CMP  01/88
* 
*     FFSLTIP PROCESSES ALL INDICATIONS PASSED TO THE TCP LAYER.
* 
* 
*     ENTRY: *INDICATION* COMMON BLOCK CONTAINS THE INDICATION CODE AND 
*                        ANY NECESSARY PARAMETERS.
*           TEXTFFS CONTAINS VALID INDICATIONS CODES. 
* 
*     EXIT : (IND$ICODE) OF THE CONNECTION MANAGEMENT INDICATION
*                       COMMON BLOCK IS SET IF THERE IS ANY INDICATION
*                       TO BE PASSED UPWARDS. 
* 
*     ALTERNATE ENTRY POINT FFSLTRP PROCESSES ALL REQUESTS ISSUED TO
*     TCP LAYER.
* 
*     ENTRY: *REQUEST* COMMON BLOCK CONTAINS THE REQUEST CODE AND 
*                        ANY NECESSARY PARAMETERS.
*           TEXTFFS CONTAINS VALID REQUEST CODES. 
* 
*     EXIT : THE REQUEST HAS BEEN PROCESSED.
* 
* 
* 
*     METHOD
* 
*     FFSLTIP IS CALLED BY THE MAIN LOOP WHENEVER A NON-NULL INDICATION 
*     IS DETECTED IN THE TCP INTERFACE INDICATIONS COMMON BLOCK.
*     THE INDICATION IS VALIDATED AND A TRIGGER IS GENERATED FROM IT. 
*     A *DATA RECEIVED* INDICATION NEEDS TO BE PROCESSED FURTHER TO 
*     DETERMINE IF THE BLOCK CONTAINS A TCP HEADER. IF SO, THE HEADER 
*     IS BROKEN OUT AND USED TO GENERATE THE APPROPRIATE TRIGGER. 
*     THE TRIGGER IS THEN USED TO PERFORM STATE TABLE PROCESSING .
*     NOTE THAT THE TCP STATE TABLES ARE CONTAINED IN THIS ROUTINE AS 
*     LOCAL CODE. THIS IS BECAUSE IT IS ASSUMED THAT NOWHERE ELSE WILL
*     NEED TO ACCESS THEM.
# 
  
# 
****  PROC FFSLTIP - XREF LIST
# 
  
      XREF
        BEGIN 
        PROC FFSEABT;                # ABORT AFTER ISSUING DAYFILE MSG# 
        PROC FFSITIH;                # TCP INDICATIONS PROCESSOR      # 
        PROC FFSLNLH;                # NAM REQUEST PROCESSOR          # 
        PROC FFSRPER;                # TCP PROCESS ERROR REPLY        # 
        PROC FFSRPNR;                # TCP PROCESS NORMAL REPLY       # 
        PROC FFSRSNC;                # TCP SEND CONNECTION REQUEST    # 
        PROC FFSUPAR;                # TCP PROCESS ADDRESS RECORDS    # 
        PROC FFSUCLR;                # CLEAR MEMORY UTILITY           # 
        PROC FFSUWTB;                # WRITE TO CIRCULAR TRACE BUFFER # 
        FUNC INT I;                  # FORTRAN INT FUNCTION           # 
        FUNC XCDD    C(10);          # CONVERT INTEGER TO DECML CHAR  # 
        END 
  
                                                         CONTROL EJECT; 
  
      CONTROL PRESET; 
  
# 
*     TCP STATE TABLES. 
* 
*     THE TABLES CONSIST OF A 2-DIMENSIONAL ARRAY [STATE , EVENT].
*     EACH ELEMENT HAS 3 PARTS VIZ. 
*         1 - THE ACTION TO BE PERFORMED
*         2 - THE NEXT STATE
*         3 - THE INDICATION TO BE PASSED UP TO THE NEXT LAYER. 
# 
  
      ARRAY TCP$ST$TBL [0:TCP$MX$ST, 0:TCP$MX$EVT] S(1);
        BEGIN # TCP$ST$TBL #
  
# 
*       ACTION TO BE PERFORMED. 
# 
  
        ITEM TCP$ST$ACT S:TCA$CDS (00,00,12) = [
  
          [ # IDLE,   INCON  # S"TCA$ABORT",
            # SAPAAC, INCON  # S"TCA$ABORT",
            # SAPREQ, INCON  # S"TCA$ABORT",
            # SAP,    INCON  # S"TCA$ABORT",
            # CONAAC, INCON  # S"TCA$ABORT",
            # CONREQ, INCON  # S"TCA$ABORT",
            # COHALF, INCON  # S"TCA$INDIC",
            # CONN,   INCON  # S"TCA$ABORT",
            # AACP,   INCON  # S"TCA$ABORT",
            # AACRQ,  INCON  # S"TCA$ABORT",
            # CLOSE,  INCON  # S"TCA$ABORT",
            # SCLOS,  INCON  # S"TCA$ABORT",
            # PASS,   INCON  # S"TCA$ABORT",
            # ABORT,  INCON  # S"TCA$ABORT" ] 
  
          [ # IDLE,   INDISC # S"TCA$ABORT",
            # SAPAAC, INDISC # S"TCA$ABORT",
            # SAPREQ, INDISC # S"TCA$ABORT",
            # SAP,    INDISC # S"TCA$ABORT",
            # CONAAC, INDISC # S"TCA$ABORT",
            # CONREQ, INDISC # S"TCA$ABORT",
            # COHALF, INDISC # S"TCA$ABORT",
            # CONN,   INDISC # S"TCA$INDIC",
            # AACP,   INDISC # S"TCA$ABORT",
            # AACRQ,  INDISC # S"TCA$ABORT",
            # CLOSE,  INDISC # S"TCA$NOOP", 
            # SCLOS,  INDISC # S"TCA$ABORT",
            # PASS,   INDISC # S"TCA$ABORT",
            # ABORT,  INDISC # S"TCA$NOOP" ]
  
          [ # IDLE,   INDCON # S"TCA$ABORT",
            # SAPAAC, INDCON # S"TCA$ABORT",
            # SAPREQ, INDCON # S"TCA$ABORT",
            # SAP,    INDCON # S"TCA$ABORT",
            # CONAAC, INDCON # S"TCA$ABORT",
            # CONREQ, INDCON # S"TCA$ABORT",
            # COHALF, INDCON # S"TCA$ABORT",
            # CONN,   INDCON # S"TCA$ABORT",
            # AACP,   INDCON # S"TCA$ABORT",
            # AACRQ,  INDCON # S"TCA$NOOP", 
            # CLOSE,  INDCON # S"TCA$INDIC",
            # SCLOS,  INDCON # S"TCA$ABORT",
            # PASS,   INDCON # S"TCA$ABORT",
            # ABORT,  INDCON # S"TCA$NOOP" ]
  
          [ # IDLE,   INABT  # S"TCA$ABORT",
            # SAPAAC, INABT  # S"TCA$ABORT",
            # SAPREQ, INABT  # S"TCA$ABORT",
            # SAP,    INABT  # S"TCA$ABORT",
            # CONAAC, INABT  # S"TCA$ABORT",
            # CONREQ, INABT  # S"TCA$ABORT",
            # COHALF, INABT  # S"TCA$INDIC",
            # CONN,   INABT  # S"TCA$INDIC",
            # AACP,   INABT  # S"TCA$ABORT",
            # AACRQ,  INABT  # S"TCA$NOOP", 
            # CLOSE,  INABT  # S"TCA$INDIC",
            # SCLOS,  INABT  # S"TCA$ABORT",
            # PASS,   INABT  # S"TCA$ABORT",
            # ABORT,  INABT  # S"TCA$INDIC" ] 
  
          [ # IDLE,   INFLON # S"TCA$ABORT",
            # SAPAAC, INFLON # S"TCA$ABORT",
            # SAPREQ, INFLON # S"TCA$ABORT",
            # SAP,    INFLON # S"TCA$ABORT",
            # CONAAC, INFLON # S"TCA$ABORT",
            # CONREQ, INFLON # S"TCA$ABORT",
            # COHALF, INFLON # S"TCA$ABORT",
            # CONN,   INFLON # S"TCA$NOOP", 
            # AACP,   INFLON # S"TCA$ABORT",
            # AACRQ,  INFLON # S"TCA$ABORT",
            # CLOSE,  INFLON # S"TCA$NOOP", 
            # SCLOS,  INFLON # S"TCA$ABORT",
            # PASS,   INFLON # S"TCA$ABORT",
            # ABORT,  INFLON # S"TCA$NOOP" ]
  
  
          [ # IDLE,   ININFO # S"TCA$ABORT",
            # SAPAAC, ININFO # S"TCA$ABORT",
            # SAPREQ, ININFO # S"TCA$ABORT",
            # SAP,    ININFO # S"TCA$ABORT",
            # CONAAC, ININFO # S"TCA$ABORT",
            # CONREQ, ININFO # S"TCA$ABORT",
            # COHALF, ININFO # S"TCA$ABORT",
            # CONN,   ININFO # S"TCA$INDIC",
            # AACP,   ININFO # S"TCA$ABORT",
            # AACRQ,  ININFO # S"TCA$NOOP", 
            # CLOSE,  ININFO # S"TCA$INDIC",
            # SCLOS,  ININFO # S"TCA$ABORT",
            # PASS,   ININFO # S"TCA$INDIC",
            # ABORT,  ININFO # S"TCA$NOOP" ]
  
          [ # IDLE,   INERR  # S"TCA$ABORT",
            # SAPAAC, INERR  # S"TCA$ABORT",
            # SAPREQ, INERR  # S"TCA$ABORT",
            # SAP,    INERR  # S"TCA$ABORT",
            # CONAAC, INERR  # S"TCA$ABORT",
            # CONREQ, INERR  # S"TCA$ABORT",
            # COHALF, INERR  # S"TCA$INDIC",
            # CONN,   INERR  # S"TCA$INDIC",
            # AACP,   INERR  # S"TCA$ABORT",
            # AACRQ,  INERR  # S"TCA$ABORT",
            # CLOSE,  INERR  # S"TCA$INDIC",
            # SCLOS,  INERR  # S"TCA$ABORT",
            # PASS,   INERR  # S"TCA$ABORT",
            # ABORT,  INERR  # S"TCA$ABORT" ] 
  
          [ # IDLE,   INCSAP # S"TCA$ABORT",
            # SAPAAC, INCSAP # S"TCA$ABORT",
            # SAPREQ, INCSAP # S"TCA$ABORT",
            # SAP,    INCSAP # S"TCA$INDIC",
            # CONAAC, INCSAP # S"TCA$ABORT",
            # CONREQ, INCSAP # S"TCA$ABORT",
            # COHALF, INCSAP # S"TCA$ABORT",
            # CONN,   INCSAP # S"TCA$ABORT",
            # AACP,   INCSAP # S"TCA$ABORT",
            # AACRQ,  INCSAP # S"TCA$ABORT",
            # CLOSE,  INCSAP # S"TCA$ABORT",
            # SCLOS,  INCSAP # S"TCA$ABORT",
            # PASS,   INCSAP # S"TCA$ABORT",
            # ABORT,  INCSAP # S"TCA$ABORT" ] 
  
          [ # IDLE,   RQOSAP # S"TCA$SAPAAC", 
            # SAPAAC, RQOSAP # S"TCA$ABORT",
            # SAPREQ, RQOSAP # S"TCA$ABORT",
            # SAP,    RQOSAP # S"TCA$ABORT",
            # CONAAC, RQOSAP # S"TCA$ABORT",
            # CONREQ, RQOSAP # S"TCA$ABORT",
            # COHALF, RQOSAP # S"TCA$ABORT",
            # CONN,   RQOSAP # S"TCA$ABORT",
            # AACP,   RQOSAP # S"TCA$ABORT",
            # AACRQ,  RQOSAP # S"TCA$ABORT",
            # CLOSE,  RQOSAP # S"TCA$ABORT",
            # SCLOS,  RQOSAP # S"TCA$ABORT",
            # PASS,   RQOSAP # S"TCA$ABORT",
            # ABORT,  RQOSAP # S"TCA$ABORT" ] 
  
          [ # IDLE,   RQCSAP # S"TCA$ABORT",
            # SAPAAC, RQCSAP # S"TCA$NOOP", 
            # SAPREQ, RQCSAP # S"TCA$NOOP", 
            # SAP,    RQCSAP # S"TCA$SENDCS", 
            # CONAAC, RQCSAP # S"TCA$ABORT",
            # CONREQ, RQCSAP # S"TCA$ABORT",
            # COHALF, RQCSAP # S"TCA$ABORT",
            # CONN,   RQCSAP # S"TCA$ABORT",
            # AACP,   RQCSAP # S"TCA$ABORT",
            # AACRQ,  RQCSAP # S"TCA$ABORT",
            # CLOSE,  RQCSAP # S"TCA$ABORT",
            # SCLOS,  RQCSAP # S"TCA$NOOP", 
            # PASS,   RQCSAP # S"TCA$ABORT",
            # ABORT,  RQCSAP # S"TCA$ABORT" ] 
  
          [ # IDLE,   RQACON # S"TCA$ABORT",
            # SAPAAC, RQACON # S"TCA$ABORT",
            # SAPREQ, RQACON # S"TCA$ABORT",
            # SAP,    RQACON # S"TCA$ABORT",
            # CONAAC, RQACON # S"TCA$ABORT",
            # CONREQ, RQACON # S"TCA$ABORT",
            # COHALF, RQACON # S"TCA$ABORT",
            # CONN,   RQACON # S"TCA$ABORT",
            # AACP,   RQACON # S"TCA$ABORT",
            # AACRQ,  RQACON # S"TCA$SENDAC", 
            # CLOSE,  RQACON # S"TCA$ABORT",
            # SCLOS,  RQACON # S"TCA$ABORT",
            # PASS,   RQACON # S"TCA$ABORT",
            # ABORT,  RQACON # S"TCA$ABORT" ] 
  
          [ # IDLE,   RQPCON # S"TCA$CONAAC", 
            # SAPAAC, RQPCON # S"TCA$ABORT",
            # SAPREQ, RQPCON # S"TCA$ABORT",
            # SAP,    RQPCON # S"TCA$ABORT",
            # CONAAC, RQPCON # S"TCA$ABORT",
            # CONREQ, RQPCON # S"TCA$ABORT",
            # COHALF, RQPCON # S"TCA$ABORT",
            # CONN,   RQPCON # S"TCA$ABORT",
            # AACP,   RQPCON # S"TCA$ABORT",
            # AACRQ,  RQPCON # S"TCA$ABORT",
            # CLOSE,  RQPCON # S"TCA$ABORT",
            # SCLOS,  RQPCON # S"TCA$ABORT",
            # PASS,   RQPCON # S"TCA$ABORT",
            # ABORT,  RQPCON # S"TCA$ABORT" ] 
  
          [ # IDLE,   RQPCAA # S"TCA$ABORT",
            # SAPAAC, RQPCAA # S"TCA$ABORT",
            # SAPREQ, RQPCAA # S"TCA$ABORT",
            # SAP,    RQPCAA # S"TCA$ABORT",
            # CONAAC, RQPCAA # S"TCA$ABORT",
            # CONREQ, RQPCAA # S"TCA$ABORT",
            # COHALF, RQPCAA # S"TCA$ABORT",
            # CONN,   RQPCAA # S"TCA$ABORT",
            # AACP,   RQPCAA # S"TCA$ABORT",
            # AACRQ,  RQPCAA # S"TCA$SENDPC", 
            # CLOSE,  RQPCAA # S"TCA$ABORT",
            # SCLOS,  RQPCAA # S"TCA$ABORT",
            # PASS,   RQPCAA # S"TCA$ABORT",
            # ABORT,  RQPCAA # S"TCA$ABORT" ] 
  
          [ # IDLE,   RQDCON # S"TCA$ABORT",
            # SAPAAC, RQDCON # S"TCA$ABORT",
            # SAPREQ, RQDCON # S"TCA$ABORT",
            # SAP,    RQDCON # S"TCA$ABORT",
            # CONAAC, RQDCON # S"TCA$ABORT",
            # CONREQ, RQDCON # S"TCA$ABORT",
            # COHALF, RQDCON # S"TCA$ABORT",
            # CONN,   RQDCON # S"TCA$SENDD",
            # AACP,   RQDCON # S"TCA$ABORT",
            # AACRQ,  RQDCON # S"TCA$ABORT",
            # CLOSE,  RQDCON # S"TCA$NOOP", 
            # SCLOS,  RQDCON # S"TCA$NOOP", 
            # PASS,   RQDCON # S"TCA$ABORT",
            # ABORT,  RQDCON # S"TCA$NOOP" ]
  
          [ # IDLE,   RQABT  # S"TCA$ABORT",
            # SAPAAC, RQABT  # S"TCA$ABORT",
            # SAPREQ, RQABT  # S"TCA$ABORT",
            # SAP,    RQABT  # S"TCA$ABORT",
            # CONAAC, RQABT  # S"TCA$ABORT",
            # CONREQ, RQABT  # S"TCA$NOOP", 
            # COHALF, RQABT  # S"TCA$SENDACC",
            # CONN,   RQABT  # S"TCA$SENDACC",
            # AACP,   RQABT  # S"TCA$ABORT",
            # AACRQ,  RQABT  # S"TCA$NOOP", 
            # CLOSE,  RQABT  # S"TCA$SENDACC",
            # SCLOS,  RQABT  # S"TCA$ABORT",
            # PASS,   RQABT  # S"TCA$ABORT",
            # ABORT,  RQABT  # S"TCA$ABORT" ] 
  
          [ # IDLE,   RQINFO # S"TCA$ABORT",
            # SAPAAC, RQINFO # S"TCA$ABORT",
            # SAPREQ, RQINFO # S"TCA$ABORT",
            # SAP,    RQINFO # S"TCA$ABORT",
            # CONAAC, RQINFO # S"TCA$ABORT",
            # CONREQ, RQINFO # S"TCA$ABORT",
            # COHALF, RQINFO # S"TCA$SENDA",
            # CONN,   RQINFO # S"TCA$SENDA",
            # AACP,   RQINFO # S"TCA$ABORT",
            # AACRQ,  RQINFO # S"TCA$ABORT",
            # CLOSE,  RQINFO # S"TCA$SENDA",
            # SCLOS,  RQINFO # S"TCA$NOOP", 
            # PASS,   RQINFO # S"TCA$ABORT",
            # ABORT,  RQINFO # S"TCA$SENDA" ] 
  
          [ # IDLE,   RQDATA # S"TCA$ABORT",
            # SAPAAC, RQDATA # S"TCA$ABORT",
            # SAPREQ, RQDATA # S"TCA$ABORT",
            # SAP,    RQDATA # S"TCA$ABORT",
            # CONAAC, RQDATA # S"TCA$ABORT",
            # CONREQ, RQDATA # S"TCA$ABORT",
            # COHALF, RQDATA # S"TCA$ABORT",
            # CONN,   RQDATA # S"TCA$SENDSD", 
            # AACP,   RQDATA # S"TCA$ABORT",
            # AACRQ,  RQDATA # S"TCA$ABORT",
            # CLOSE,  RQDATA # S"TCA$NOOP", 
            # SCLOS,  RQDATA # S"TCA$NOOP", 
            # PASS,   RQDATA # S"TCA$SENDSD", 
            # ABORT,  RQDATA # S"TCA$NOOP" ]
  
          [ # IDLE,   GWERPY # S"TCA$ABORT",
            # SAPAAC, GWERPY # S"TCA$ABORT",
            # SAPREQ, GWERPY # S"TCA$EREPLY", 
            # SAP,    GWERPY # S"TCA$EREPLY", 
            # CONAAC, GWERPY # S"TCA$ABORT",
            # CONREQ, GWERPY # S"TCA$EREPLY", 
            # COHALF, GWERPY # S"TCA$EREPLY", 
            # CONN,   GWERPY # S"TCA$EREPLY", 
            # AACP,   GWERPY # S"TCA$ABORT",
            # AACRQ,  GWERPY # S"TCA$ABORT",
            # CLOSE,  GWERPY # S"TCA$EREPLY", 
            # SCLOS,  GWERPY # S"TCA$EREPLY", 
            # PASS,   GWERPY # S"TCA$ABORT",
            # ABORT,  GWERPY # S"TCA$EREPLY" ]
  
          [ # IDLE,   GWNRPY # S"TCA$ABORT",
            # SAPAAC, GWNRPY # S"TCA$ABORT",
            # SAPREQ, GWNRPY # S"TCA$SAPSET", 
            # SAP,    GWNRPY # S"TCA$NREPLY", 
            # CONAAC, GWNRPY # S"TCA$ABORT",
            # CONREQ, GWNRPY # S"TCA$CONSET", 
            # COHALF, GWNRPY # S"TCA$NREPLY", 
            # CONN,   GWNRPY # S"TCA$NREPLY", 
            # AACP,   GWNRPY # S"TCA$ABORT",
            # AACRQ,  GWNRPY # S"TCA$NOOP", 
            # CLOSE,  GWNRPY # S"TCA$NREPLY", 
            # SCLOS,  GWNRPY # S"TCA$NREPLY", 
            # PASS,   GWNRPY # S"TCA$ABORT",
            # ABORT,  GWNRPY # S"TCA$NREPLY" ]
  
          [ # IDLE,   ABNRPY # S"TCA$ABORT",
            # SAPAAC, ABNRPY # S"TCA$ABORT",
            # SAPREQ, ABNRPY # S"TCA$ABORT",
            # SAP,    ABNRPY # S"TCA$ABORT",
            # CONAAC, ABNRPY # S"TCA$ABORT",
            # CONREQ, ABNRPY # S"TCA$ABORT",
            # COHALF, ABNRPY # S"TCA$ABORT",
            # CONN,   ABNRPY # S"TCA$ABORT",
            # AACP,   ABNRPY # S"TCA$ABORT",
            # AACRQ,  ABNRPY # S"TCA$ABORT",
            # CLOSE,  ABNRPY # S"TCA$ABORT",
            # SCLOS,  ABNRPY # S"TCA$ABORT",
            # PASS,   ABNRPY # S"TCA$ABORT",
            # ABORT,  ABNRPY # S"TCA$NREPLY" ]
  
          [ # IDLE,   CSNRPY # S"TCA$ABORT",
            # SAPAAC, CSNRPY # S"TCA$ABORT",
            # SAPREQ, CSNRPY # S"TCA$ABORT",
            # SAP,    CSNRPY # S"TCA$ABORT",
            # CONAAC, CSNRPY # S"TCA$ABORT",
            # CONREQ, CSNRPY # S"TCA$ABORT",
            # COHALF, CSNRPY # S"TCA$ABORT",
            # CONN,   CSNRPY # S"TCA$ABORT",
            # AACP,   CSNRPY # S"TCA$ABORT",
            # AACRQ,  CSNRPY # S"TCA$ABORT",
            # CLOSE,  CSNRPY # S"TCA$ABORT",
            # SCLOS,  CSNRPY # S"TCA$NREPLY", 
            # PASS,   CSNRPY # S"TCA$ABORT",
            # ABORT,  CSNRPY # S"TCA$ABORT" ] 
  
          [ # IDLE,   NSERR  # S"TCA$ABORT",
            # SAPAAC, NSERR  # S"TCA$ABORT",
            # SAPREQ, NSERR  # S"TCA$NETERR", 
            # SAP,    NSERR  # S"TCA$NETERR", 
            # CONAAC, NSERR  # S"TCA$ABORT",
            # CONREQ, NSERR  # S"TCA$NETERR", 
            # COHALF, NSERR  # S"TCA$NETERR", 
            # CONN,   NSERR  # S"TCA$NETERR", 
            # AACP,   NSERR  # S"TCA$ABORT",
            # AACRQ,  NSERR  # S"TCA$NETERR", 
            # CLOSE,  NSERR  # S"TCA$NETERR", 
            # SCLOS,  NSERR  # S"TCA$NETERR", 
            # PASS,   NSERR  # S"TCA$NETERR", 
            # ABORT,  NSERR  # S"TCA$NETERR" ]
  
          [ # IDLE,   NSCONN # S"TCA$ABORT",
            # SAPAAC, NSCONN # S"TCA$SENDOS", 
            # SAPREQ, NSCONN # S"TCA$ABORT",
            # SAP,    NSCONN # S"TCA$ABORT",
            # CONAAC, NSCONN # S"TCA$SENDPC", 
            # CONREQ, NSCONN # S"TCA$ABORT",
            # COHALF, NSCONN # S"TCA$ABORT",
            # CONN,   NSCONN # S"TCA$ABORT",
            # AACP,   NSCONN # S"TCA$SINDIC", 
            # AACRQ,  NSCONN # S"TCA$ABORT",
            # CLOSE,  NSCONN # S"TCA$ABORT",
            # SCLOS,  NSCONN # S"TCA$ABORT",
            # PASS,   NSCONN # S"TCA$ABORT",
            # ABORT,  NSCONN # S"TCA$ABORT" ] 
  
          [ # IDLE,   NRGWCC # S"TCA$CONAAC", 
            # SAPAAC, NRGWCC # S"TCA$ABORT",
            # SAPREQ, NRGWCC # S"TCA$ABORT",
            # SAP,    NRGWCC # S"TCA$ABORT",
            # CONAAC, NRGWCC # S"TCA$ABORT",
            # CONREQ, NRGWCC # S"TCA$ABORT",
            # COHALF, NRGWCC # S"TCA$ABORT",
            # CONN,   NRGWCC # S"TCA$ABORT",
            # AACP,   NRGWCC # S"TCA$ABORT",
            # AACRQ,  NRGWCC # S"TCA$ABORT",
            # CLOSE,  NRGWCC # S"TCA$ABORT",
            # SCLOS,  NRGWCC # S"TCA$ABORT",
            # PASS,   NRGWCC # S"TCA$ABORT",
            # ABORT,  NRGWCC # S"TCA$ABORT" ] 
  
          [ # IDLE,   NRSDD  # S"TCA$ABORT",
            # SAPAAC, NRSDD  # S"TCA$ABORT",
            # SAPREQ, NRSDD  # S"TCA$ABORT",
            # SAP,    NRSDD  # S"TCA$ABORT",
            # CONAAC, NRSDD  # S"TCA$ABORT",
            # CONREQ, NRSDD  # S"TCA$ABORT",
            # COHALF, NRSDD  # S"TCA$LSTOFF", 
            # CONN,   NRSDD  # S"TCA$LSTOFF", 
            # AACP,   NRSDD  # S"TCA$ABORT",
            # AACRQ,  NRSDD  # S"TCA$ABORT",
            # CLOSE,  NRSDD  # S"TCA$ABORT",
            # SCLOS,  NRSDD  # S"TCA$ABORT",
            # PASS,   NRSDD  # S"TCA$LSTOFF", 
            # ABORT,  NRSDD  # S"TCA$ABORT" ] 
  
          [ # IDLE,   NRRDD  # S"TCA$ABORT",
            # SAPAAC, NRRDD  # S"TCA$ABORT",
            # SAPREQ, NRRDD  # S"TCA$ABORT",
            # SAP,    NRRDD  # S"TCA$ABORT",
            # CONAAC, NRRDD  # S"TCA$ABORT",
            # CONREQ, NRRDD  # S"TCA$ABORT",
            # COHALF, NRRDD  # S"TCA$LSTON",
            # CONN,   NRRDD  # S"TCA$LSTON",
            # AACP,   NRRDD  # S"TCA$ABORT",
            # AACRQ,  NRRDD  # S"TCA$ABORT",
            # CLOSE,  NRRDD  # S"TCA$ABORT",
            # SCLOS,  NRRDD  # S"TCA$ABORT",
            # PASS,   NRRDD  # S"TCA$LSTON",
            # ABORT,  NRRDD  # S"TCA$ABORT" ] 
  
          [ # IDLE,   NSNOD  # S"TCA$ABORT",
            # SAPAAC, NSNOD  # S"TCA$ABORT",
            # SAPREQ, NSNOD  # S"TCA$NOOP", 
            # SAP,    NSNOD  # S"TCA$NOOP", 
            # CONAAC, NSNOD  # S"TCA$ABORT",
            # CONREQ, NSNOD  # S"TCA$NOOP", 
            # COHALF, NSNOD  # S"TCA$NOOP", 
            # CONN,   NSNOD  # S"TCA$SINDIC", 
            # AACP,   NSNOD  # S"TCA$ABORT",
            # AACRQ,  NSNOD  # S"TCA$NOOP", 
            # CLOSE,  NSNOD  # S"TCA$NOOP", 
            # SCLOS,  NSNOD  # S"TCA$ABORT",
            # PASS,   NSNOD  # S"TCA$ABORT",
            # ABORT,  NSNOD  # S"TCA$NOOP" ]
  
          [ # IDLE,   NSICN  # S"TCA$SINDIC", 
            # SAPAAC, NSICN  # S"TCA$ABORT",
            # SAPREQ, NSICN  # S"TCA$ABORT",
            # SAP,    NSICN  # S"TCA$ABORT",
            # CONAAC, NSICN  # S"TCA$ABORT",
            # CONREQ, NSICN  # S"TCA$ABORT",
            # COHALF, NSICN  # S"TCA$ABORT",
            # CONN,   NSICN  # S"TCA$ABORT",
            # AACP,   NSICN  # S"TCA$ABORT",
            # AACRQ,  NSICN  # S"TCA$ABORT",
            # CLOSE,  NSICN  # S"TCA$ABORT",
            # SCLOS,  NSICN  # S"TCA$ABORT",
            # PASS,   NSICN  # S"TCA$ABORT",
            # ABORT,  NSICN  # S"TCA$ABORT" ] 
  
          [ # IDLE,   FCREL  # S"TCA$ABORT",
            # SAPAAC, FCREL  # S"TCA$ABORT",
            # SAPREQ, FCREL  # S"TCA$ABORT",
            # SAP,    FCREL  # S"TCA$ABORT",
            # CONAAC, FCREL  # S"TCA$ABORT",
            # CONREQ, FCREL  # S"TCA$NOOP", 
            # COHALF, FCREL  # S"TCA$NOOP", 
            # CONN,   FCREL  # S"TCA$SINDIC", 
            # AACP,   FCREL  # S"TCA$ABORT",
            # AACRQ,  FCREL  # S"TCA$NOOP", 
            # CLOSE,  FCREL  # S"TCA$NOOP", 
            # SCLOS,  FCREL  # S"TCA$ABORT",
            # PASS,   FCREL  # S"TCA$NOOP", 
            # ABORT,  FCREL  # S"TCA$NOOP" ]];
  
# 
*       NEXT STATE FOLLOWING COMPLETION OF ACTION.
# 
  
        ITEM TCP$ST$NXT S:TCS$CDS (00,12,12) = [
  
          [ # IDLE,   INCON  # S"TCS$IDLE", 
            # SAPAAC, INCON  # S"TCS$IDLE", 
            # SAPREQ, INCON  # S"TCS$IDLE", 
            # SAP,    INCON  # S"TCS$IDLE", 
            # CONAAC, INCON  # S"TCS$IDLE", 
            # CONREQ, INCON  # S"TCS$IDLE", 
            # COHALF, INCON  # S"TCS$CONN", 
            # CONN,   INCON  # S"TCS$IDLE", 
            # AACP,   INCON  # S"TCS$IDLE", 
            # AACRQ,  INCON  # S"TCS$IDLE", 
            # CLOSE,  INCON  # S"TCS$IDLE", 
            # SCLOS,  INCON  # S"TCS$IDLE", 
            # PASS,   INCON  # S"TCS$IDLE", 
            # ABORT,  INCON  # S"TCS$IDLE" ]
  
          [ # IDLE,   INDISC # S"TCS$IDLE", 
            # SAPAAC, INDISC # S"TCS$IDLE", 
            # SAPREQ, INDISC # S"TCS$IDLE", 
            # SAP,    INDISC # S"TCS$IDLE", 
            # CONAAC, INDISC # S"TCS$IDLE", 
            # CONREQ, INDISC # S"TCS$IDLE", 
            # COHALF, INDISC # S"TCS$IDLE", 
            # CONN,   INDISC # S"TCS$CLOSE",
            # AACP,   INDISC # S"TCS$IDLE", 
            # AACRQ,  INDISC # S"TCS$IDLE", 
            # CLOSE,  INDISC # S"TCS$CLOSE",
            # SCLOS,  INDISC # S"TCS$IDLE", 
            # PASS,   INDISC # S"TCS$IDLE", 
            # ABORT,  INDISC # S"TCS$ABORT" ] 
  
          [ # IDLE,   INDCON # S"TCS$IDLE", 
            # SAPAAC, INDCON # S"TCS$IDLE", 
            # SAPREQ, INDCON # S"TCS$IDLE", 
            # SAP,    INDCON # S"TCS$IDLE", 
            # CONAAC, INDCON # S"TCS$IDLE", 
            # CONREQ, INDCON # S"TCS$IDLE", 
            # COHALF, INDCON # S"TCS$IDLE", 
            # CONN,   INDCON # S"TCS$IDLE", 
            # AACP,   INDCON # S"TCS$IDLE", 
            # AACRQ,  INDCON # S"TCS$AACRQ",
            # CLOSE,  INDCON # S"TCS$AACRQ",
            # SCLOS,  INDCON # S"TCS$IDLE", 
            # PASS,   INDCON # S"TCS$IDLE", 
            # ABORT,  INDCON # S"TCS$ABORT" ] 
  
          [ # IDLE,   INABT  # S"TCS$IDLE", 
            # SAPAAC, INABT  # S"TCS$IDLE", 
            # SAPREQ, INABT  # S"TCS$IDLE", 
            # SAP,    INABT  # S"TCS$IDLE", 
            # CONAAC, INABT  # S"TCS$IDLE", 
            # CONREQ, INABT  # S"TCS$IDLE", 
            # COHALF, INABT  # S"TCS$AACRQ",
            # CONN,   INABT  # S"TCS$AACRQ",
            # AACP,   INABT  # S"TCS$IDLE", 
            # AACRQ,  INABT  # S"TCS$AACRQ",
            # CLOSE,  INABT  # S"TCS$AACRQ",
            # SCLOS,  INABT  # S"TCS$IDLE", 
            # PASS,   INABT  # S"TCS$IDLE", 
            # ABORT,  INABT  # S"TCS$AACRQ" ] 
  
          [ # IDLE,   INFLON # S"TCS$IDLE", 
            # SAPAAC, INFLON # S"TCS$IDLE", 
            # SAPREQ, INFLON # S"TCS$IDLE", 
            # SAP,    INFLON # S"TCS$IDLE", 
            # CONAAC, INFLON # S"TCS$IDLE", 
            # CONREQ, INFLON # S"TCS$IDLE", 
            # COHALF, INFLON # S"TCS$IDLE", 
            # CONN,   INFLON # S"TCS$CONN", 
            # AACP,   INFLON # S"TCS$IDLE", 
            # AACRQ,  INFLON # S"TCS$IDLE", 
            # CLOSE,  INFLON # S"TCS$CLOSE",
            # SCLOS,  INFLON # S"TCS$IDLE", 
            # PASS,   INFLON # S"TCS$IDLE", 
            # ABORT,  INFLON # S"TCS$ABORT" ] 
  
          [ # IDLE,   ININFO # S"TCS$IDLE", 
            # SAPAAC, ININFO # S"TCS$IDLE", 
            # SAPREQ, ININFO # S"TCS$IDLE", 
            # SAP,    ININFO # S"TCS$IDLE", 
            # CONAAC, ININFO # S"TCS$IDLE", 
            # CONREQ, ININFO # S"TCS$IDLE", 
            # COHALF, ININFO # S"TCS$IDLE", 
            # CONN,   ININFO # S"TCS$CONN", 
            # AACP,   ININFO # S"TCS$IDLE", 
            # AACRQ,  ININFO # S"TCS$AACRQ",
            # CLOSE,  ININFO # S"TCS$CLOSE",
            # SCLOS,  ININFO # S"TCS$IDLE", 
            # PASS,   ININFO # S"TCS$PASS", 
            # ABORT,  ININFO # S"TCS$ABORT" ] 
  
          [ # IDLE,   INERR  # S"TCS$IDLE", 
            # SAPAAC, INERR  # S"TCS$IDLE", 
            # SAPREQ, INERR  # S"TCS$IDLE", 
            # SAP,    INERR  # S"TCS$IDLE", 
            # CONAAC, INERR  # S"TCS$IDLE", 
            # CONREQ, INERR  # S"TCS$IDLE", 
            # COHALF, INERR  # S"TCS$IDLE", 
            # CONN,   INERR  # S"TCS$IDLE", 
            # AACP,   INERR  # S"TCS$IDLE", 
            # AACRQ,  INERR  # S"TCS$IDLE", 
            # CLOSE,  INERR  # S"TCS$IDLE", 
            # SCLOS,  INERR  # S"TCS$IDLE", 
            # PASS,   INERR  # S"TCS$IDLE", 
            # ABORT,  INERR  # S"TCS$IDLE" ]
  
          [ # IDLE,   INCSAP # S"TCS$IDLE", 
            # SAPAAC, INCSAP # S"TCS$IDLE", 
            # SAPREQ, INCSAP # S"TCS$IDLE", 
            # SAP,    INCSAP # S"TCS$IDLE", 
            # CONAAC, INCSAP # S"TCS$IDLE", 
            # CONREQ, INCSAP # S"TCS$IDLE", 
            # COHALF, INCSAP # S"TCS$IDLE", 
            # CONN,   INCSAP # S"TCS$IDLE", 
            # AACP,   INCSAP # S"TCS$IDLE", 
            # AACRQ,  INCSAP # S"TCS$IDLE", 
            # CLOSE,  INCSAP # S"TCS$IDLE", 
            # SCLOS,  INCSAP # S"TCS$IDLE", 
            # PASS,   INCSAP # S"TCS$IDLE", 
            # ABORT,  INCSAP # S"TCS$IDLE" ]
  
          [ # IDLE,   RQOSAP # S"TCS$SAPAAC", 
            # SAPAAC, RQOSAP # S"TCS$IDLE", 
            # SAPREQ, RQOSAP # S"TCS$IDLE", 
            # SAP,    RQOSAP # S"TCS$IDLE", 
            # CONAAC, RQOSAP # S"TCS$IDLE", 
            # CONREQ, RQOSAP # S"TCS$IDLE", 
            # COHALF, RQOSAP # S"TCS$IDLE", 
            # CONN,   RQOSAP # S"TCS$IDLE", 
            # AACP,   RQOSAP # S"TCS$IDLE", 
            # AACRQ,  RQOSAP # S"TCS$IDLE", 
            # CLOSE,  RQOSAP # S"TCS$IDLE", 
            # SCLOS,  RQOSAP # S"TCS$IDLE", 
            # PASS,   RQOSAP # S"TCS$IDLE", 
            # ABORT,  RQOSAP # S"TCS$IDLE" ]
  
          [ # IDLE,   RQCSAP # S"TCS$IDLE", 
            # SAPAAC, RQCSAP # S"TCS$SAPAAC", 
            # SAPREQ, RQCSAP # S"TCS$SAPREQ", 
            # SAP,    RQCSAP # S"TCS$SCLOS",
            # CONAAC, RQCSAP # S"TCS$IDLE", 
            # CONREQ, RQCSAP # S"TCS$IDLE", 
            # COHALF, RQCSAP # S"TCS$IDLE", 
            # CONN,   RQCSAP # S"TCS$IDLE", 
            # AACP,   RQCSAP # S"TCS$IDLE", 
            # AACRQ,  RQCSAP # S"TCS$IDLE", 
            # CLOSE,  RQCSAP # S"TCS$IDLE", 
            # SCLOS,  RQCSAP # S"TCS$SCLOS",
            # PASS,   RQCSAP # S"TCS$IDLE", 
            # ABORT,  RQCSAP # S"TCS$IDLE" ]
  
          [ # IDLE,   RQACON # S"TCS$IDLE", 
            # SAPAAC, RQACON # S"TCS$IDLE", 
            # SAPREQ, RQACON # S"TCS$IDLE", 
            # SAP,    RQACON # S"TCS$IDLE", 
            # CONAAC, RQACON # S"TCS$IDLE", 
            # CONREQ, RQACON # S"TCS$IDLE", 
            # COHALF, RQACON # S"TCS$IDLE", 
            # CONN,   RQACON # S"TCS$IDLE", 
            # AACP,   RQACON # S"TCS$IDLE", 
            # AACRQ,  RQACON # S"TCS$CONREQ", 
            # CLOSE,  RQACON # S"TCS$IDLE", 
            # SCLOS,  RQACON # S"TCS$IDLE", 
            # PASS,   RQACON # S"TCS$IDLE", 
            # ABORT,  RQACON # S"TCS$IDLE" ]
  
          [ # IDLE,   RQPCON # S"TCS$CONAAC", 
            # SAPAAC, RQPCON # S"TCS$IDLE", 
            # SAPREQ, RQPCON # S"TCS$IDLE", 
            # SAP,    RQPCON # S"TCS$IDLE", 
            # CONAAC, RQPCON # S"TCS$IDLE", 
            # CONREQ, RQPCON # S"TCS$IDLE", 
            # COHALF, RQPCON # S"TCS$IDLE", 
            # CONN,   RQPCON # S"TCS$IDLE", 
            # AACP,   RQPCON # S"TCS$IDLE", 
            # AACRQ,  RQPCON # S"TCS$IDLE", 
            # CLOSE,  RQPCON # S"TCS$IDLE", 
            # SCLOS,  RQPCON # S"TCS$IDLE", 
            # PASS,   RQPCON # S"TCS$IDLE", 
            # ABORT,  RQPCON # S"TCS$IDLE" ]
  
          [ # IDLE,   RQPCAA # S"TCS$IDLE", 
            # SAPAAC, RQPCAA # S"TCS$IDLE", 
            # SAPREQ, RQPCAA # S"TCS$IDLE", 
            # SAP,    RQPCAA # S"TCS$IDLE", 
            # CONAAC, RQPCAA # S"TCS$IDLE", 
            # CONREQ, RQPCAA # S"TCS$IDLE", 
            # COHALF, RQPCAA # S"TCS$IDLE", 
            # CONN,   RQPCAA # S"TCS$IDLE", 
            # AACP,   RQPCAA # S"TCS$IDLE", 
            # AACRQ,  RQPCAA # S"TCS$CONREQ", 
            # CLOSE,  RQPCAA # S"TCS$IDLE", 
            # SCLOS,  RQPCAA # S"TCS$IDLE", 
            # PASS,   RQPCAA # S"TCS$IDLE", 
            # ABORT,  RQPCAA # S"TCS$IDLE" ]
  
          [ # IDLE,   RQDCON # S"TCS$IDLE", 
            # SAPAAC, RQDCON # S"TCS$IDLE", 
            # SAPREQ, RQDCON # S"TCS$IDLE", 
            # SAP,    RQDCON # S"TCS$IDLE", 
            # CONAAC, RQDCON # S"TCS$IDLE", 
            # CONREQ, RQDCON # S"TCS$IDLE", 
            # COHALF, RQDCON # S"TCS$IDLE", 
            # CONN,   RQDCON # S"TCS$CLOSE",
            # AACP,   RQDCON # S"TCS$IDLE", 
            # AACRQ,  RQDCON # S"TCS$IDLE", 
            # CLOSE,  RQDCON # S"TCS$CLOSE",
            # SCLOS,  RQDCON # S"TCS$SCLOS",
            # PASS,   RQDCON # S"TCS$IDLE", 
            # ABORT,  RQDCON # S"TCS$ABORT" ] 
  
          [ # IDLE,   RQABT  # S"TCS$IDLE", 
            # SAPAAC, RQABT  # S"TCS$IDLE", 
            # SAPREQ, RQABT  # S"TCS$IDLE", 
            # SAP,    RQABT  # S"TCS$IDLE", 
            # CONAAC, RQABT  # S"TCS$IDLE", 
            # CONREQ, RQABT  # S"TCS$CONREQ", 
            # COHALF, RQABT  # S"TCS$ABORT",
            # CONN,   RQABT  # S"TCS$ABORT",
            # AACP,   RQABT  # S"TCS$IDLE", 
            # AACRQ,  RQABT  # S"TCS$AACRQ",
            # CLOSE,  RQABT  # S"TCS$ABORT",
            # SCLOS,  RQABT  # S"TCS$IDLE", 
            # PASS,   RQABT  # S"TCS$IDLE", 
            # ABORT,  RQABT  # S"TCS$IDLE" ]
  
          [ # IDLE,   RQINFO # S"TCS$IDLE", 
            # SAPAAC, RQINFO # S"TCS$IDLE", 
            # SAPREQ, RQINFO # S"TCS$IDLE", 
            # SAP,    RQINFO # S"TCS$IDLE", 
            # CONAAC, RQINFO # S"TCS$IDLE", 
            # CONREQ, RQINFO # S"TCS$IDLE", 
            # COHALF, RQINFO # S"TCS$COHALF", 
            # CONN,   RQINFO # S"TCS$CONN", 
            # AACP,   RQINFO # S"TCS$IDLE", 
            # AACRQ,  RQINFO # S"TCS$IDLE", 
            # CLOSE,  RQINFO # S"TCS$CLOSE",
            # SCLOS,  RQINFO # S"TCS$SCLOS",
            # PASS,   RQINFO # S"TCS$IDLE", 
            # ABORT,  RQINFO # S"TCS$ABORT" ] 
  
          [ # IDLE,   RQDATA # S"TCS$IDLE", 
            # SAPAAC, RQDATA # S"TCS$IDLE", 
            # SAPREQ, RQDATA # S"TCS$IDLE", 
            # SAP,    RQDATA # S"TCS$IDLE", 
            # CONAAC, RQDATA # S"TCS$IDLE", 
            # CONREQ, RQDATA # S"TCS$IDLE", 
            # COHALF, RQDATA # S"TCS$IDLE", 
            # CONN,   RQDATA # S"TCS$CONN", 
            # AACP,   RQDATA # S"TCS$IDLE", 
            # AACRQ,  RQDATA # S"TCS$IDLE", 
            # CLOSE,  RQDATA # S"TCS$CLOSE",
            # SCLOS,  RQDATA # S"TCS$SCLOS",
            # PASS,   RQDATA # S"TCS$PASS", 
            # ABORT,  RQDATA # S"TCS$ABORT" ] 
  
          [ # IDLE,   GWERPY # S"TCS$IDLE", 
            # SAPAAC, GWERPY # S"TCS$IDLE", 
            # SAPREQ, GWERPY # S"TCS$SAPREQ", 
            # SAP,    GWERPY # S"TCS$SAP",
            # CONAAC, GWERPY # S"TCS$IDLE", 
            # CONREQ, GWERPY # S"TCS$AACRQ",
            # COHALF, GWERPY # S"TCS$ABORT",
            # CONN,   GWERPY # S"TCS$ABORT",
            # AACP,   GWERPY # S"TCS$IDLE", 
            # AACRQ,  GWERPY # S"TCS$IDLE", 
            # CLOSE,  GWERPY # S"TCS$ABORT",
            # SCLOS,  GWERPY # S"TCS$SCLOS",
            # PASS,   GWERPY # S"TCS$IDLE", 
            # ABORT,  GWERPY # S"TCS$ABORT" ] 
  
          [ # IDLE,   GWNRPY # S"TCS$IDLE", 
            # SAPAAC, GWNRPY # S"TCS$IDLE", 
            # SAPREQ, GWNRPY # S"TCS$SAP",
            # SAP,    GWNRPY # S"TCS$SAP",
            # CONAAC, GWNRPY # S"TCS$IDLE", 
            # CONREQ, GWNRPY # S"TCS$COHALF", 
            # COHALF, GWNRPY # S"TCS$COHALF", 
            # CONN,   GWNRPY # S"TCS$CONN", 
            # AACP,   GWNRPY # S"TCS$IDLE", 
            # AACRQ,  GWNRPY # S"TCS$AACRQ",
            # CLOSE,  GWNRPY # S"TCS$CLOSE",
            # SCLOS,  GWNRPY # S"TCS$SCLOS",
            # PASS,   GWNRPY # S"TCS$IDLE", 
            # ABORT,  GWNRPY # S"TCS$ABORT" ] 
  
          [ # IDLE,   ABNRPY # S"TCS$IDLE", 
            # SAPAAC, ABNRPY # S"TCS$IDLE", 
            # SAPREQ, ABNRPY # S"TCS$IDLE", 
            # SAP,    ABNRPY # S"TCS$IDLE", 
            # CONAAC, ABNRPY # S"TCS$IDLE", 
            # CONREQ, ABNRPY # S"TCS$IDLE", 
            # COHALF, ABNRPY # S"TCS$IDLE", 
            # CONN,   ABNRPY # S"TCS$IDLE", 
            # AACP,   ABNRPY # S"TCS$IDLE", 
            # AACRQ,  ABNRPY # S"TCS$IDLE", 
            # CLOSE,  ABNRPY # S"TCS$IDLE", 
            # SCLOS,  ABNRPY # S"TCS$IDLE", 
            # PASS,   ABNRPY # S"TCS$IDLE", 
            # ABORT,  ABNRPY # S"TCS$AACRQ" ] 
  
          [ # IDLE,   CSNRPY # S"TCS$IDLE", 
            # SAPAAC, CSNRPY # S"TCS$IDLE", 
            # SAPREQ, CSNRPY # S"TCS$IDLE", 
            # SAP,    CSNRPY # S"TCS$IDLE", 
            # CONAAC, CSNRPY # S"TCS$IDLE", 
            # CONREQ, CSNRPY # S"TCS$IDLE", 
            # COHALF, CSNRPY # S"TCS$IDLE", 
            # CONN,   CSNRPY # S"TCS$IDLE", 
            # AACP,   CSNRPY # S"TCS$IDLE", 
            # AACRQ,  CSNRPY # S"TCS$IDLE", 
            # CLOSE,  CSNRPY # S"TCS$IDLE", 
            # SCLOS,  CSNRPY # S"TCS$AACRQ",
            # PASS,   CSNRPY # S"TCS$IDLE", 
            # ABORT,  CSNRPY # S"TCS$IDLE" ]
  
          [ # IDLE,   NSERR  # S"TCS$IDLE", 
            # SAPAAC, NSERR  # S"TCS$IDLE", 
            # SAPREQ, NSERR  # S"TCS$IDLE", 
            # SAP,    NSERR  # S"TCS$IDLE", 
            # CONAAC, NSERR  # S"TCS$IDLE", 
            # CONREQ, NSERR  # S"TCS$IDLE", 
            # COHALF, NSERR  # S"TCS$IDLE", 
            # CONN,   NSERR  # S"TCS$IDLE", 
            # AACP,   NSERR  # S"TCS$IDLE", 
            # AACRQ,  NSERR  # S"TCS$IDLE", 
            # CLOSE,  NSERR  # S"TCS$IDLE", 
            # SCLOS,  NSERR  # S"TCS$IDLE", 
            # PASS,   NSERR  # S"TCS$IDLE", 
            # ABORT,  NSERR  # S"TCS$IDLE" ]
  
          [ # IDLE,   NSCONN # S"TCS$IDLE", 
            # SAPAAC, NSCONN # S"TCS$SAPREQ", 
            # SAPREQ, NSCONN # S"TCS$IDLE", 
            # SAP,    NSCONN # S"TCS$IDLE", 
            # CONAAC, NSCONN # S"TCS$CONREQ", 
            # CONREQ, NSCONN # S"TCS$IDLE", 
            # COHALF, NSCONN # S"TCS$IDLE", 
            # CONN,   NSCONN # S"TCS$IDLE", 
            # AACP,   NSCONN # S"TCS$AACRQ",
            # AACRQ,  NSCONN # S"TCS$IDLE", 
            # CLOSE,  NSCONN # S"TCS$IDLE", 
            # SCLOS,  NSCONN # S"TCS$IDLE", 
            # PASS,   NSCONN # S"TCS$IDLE", 
            # ABORT,  NSCONN # S"TCS$IDLE" ]
  
          [ # IDLE,   NRGWCC # S"TCS$AACP", 
            # SAPAAC, NRGWCC # S"TCS$IDLE", 
            # SAPREQ, NRGWCC # S"TCS$IDLE", 
            # SAP,    NRGWCC # S"TCS$IDLE", 
            # CONAAC, NRGWCC # S"TCS$IDLE", 
            # CONREQ, NRGWCC # S"TCS$IDLE", 
            # COHALF, NRGWCC # S"TCS$IDLE", 
            # CONN,   NRGWCC # S"TCS$IDLE", 
            # AACP,   NRGWCC # S"TCS$IDLE", 
            # AACRQ,  NRGWCC # S"TCS$IDLE", 
            # CLOSE,  NRGWCC # S"TCS$IDLE", 
            # SCLOS,  NRGWCC # S"TCS$IDLE", 
            # PASS,   NRGWCC # S"TCS$IDLE", 
            # ABORT,  NRGWCC # S"TCS$IDLE" ]
  
          [ # IDLE,   NRSDD  # S"TCS$IDLE", 
            # SAPAAC, NRSDD  # S"TCS$IDLE", 
            # SAPREQ, NRSDD  # S"TCS$IDLE", 
            # SAP,    NRSDD  # S"TCS$IDLE", 
            # CONAAC, NRSDD  # S"TCS$IDLE", 
            # CONREQ, NRSDD  # S"TCS$IDLE", 
            # COHALF, NRSDD  # S"TCS$COHALF", 
            # CONN,   NRSDD  # S"TCS$CONN", 
            # AACP,   NRSDD  # S"TCS$IDLE", 
            # AACRQ,  NRSDD  # S"TCS$IDLE", 
            # CLOSE,  NRSDD  # S"TCS$IDLE", 
            # SCLOS,  NRSDD  # S"TCS$IDLE", 
            # PASS,   NRSDD  # S"TCS$PASS", 
            # ABORT,  NRSDD  # S"TCS$IDLE" ]
  
          [ # IDLE,   NRRDD  # S"TCS$IDLE", 
            # SAPAAC, NRRDD  # S"TCS$IDLE", 
            # SAPREQ, NRRDD  # S"TCS$IDLE", 
            # SAP,    NRRDD  # S"TCS$IDLE", 
            # CONAAC, NRRDD  # S"TCS$IDLE", 
            # CONREQ, NRRDD  # S"TCS$IDLE", 
            # COHALF, NRRDD  # S"TCS$COHALF", 
            # CONN,   NRRDD  # S"TCS$CONN", 
            # AACP,   NRRDD  # S"TCS$IDLE", 
            # AACRQ,  NRRDD  # S"TCS$IDLE", 
            # CLOSE,  NRRDD  # S"TCS$IDLE", 
            # SCLOS,  NRRDD  # S"TCS$IDLE", 
            # PASS,   NRRDD  # S"TCS$PASS", 
            # ABORT,  NRRDD  # S"TCS$IDLE" ]
  
          [ # IDLE,   NSNOD  # S"TCS$IDLE", 
            # SAPAAC, NSNOD  # S"TCS$IDLE", 
            # SAPREQ, NSNOD  # S"TCS$SAPREQ", 
            # SAP,    NSNOD  # S"TCS$SAP",
            # CONAAC, NSNOD  # S"TCS$IDLE", 
            # CONREQ, NSNOD  # S"TCS$CONREQ", 
            # COHALF, NSNOD  # S"TCS$COHALF", 
            # CONN,   NSNOD  # S"TCS$CONN", 
            # AACP,   NSNOD  # S"TCS$IDLE", 
            # AACRQ,  NSNOD  # S"TCS$AACRQ",
            # CLOSE,  NSNOD  # S"TCS$CLOSE",
            # SCLOS,  NSNOD  # S"TCS$IDLE", 
            # PASS,   NSNOD  # S"TCS$IDLE", 
            # ABORT,  NSNOD  # S"TCS$ABORT" ] 
  
          [ # IDLE,   NSICN  # S"TCS$PASS", 
            # SAPAAC, NSICN  # S"TCS$IDLE", 
            # SAPREQ, NSICN  # S"TCS$IDLE", 
            # SAP,    NSICN  # S"TCS$IDLE", 
            # CONAAC, NSICN  # S"TCS$IDLE", 
            # CONREQ, NSICN  # S"TCS$IDLE", 
            # COHALF, NSICN  # S"TCS$IDLE", 
            # CONN,   NSICN  # S"TCS$IDLE", 
            # AACP,   NSICN  # S"TCS$IDLE", 
            # AACRQ,  NSICN  # S"TCS$IDLE", 
            # CLOSE,  NSICN  # S"TCS$IDLE", 
            # SCLOS,  NSICN  # S"TCS$IDLE", 
            # PASS,   NSICN  # S"TCS$IDLE", 
            # ABORT,  NSICN  # S"TCS$IDLE" ]
  
          [ # IDLE,   FCREL  # S"TCS$IDLE", 
            # SAPAAC, FCREL  # S"TCS$IDLE", 
            # SAPREQ, FCREL  # S"TCS$IDLE", 
            # SAP,    FCREL  # S"TCS$IDLE", 
            # CONAAC, FCREL  # S"TCS$IDLE", 
            # CONREQ, FCREL  # S"TCS$CONREQ", 
            # COHALF, FCREL  # S"TCS$COHALF", 
            # CONN,   FCREL  # S"TCS$CONN", 
            # AACP,   FCREL  # S"TCS$IDLE", 
            # AACRQ,  FCREL  # S"TCS$AACRQ",
            # CLOSE,  FCREL  # S"TCS$CLOSE",
            # SCLOS,  FCREL  # S"TCS$IDLE", 
            # PASS,   FCREL  # S"TCS$PASS", 
            # ABORT,  FCREL  # S"TCS$ABORT" ]]; 
  
  
# 
*       INDICATION DELIVERED. 
# 
  
        ITEM TCP$ST$IND S:ITCP (00,24,12) = [ 
  
          [ # IDLE,   INCON  # S"NULL", 
            # SAPAAC, INCON  # S"NULL", 
            # SAPREQ, INCON  # S"NULL", 
            # SAP,    INCON  # S"NULL", 
            # CONAAC, INCON  # S"NULL", 
            # CONREQ, INCON  # S"NULL", 
            # COHALF, INCON  # S"ITCONCMP", 
            # CONN,   INCON  # S"NULL", 
            # AACP,   INCON  # S"NULL", 
            # AACRQ,  INCON  # S"NULL", 
            # CLOSE,  INCON  # S"NULL", 
            # SCLOS,  INCON  # S"NULL", 
            # PASS,   INCON  # S"NULL", 
            # ABORT,  INCON  # S"NULL" ]
  
          [ # IDLE,   INDISC # S"NULL", 
            # SAPAAC, INDISC # S"NULL", 
            # SAPREQ, INDISC # S"NULL", 
            # SAP,    INDISC # S"NULL", 
            # CONAAC, INDISC # S"NULL", 
            # CONREQ, INDISC # S"NULL", 
            # COHALF, INDISC # S"NULL", 
            # CONN,   INDISC # S"NULL", 
            # AACP,   INDISC # S"NULL", 
            # AACRQ,  INDISC # S"NULL", 
            # CLOSE,  INDISC # S"NULL", 
            # SCLOS,  INDISC # S"NULL", 
            # PASS,   INDISC # S"NULL", 
            # ABORT,  INDISC # S"NULL" ]
  
          [ # IDLE,   INDCON # S"NULL", 
            # SAPAAC, INDCON # S"NULL", 
            # SAPREQ, INDCON # S"NULL", 
            # SAP,    INDCON # S"NULL", 
            # CONAAC, INDCON # S"NULL", 
            # CONREQ, INDCON # S"NULL", 
            # COHALF, INDCON # S"NULL", 
            # CONN,   INDCON # S"NULL", 
            # AACP,   INDCON # S"NULL", 
            # AACRQ,  INDCON # S"NULL", 
            # CLOSE,  INDCON # S"ITCONCLSD",
            # SCLOS,  INDCON # S"NULL", 
            # PASS,   INDCON # S"NULL", 
            # ABORT,  INDCON # S"NULL" ]
  
          [ # IDLE,   INABT  # S"NULL", 
            # SAPAAC, INABT  # S"NULL", 
            # SAPREQ, INABT  # S"NULL", 
            # SAP,    INABT  # S"NULL", 
            # CONAAC, INABT  # S"NULL", 
            # CONREQ, INABT  # S"NULL", 
            # COHALF, INABT  # S"ITCONABT", 
            # CONN,   INABT  # S"ITCONABT", 
            # AACP,   INABT  # S"NULL", 
            # AACRQ,  INABT  # S"NULL", 
            # CLOSE,  INABT  # S"ITCONABT", 
            # SCLOS,  INABT  # S"NULL", 
            # PASS,   INABT  # S"NULL", 
            # ABORT,  INABT  # S"ITCONABT" ]
  
          [ # IDLE,   INFLON # S"NULL", 
            # SAPAAC, INFLON # S"NULL", 
            # SAPREQ, INFLON # S"NULL", 
            # SAP,    INFLON # S"NULL", 
            # CONAAC, INFLON # S"NULL", 
            # CONREQ, INFLON # S"NULL", 
            # COHALF, INFLON # S"NULL", 
            # CONN,   INFLON # S"NULL", 
            # AACP,   INFLON # S"NULL", 
            # AACRQ,  INFLON # S"NULL", 
            # CLOSE,  INFLON # S"NULL", 
            # SCLOS,  INFLON # S"NULL", 
            # PASS,   INFLON # S"NULL", 
            # ABORT,  INFLON # S"NULL" ]
  
          [ # IDLE,   ININFO # S"NULL", 
            # SAPAAC, ININFO # S"NULL", 
            # SAPREQ, ININFO # S"NULL", 
            # SAP,    ININFO # S"NULL", 
            # CONAAC, ININFO # S"NULL", 
            # CONREQ, ININFO # S"NULL", 
            # COHALF, ININFO # S"NULL", 
            # CONN,   ININFO # S"ITDATAV",
            # AACP,   ININFO # S"NULL", 
            # AACRQ,  ININFO # S"NULL", 
            # CLOSE,  ININFO # S"ITDATAV",
            # SCLOS,  ININFO # S"NULL", 
            # PASS,   ININFO # S"ITDATAV",
            # ABORT,  ININFO # S"NULL" ]
  
          [ # IDLE,   INERR  # S"NULL", 
            # SAPAAC, INERR  # S"NULL", 
            # SAPREQ, INERR  # S"NULL", 
            # SAP,    INERR  # S"NULL", 
            # CONAAC, INERR  # S"NULL", 
            # CONREQ, INERR  # S"NULL", 
            # COHALF, INERR  # S"NULL", 
            # CONN,   INERR  # S"NULL", 
            # AACP,   INERR  # S"NULL", 
            # AACRQ,  INERR  # S"NULL", 
            # CLOSE,  INERR  # S"NULL", 
            # SCLOS,  INERR  # S"NULL", 
            # PASS,   INERR  # S"NULL", 
            # ABORT,  INERR  # S"NULL" ]
  
          [ # IDLE,   INCSAP # S"NULL", 
            # SAPAAC, INCSAP # S"NULL", 
            # SAPREQ, INCSAP # S"NULL", 
            # SAP,    INCSAP # S"ITCONBKN", 
            # CONAAC, INCSAP # S"NULL", 
            # CONREQ, INCSAP # S"NULL", 
            # COHALF, INCSAP # S"NULL", 
            # CONN,   INCSAP # S"NULL", 
            # AACP,   INCSAP # S"NULL", 
            # AACRQ,  INCSAP # S"NULL", 
            # CLOSE,  INCSAP # S"NULL", 
            # SCLOS,  INCSAP # S"NULL", 
            # PASS,   INCSAP # S"NULL", 
            # ABORT,  INCSAP # S"NULL" ]
  
          [ # IDLE,   RQOSAP # S"NULL", 
            # SAPAAC, RQOSAP # S"NULL", 
            # SAPREQ, RQOSAP # S"NULL", 
            # SAP,    RQOSAP # S"NULL", 
            # CONAAC, RQOSAP # S"NULL", 
            # CONREQ, RQOSAP # S"NULL", 
            # COHALF, RQOSAP # S"NULL", 
            # CONN,   RQOSAP # S"NULL", 
            # AACP,   RQOSAP # S"NULL", 
            # AACRQ,  RQOSAP # S"NULL", 
            # CLOSE,  RQOSAP # S"NULL", 
            # SCLOS,  RQOSAP # S"NULL", 
            # PASS,   RQOSAP # S"NULL", 
            # ABORT,  RQOSAP # S"NULL" ]
  
          [ # IDLE,   RQCSAP # S"NULL", 
            # SAPAAC, RQCSAP # S"NULL", 
            # SAPREQ, RQCSAP # S"NULL", 
            # SAP,    RQCSAP # S"NULL", 
            # CONAAC, RQCSAP # S"NULL", 
            # CONREQ, RQCSAP # S"NULL", 
            # COHALF, RQCSAP # S"NULL", 
            # CONN,   RQCSAP # S"NULL", 
            # AACP,   RQCSAP # S"NULL", 
            # AACRQ,  RQCSAP # S"NULL", 
            # CLOSE,  RQCSAP # S"NULL", 
            # SCLOS,  RQCSAP # S"NULL", 
            # PASS,   RQCSAP # S"NULL", 
            # ABORT,  RQCSAP # S"NULL" ]
  
          [ # IDLE,   RQACON # S"NULL", 
            # SAPAAC, RQACON # S"NULL", 
            # SAPREQ, RQACON # S"NULL", 
            # SAP,    RQACON # S"NULL", 
            # CONAAC, RQACON # S"NULL", 
            # CONREQ, RQACON # S"NULL", 
            # COHALF, RQACON # S"NULL", 
            # CONN,   RQACON # S"NULL", 
            # AACP,   RQACON # S"NULL", 
            # AACRQ,  RQACON # S"NULL", 
            # CLOSE,  RQACON # S"NULL", 
            # SCLOS,  RQACON # S"NULL", 
            # PASS,   RQACON # S"NULL", 
            # ABORT,  RQACON # S"NULL" ]
  
          [ # IDLE,   RQPCON # S"NULL", 
            # SAPAAC, RQPCON # S"NULL", 
            # SAPREQ, RQPCON # S"NULL", 
            # SAP,    RQPCON # S"NULL", 
            # CONAAC, RQPCON # S"NULL", 
            # CONREQ, RQPCON # S"NULL", 
            # COHALF, RQPCON # S"NULL", 
            # CONN,   RQPCON # S"NULL", 
            # AACP,   RQPCON # S"NULL", 
            # AACRQ,  RQPCON # S"NULL", 
            # CLOSE,  RQPCON # S"NULL", 
            # SCLOS,  RQPCON # S"NULL", 
            # PASS,   RQPCON # S"NULL", 
            # ABORT,  RQPCON # S"NULL" ]
  
          [ # IDLE,   RQPCAA # S"NULL", 
            # SAPAAC, RQPCAA # S"NULL", 
            # SAPREQ, RQPCAA # S"NULL", 
            # SAP,    RQPCAA # S"NULL", 
            # CONAAC, RQPCAA # S"NULL", 
            # CONREQ, RQPCAA # S"NULL", 
            # COHALF, RQPCAA # S"NULL", 
            # CONN,   RQPCAA # S"NULL", 
            # AACP,   RQPCAA # S"NULL", 
            # AACRQ,  RQPCAA # S"NULL", 
            # CLOSE,  RQPCAA # S"NULL", 
            # SCLOS,  RQPCAA # S"NULL", 
            # PASS,   RQPCAA # S"NULL", 
            # ABORT,  RQPCAA # S"NULL" ]
  
          [ # IDLE,   RQDCON # S"NULL", 
            # SAPAAC, RQDCON # S"NULL", 
            # SAPREQ, RQDCON # S"NULL", 
            # SAP,    RQDCON # S"NULL", 
            # CONAAC, RQDCON # S"NULL", 
            # CONREQ, RQDCON # S"NULL", 
            # COHALF, RQDCON # S"NULL", 
            # CONN,   RQDCON # S"NULL", 
            # AACP,   RQDCON # S"NULL", 
            # AACRQ,  RQDCON # S"NULL", 
            # CLOSE,  RQDCON # S"NULL", 
            # SCLOS,  RQDCON # S"NULL", 
            # PASS,   RQDCON # S"NULL", 
            # ABORT,  RQDCON # S"NULL" ]
  
          [ # IDLE,   RQABT  # S"NULL", 
            # SAPAAC, RQABT  # S"NULL", 
            # SAPREQ, RQABT  # S"NULL", 
            # SAP,    RQABT  # S"NULL", 
            # CONAAC, RQABT  # S"NULL", 
            # CONREQ, RQABT  # S"NULL", 
            # COHALF, RQABT  # S"NULL", 
            # CONN,   RQABT  # S"NULL", 
            # AACP,   RQABT  # S"NULL", 
            # AACRQ,  RQABT  # S"NULL", 
            # CLOSE,  RQABT  # S"NULL", 
            # SCLOS,  RQABT  # S"NULL", 
            # PASS,   RQABT  # S"NULL", 
            # ABORT,  RQABT  # S"NULL" ]
  
          [ # IDLE,   RQINFO # S"NULL", 
            # SAPAAC, RQINFO # S"NULL", 
            # SAPREQ, RQINFO # S"NULL", 
            # SAP,    RQINFO # S"NULL", 
            # CONAAC, RQINFO # S"NULL", 
            # CONREQ, RQINFO # S"NULL", 
            # COHALF, RQINFO # S"NULL", 
            # CONN,   RQINFO # S"NULL", 
            # AACP,   RQINFO # S"NULL", 
            # AACRQ,  RQINFO # S"NULL", 
            # CLOSE,  RQINFO # S"NULL", 
            # SCLOS,  RQINFO # S"NULL", 
            # PASS,   RQINFO # S"NULL", 
            # ABORT,  RQINFO # S"NULL" ]
  
          [ # IDLE,   RQDATA # S"NULL", 
            # SAPAAC, RQDATA # S"NULL", 
            # SAPREQ, RQDATA # S"NULL", 
            # SAP,    RQDATA # S"NULL", 
            # CONAAC, RQDATA # S"NULL", 
            # CONREQ, RQDATA # S"NULL", 
            # COHALF, RQDATA # S"NULL", 
            # CONN,   RQDATA # S"NULL", 
            # AACP,   RQDATA # S"NULL", 
            # AACRQ,  RQDATA # S"NULL", 
            # CLOSE,  RQDATA # S"NULL", 
            # SCLOS,  RQDATA # S"NULL", 
            # PASS,   RQDATA # S"NULL", 
            # ABORT,  RQDATA # S"NULL" ]
  
          [ # IDLE,   GWERPY # S"NULL", 
            # SAPAAC, GWERPY # S"NULL", 
            # SAPREQ, GWERPY # S"NULL", 
            # SAP,    GWERPY # S"NULL", 
            # CONAAC, GWERPY # S"NULL", 
            # CONREQ, GWERPY # S"ITACFAIL", 
            # COHALF, GWERPY # S"NULL", 
            # CONN,   GWERPY # S"NULL", 
            # AACP,   GWERPY # S"NULL", 
            # AACRQ,  GWERPY # S"NULL", 
            # CLOSE,  GWERPY # S"NULL", 
            # SCLOS,  GWERPY # S"NULL", 
            # PASS,   GWERPY # S"NULL", 
            # ABORT,  GWERPY # S"NULL" ]
  
          [ # IDLE,   GWNRPY # S"NULL", 
            # SAPAAC, GWNRPY # S"NULL", 
            # SAPREQ, GWNRPY # S"ITCONCMP", 
            # SAP,    GWNRPY # S"NULL", 
            # CONAAC, GWNRPY # S"NULL", 
            # CONREQ, GWNRPY # S"ITPASVCONE", 
            # COHALF, GWNRPY # S"NULL", 
            # CONN,   GWNRPY # S"NULL", 
            # AACP,   GWNRPY # S"NULL", 
            # AACRQ,  GWNRPY # S"NULL", 
            # CLOSE,  GWNRPY # S"NULL", 
            # SCLOS,  GWNRPY # S"NULL", 
            # PASS,   GWNRPY # S"NULL", 
            # ABORT,  GWNRPY # S"NULL" ]
  
          [ # IDLE,   ABNRPY # S"NULL", 
            # SAPAAC, ABNRPY # S"NULL", 
            # SAPREQ, ABNRPY # S"NULL", 
            # SAP,    ABNRPY # S"NULL", 
            # CONAAC, ABNRPY # S"NULL", 
            # CONREQ, ABNRPY # S"NULL", 
            # COHALF, ABNRPY # S"NULL", 
            # CONN,   ABNRPY # S"NULL", 
            # AACP,   ABNRPY # S"NULL", 
            # AACRQ,  ABNRPY # S"NULL", 
            # CLOSE,  ABNRPY # S"NULL", 
            # SCLOS,  ABNRPY # S"NULL", 
            # PASS,   ABNRPY # S"NULL", 
            # ABORT,  ABNRPY # S"ITCONABS" ]
  
          [ # IDLE,   CSNRPY # S"NULL", 
            # SAPAAC, CSNRPY # S"NULL", 
            # SAPREQ, CSNRPY # S"NULL", 
            # SAP,    CSNRPY # S"NULL", 
            # CONAAC, CSNRPY # S"NULL", 
            # CONREQ, CSNRPY # S"NULL", 
            # COHALF, CSNRPY # S"NULL", 
            # CONN,   CSNRPY # S"NULL", 
            # AACP,   CSNRPY # S"NULL", 
            # AACRQ,  CSNRPY # S"NULL", 
            # CLOSE,  CSNRPY # S"NULL", 
            # SCLOS,  CSNRPY # S"NULL", 
            # PASS,   CSNRPY # S"NULL", 
            # ABORT,  CSNRPY # S"NULL" ]
  
          [ # IDLE,   NSERR  # S"NULL", 
            # SAPAAC, NSERR  # S"NULL", 
            # SAPREQ, NSERR  # S"ITCONBKN", 
            # SAP,    NSERR  # S"ITCONBKN", 
            # CONAAC, NSERR  # S"NULL", 
            # CONREQ, NSERR  # S"ITCONBKN", 
            # COHALF, NSERR  # S"ITCONBKN", 
            # CONN,   NSERR  # S"ITCONBKN", 
            # AACP,   NSERR  # S"NULL", 
            # AACRQ,  NSERR  # S"ITCONBKN", 
            # CLOSE,  NSERR  # S"ITCONBKN", 
            # SCLOS,  NSERR  # S"ITCONBKN", 
            # PASS,   NSERR  # S"ITCONBKN", 
            # ABORT,  NSERR  # S"ITCONBKN" ]
  
          [ # IDLE,   NSCONN # S"NULL", 
            # SAPAAC, NSCONN # S"NULL", 
            # SAPREQ, NSCONN # S"NULL", 
            # SAP,    NSCONN # S"NULL", 
            # CONAAC, NSCONN # S"NULL", 
            # CONREQ, NSCONN # S"NULL", 
            # COHALF, NSCONN # S"NULL", 
            # CONN,   NSCONN # S"NULL", 
            # AACP,   NSCONN # S"ITGWCONCMP", 
            # AACRQ,  NSCONN # S"NULL", 
            # CLOSE,  NSCONN # S"NULL", 
            # SCLOS,  NSCONN # S"NULL", 
            # PASS,   NSCONN # S"NULL", 
            # ABORT,  NSCONN # S"NULL" ]
  
          [ # IDLE,   NRGWCC # S"NULL", 
            # SAPAAC, NRGWCC # S"NULL", 
            # SAPREQ, NRGWCC # S"NULL", 
            # SAP,    NRGWCC # S"NULL", 
            # CONAAC, NRGWCC # S"NULL", 
            # CONREQ, NRGWCC # S"NULL", 
            # COHALF, NRGWCC # S"NULL", 
            # CONN,   NRGWCC # S"NULL", 
            # AACP,   NRGWCC # S"NULL", 
            # AACRQ,  NRGWCC # S"NULL", 
            # CLOSE,  NRGWCC # S"NULL", 
            # SCLOS,  NRGWCC # S"NULL", 
            # PASS,   NRGWCC # S"NULL", 
            # ABORT,  NRGWCC # S"NULL" ]
  
          [ # IDLE,   NRSDD  # S"NULL", 
            # SAPAAC, NRSDD  # S"NULL", 
            # SAPREQ, NRSDD  # S"NULL", 
            # SAP,    NRSDD  # S"NULL", 
            # CONAAC, NRSDD  # S"NULL", 
            # CONREQ, NRSDD  # S"NULL", 
            # COHALF, NRSDD  # S"NULL", 
            # CONN,   NRSDD  # S"NULL", 
            # AACP,   NRSDD  # S"NULL", 
            # AACRQ,  NRSDD  # S"NULL", 
            # CLOSE,  NRSDD  # S"NULL", 
            # SCLOS,  NRSDD  # S"NULL", 
            # PASS,   NRSDD  # S"NULL", 
            # ABORT,  NRSDD  # S"NULL" ]
  
          [ # IDLE,   NRRDD  # S"NULL", 
            # SAPAAC, NRRDD  # S"NULL", 
            # SAPREQ, NRRDD  # S"NULL", 
            # SAP,    NRRDD  # S"NULL", 
            # CONAAC, NRRDD  # S"NULL", 
            # CONREQ, NRRDD  # S"NULL", 
            # COHALF, NRRDD  # S"NULL", 
            # CONN,   NRRDD  # S"NULL", 
            # AACP,   NRRDD  # S"NULL", 
            # AACRQ,  NRRDD  # S"NULL", 
            # CLOSE,  NRRDD  # S"NULL", 
            # SCLOS,  NRRDD  # S"NULL", 
            # PASS,   NRRDD  # S"NULL", 
            # ABORT,  NRRDD  # S"NULL" ]
  
          [ # IDLE,   NSNOD  # S"NULL", 
            # SAPAAC, NSNOD  # S"NULL", 
            # SAPREQ, NSNOD  # S"NULL", 
            # SAP,    NSNOD  # S"NULL", 
            # CONAAC, NSNOD  # S"NULL", 
            # CONREQ, NSNOD  # S"NULL", 
            # COHALF, NSNOD  # S"NULL", 
            # CONN,   NSNOD  # S"ITNODATA", 
            # AACP,   NSNOD  # S"NULL", 
            # AACRQ,  NSNOD  # S"NULL", 
            # CLOSE,  NSNOD  # S"NULL", 
            # SCLOS,  NSNOD  # S"NULL", 
            # PASS,   NSNOD  # S"NULL", 
            # ABORT,  NSNOD  # S"NULL" ]
  
          [ # IDLE,   NSICN  # S"ITINCON",
            # SAPAAC, NSICN  # S"NULL", 
            # SAPREQ, NSICN  # S"NULL", 
            # SAP,    NSICN  # S"NULL", 
            # CONAAC, NSICN  # S"NULL", 
            # CONREQ, NSICN  # S"NULL", 
            # COHALF, NSICN  # S"NULL", 
            # CONN,   NSICN  # S"NULL", 
            # AACP,   NSICN  # S"NULL", 
            # AACRQ,  NSICN  # S"NULL", 
            # CLOSE,  NSICN  # S"NULL", 
            # SCLOS,  NSICN  # S"NULL", 
            # PASS,   NSICN  # S"NULL", 
            # ABORT,  NSICN  # S"NULL" ]
  
          [ # IDLE,   FCREL  # S"NULL", 
            # SAPAAC, FCREL  # S"NULL", 
            # SAPREQ, FCREL  # S"NULL", 
            # SAP,    FCREL  # S"NULL", 
            # CONAAC, FCREL  # S"NULL", 
            # CONREQ, FCREL  # S"NULL", 
            # COHALF, FCREL  # S"NULL", 
            # CONN,   FCREL  # S"ITFCREL",
            # AACP,   FCREL  # S"NULL", 
            # AACRQ,  FCREL  # S"NULL", 
            # CLOSE,  FCREL  # S"NULL", 
            # SCLOS,  FCREL  # S"NULL", 
            # PASS,   FCREL  # S"NULL", 
            # ABORT,  FCREL  # S"NULL" ]];
  
  
        END # TCP$ST$TBL #
  
# 
*     TCP GATEWAY PRIMITIVE TABLE.
* 
*     THIS TABLE CONTAINS, FOR EACH PRIMITIVE, THE FOLLOWING ITEMS: 
*       1. PRIMITIVE IDENTIFIER 
*       2. EVENT ASSOCIATED WITH THIS PRIMITIVE 
*       3. MAXIMUM SIZE OF PRIMITIVE IN WORDS (HEADER + DATA) 
# 
  
  
      ARRAY GWT$TABLE [0:GWT$TAB$MX] S(GWT$TAB$SZ); 
        BEGIN # GWT$TABLE # 
  
# 
*       PRIMITIVE IDENTIFIER. 
# 
  
        ITEM GWT$TAB$ID  U(00,00,60) = [
  
          # TCPA   # GW$ID$TA,
          # TCPAC  # GW$ID$TAC, 
          # TCPACC # GW$ID$TACC,
          # TCPCS  # GW$ID$TCS, 
          # TCPD   # GW$ID$TD,
          # TCPOS  # GW$ID$TOS, 
          # TCPPC  # GW$ID$TPC, 
          # TCPS   # GW$ID$TS,
          # TCPSD  # GW$ID$TSD, 
          # TCPABI # GW$ID$TABI,
          # TCPCI  # GW$ID$TCI, 
          # TCPCSI # GW$ID$TCSI,
          # TCPDC  # GW$ID$TDC, 
          # TCPDI  # GW$ID$TDI, 
          # TCPEI  # GW$ID$TEI, 
          # TCPFCI # GW$ID$TFCI,
          # TCPR   # GW$ID$TR,
          # TCPUDI # GW$ID$UDI ]; 
  
# 
*       EVENT ASSOCIATED WITH THIS PRIMITIVE. 
# 
  
        ITEM GWT$TAB$EV I(01,00,60) = [ 
  
          # TCPA   # TCE$CDS"TCE$RQINFO", 
          # TCPAC  # TCE$CDS"TCE$RQACON", 
          # TCPACC # TCE$CDS"TCE$RQABT",
          # TCPCS  # TCE$CDS"TCE$RQCSAP", 
          # TCPD   # TCE$CDS"TCE$RQDCON", 
          # TCPOS  # TCE$CDS"TCE$RQOSAP", 
          # TCPPC  # TCE$CDS"TCE$RQPCON", 
          # TCPS   # TCE$CDS"TCE$RQINFO", 
          # TCPSD  # TCE$CDS"TCE$RQDATA", 
          # TCPABI # TCE$CDS"TCE$INABT",
          # TCPCI  # TCE$CDS"TCE$INCON",
          # TCPCSI # TCE$CDS"TCE$INCSAP", 
          # TCPDC  # TCE$CDS"TCE$INDCON", 
          # TCPDI  # TCE$CDS"TCE$INDISC", 
          # TCPEI  # TCE$CDS"TCE$INERR",
          # TCPFCI # TCE$CDS"TCE$INFLON", 
          # TCPR   # TCE$CDS"TCE$ININFO", 
          # TCPUDI # TCE$CDS"TCE$ININFO" ]; 
  
# 
*       MAXIMUM SIZE OF PRIMITIVE IN WORDS (HEADER + DATA)
# 
  
        ITEM GWT$TAB$PS U(02,00,60) = [ 
  
          # TCPA   # GW$HL$TA,
          # TCPAC  # GW$HL$TAC, 
          # TCPACC # GW$HL$TACC,
          # TCPCS  # GW$HL$TCS, 
          # TCPD   # GW$HL$TD,
          # TCPOS  # GW$HL$TOS, 
          # TCPPC  # GW$HL$TPC, 
          # TCPS   # GW$HL$TS,
          # TCPSD  # GW$HL$TSD, 
          # TCPABI # GW$HL$TABI,
          # TCPCI  # GW$HL$TCI, 
          # TCPCSI # GW$HL$TCSI,
          # TCPDC  # GW$HL$TDC, 
          # TCPDI  # GW$HL$TDI, 
          # TCPEI  # GW$HL$TEI, 
          # TCPFCI # GW$HL$TFCI,
          # TCPR   # GW$HL$TR,
          # TCPUDI # GW$HL$UDI  ];
  
        END # GWT$TABLE # 
  
                                               CONTROL EJECT; 
  
      ITEM ACTION     S:TCA$CDS;     # RESULTING ACTION FROM EVENT    # 
      ITEM CACN       I;             # ACN FOR THE CURRENT CONNECTION # 
      ITEM CCT$       U;             # CONNECTION TABLE ENTRY NUMBER  # 
      ITEM CEPID      I;             # CEPID FOR THIS CONNECTION      # 
      ITEM EVENT      S:TCE$CDS;     # CURRENT EVENT TO PROCESS       # 
      ITEM LOOP       I;             # LOOP INDEX                     # 
      ITEM NWORDS     I;             # WORD COUNT OF HEADER           # 
      ITEM SAPID      I;             # SAPID FOR THIS CONNECTION      # 
      ITEM TABLE$NDX  I;             # INDEX FOR PRIMITIVE HDDR SEARCH# 
      ITEM TCPSTATE   S:TCS$CDS;     # STATE OF CURRENT CONNECTION    # 
  
      ARRAY BADIND [00:00] S(4);     # BAD INDICATION MESSAGE         # 
        BEGIN 
        ITEM BADIN   C(00,00,30) =
          [" FFSLTIP - BAD NAM INDICATION "]; 
        ITEM BADZB0  U(03,00,60) = [0]; 
        END 
  
      ARRAY BADPRIM [00:00] S(4);    # BAD PRIMITIVE MESSAGE          # 
        BEGIN 
        ITEM BADPRM  C(00,00,30) =
          [" FFSLTIP - UNKNOWN PRIMITIVE  "]; 
        ITEM BADZB1  U(03,00,60) = [0]; 
        END 
  
      ARRAY BADREQ [00:00] S(4);     # BAD REQUEST MESSAGE            # 
        BEGIN 
        ITEM BADRQ   C(00,00,30) =
          [" FFSLTIP - BAD CN MGT REQUEST "]; 
        ITEM BADZB2  U(03,00,60) = [0]; 
        END 
  
      ARRAY BADACN [00:00] S(4);     # BAD ACN IN PRIMITIVE HEADER    # 
        BEGIN 
        ITEM BADAC   C(00,00,31) =
          [" FFSLTIP - BAD ACN IN PRIMITIVE"];
        ITEM BADZB3  U(03,06,54) = [0]; 
        END 
  
      BASED ARRAY DATABUFF [0:0] S(1);
        BEGIN 
        ITEM DATABYT0  U(00,00,08);  # BYTE 0 OF DATA                 # 
        ITEM DATAREM   U(00,08,52);  # REMAINDER OF WORD              # 
        END 
  
      ARRAY STTBABT [00:00] S(8);     # STATE TABLE ABORT MESSAGE      #
        BEGIN 
        ITEM ABT$STUB  C(00,00,10) = [" FFSLTIP -"];
        ITEM ABT$MSG   C(01,00,20) = [" STTB HANDLER ABORTS"];
        ITEM ABT$ST    C(03,00,10) = [", STATE = "];
        ITEM ABT$STCD  C(04,00,10); 
        ITEM ABT$TRG   C(05,00,10) = [", TRIG = "]; 
        ITEM ABT$TRGCD C(06,00,10); 
        ITEM ABT$END   U(07,00,60) = [0]; 
        END 
  
      ARRAY PRIML  [00:00] S(4);     # BAD PRIMITIVE LENGTH MESSAGE   # 
        BEGIN 
        ITEM PRMLEN  C(00,00,31) =
          [" FFSLTIP - BAD PRIMITIVE LENGTH"];
        ITEM PRMZB2  U(03,06,54) = [0]; 
        END 
  
      ARRAY FFSITIHMAP [INAM"ININCON" : INAM"INNODATA"] S(1); 
        BEGIN 
        ITEM IND$MAP U(00,00,60) =
          [ # ININCON    # TCE$CDS"TCE$NSICN",
            # INCONBKN   # TCE$CDS"TCE$NSERR",
            # INCONCMP   # TCE$CDS"TCE$NSCONN", 
            # INFCREL    # TCE$CDS"TCE$FCREL",
            # INDATAV    # TCE$CDS"TCE$ININFO", 
            # INSHUTDN   # TCE$CDS"TCE$NSERR",
            # INIDLEDN   # TCE$CDS"TCE$NSERR",
            # INNODATA   # TCE$CDS"TCE$NSNOD" ];
         END
  
      ARRAY TCP$REQMAP [RTCP"RTOPENSAP" : RTCP"RTABTDAT"] S(1); 
        BEGIN 
        ITEM REQ$MAP U(00,00,60) =
          [ # RTOPENSAP  # TCE$CDS"TCE$RQOSAP", 
            # RTCONGW    # TCE$CDS"TCE$NRGWCC", 
            # RTIACON    # TCE$CDS"TCE$RQACON", 
            # RTIPCON    # TCE$CDS"TCE$RQPCAA", 
            # RTIPCONO   # TCE$CDS"TCE$RQPCON", 
            # RTSENDAT   # TCE$CDS"TCE$RQDATA", 
            # RTCLSCON   # TCE$CDS"TCE$RQDCON", 
            # RTSDATAD   # TCE$CDS"TCE$NRSDD",
            # RTRDATAD   # TCE$CDS"TCE$NRRDD",
            # RTABTDAT   # TCE$CDS"TCE$RQABT" ];
         END
  
      SWITCH ACTION$SW : TCA$CDS     # ACTION SWITCH                  # 
        TCA$SAPAAC : TCA$SAPAAC,
        TCA$SAPSET : TCA$SAPSET,
        TCA$CONAAC : TCA$CONAAC,
        TCA$CONSET : TCA$CONSET,
        TCA$SENDOS : TCA$SENDOS,
        TCA$SENDCS : TCA$SENDCS,
        TCA$SENDAC : TCA$SENDAC,
        TCA$SENDPC : TCA$SENDPC,
        TCA$SENDACC: TCA$SENDACC, 
        TCA$SENDD  : TCA$SENDD, 
        TCA$SENDA  : TCA$SENDA, 
        TCA$SENDSD : TCA$SENDSD,
        TCA$NREPLY : TCA$NREPLY,
        TCA$EREPLY : TCA$EREPLY,
        TCA$INDIC  : TCA$INDIC, 
        TCA$NOOP   : TCA$NOOP,
        TCA$ABORT  : TCA$ABORT, 
        TCA$NETERR : TCA$NETERR,
        TCA$SINDIC : TCA$SINDIC,
        TCA$LSTOFF : TCA$LSTOFF,
        TCA$LSTON  : TCA$LSTON, 
        END$CASE   : TCA$END; 
  
      CONTROL EJECT;
      CONTROL FTNCALL;
  
#*****INDICATIONS ENTRY POINT*****                                    # 
  
# 
*     CALL *FFSUWTB* TO WRITE THE INDICATION BLOCK TO 
*     THE CIRCULAR TRACE BUFFER *CTB*.
# 
      BTYPE = IND$; 
      LNAME = S"LTCP";
      FFSUWTB;
  
# 
*     GENERATE A TRIGGER (EVENT) FROM THE INDICATION SUPPLIED.
* 
*     NOTE THAT SOME INDICATIONS CAN TRANSLATE DIRECTLY TO A TRIGGER
*     WHILST OTHERS MAY NEED FURTHER INVESTIGATION BEFORE GENERATING
*     A TRIGGER (EG DATA BLOCKS). 
# 
  
      IF     (IND$ICODE [INAMTCP$] GR INAM"NULL") 
         AND (IND$ICODE [INAMTCP$] LS INAM"INMAX")
      THEN
        BEGIN                        # CONVERT INDICATION TO TRIGGER  # 
        EVENT =  IND$MAP [IND$ICODE [INAMTCP$]];
        END 
      ELSE
        BEGIN 
        FFSEABT (BADIND);            # DAYFILE ERROR MSG THEN ABORT   # 
        END 
  
# 
*     TAKE CARE OF NON-DIRECT TRANSLATIONS... 
# 
  
      IF IND$ICODE[INAMTCP$] EQ INAM"INSHUTDN"
      THEN                           # NAM SHUTDOWN                   # 
        BEGIN 
        IND$ICODE[ITCPCM$] = ITCP"ITSHUTDN";
        RETURN; 
        END 
  
      IF IND$ICODE[INAMTCP$] EQ INAM"INIDLEDN"
      THEN                           # NAM IDLEDOWN                   # 
        BEGIN 
        IND$ICODE[ITCPCM$] = ITCP"ITIDLEDN";
        RETURN; 
        END 
  
      CCT$ = IND$CTYPE [INAMTCP$];   # GET CN TABLE ENTRY TO USE      # 
  
# 
*     IF DATA AVAILABLE, NEED TO DETERMINE IF IS GENUINE DATA OR A
*     TCP HEADER (DATA, INDICATION, RESPONSE). USE M AND Q BITS TO DO 
*     THIS... 
# 
  
      IF IND$ICODE[INAMTCP$] EQ INAM"INDATAV" 
      THEN
        BEGIN                        # DATA AVAILABLE INDICATION      # 
        IF IND$Q[INAMTCP$]
         AND
           NOT ACN$INCMSG[CCT$] 
        THEN
          BEGIN                      # PREV COMPLETE & Q-BIT SET      # 
          P<GW$HEADER> = IND$ADDR[INAMTCP$];
          TABLE$NDX = -1; 
                                     CONTROL SLOWLOOP;
          FOR LOOP = 0 STEP 1 
            WHILE (TABLE$NDX EQ -1) AND 
                  (LOOP LQ GWT$TAB$MX)
          DO
            BEGIN 
            IF GWT$TAB$ID[LOOP] EQ GW$IDENT 
            THEN
              BEGIN 
              TABLE$NDX = LOOP; 
              END 
  
            END                      # LOOP                           # 
  
# 
*         IF PRIMITIVE NOT FOUND... 
# 
  
          IF TABLE$NDX EQ -1
          THEN
            BEGIN 
            FFSEABT (BADPRIM);       # DAYFILE ERROR MSG THEN ABORT   # 
            END 
  
# 
*         ELSE PRIMITIVE IS VALID.
# 
  
          ELSE
            BEGIN                    # VALID PRIMITIVE                # 
            EVENT = GWT$TAB$EV[TABLE$NDX];
            DN$T$IDENT = TABLE$NDX; 
  
# 
*           VALIDATE PRIMITIVE LENGTH 
# 
  
            NWORDS = INT (((8 * GW$HDR$LEN) + 59) / 60.0);
            IF NWORDS NQ GWT$TAB$PS [TABLE$NDX] 
             OR 
               IND$LEN[INAMTCP$] LS GW$HDR$LEN
             OR 
              (IND$M[INAMTCP$] AND GW$IDENT NQ GW$ID$TR)
            THEN
              BEGIN 
              FFSEABT (PRIML);       # DAYFILE ERROR MSG THEN ABORT   # 
              END 
  
# 
*           SET APPROPRIATE EVENT IF HEADER IS A REPLY FROM THE G/W 
*           SET ACN N0./CCT TO USE FROM HEADER. 
# 
  
            ELSE
              BEGIN                  # PRIMITIVE LENGTH VALID         # 
              IF GW$HDR$TYP EQ 1
              THEN
                BEGIN                # HEADER IS A REPLY              # 
                IF GW$IDENT NQ GW$ID$TCS
                 AND
                   GW$IDENT NQ GW$ID$TOS
                THEN
                  BEGIN              # REPLY NOT FOR SAP              # 
                  IF GW$IDENT EQ GW$ID$TAC
                   OR 
                     GW$IDENT EQ GW$ID$TPC
                  THEN
                    BEGIN 
                    CACN = GW$TAC$ICI;
                    END 
                  ELSE
                    BEGIN 
                    CACN = GW$TA$ICI; 
                    END 
                  TABLE$NDX = -1; 
                                     CONTROL SLOWLOOP;
                  FOR LOOP = 0 STEP 1 
                    WHILE TABLE$NDX EQ -1 AND 
                          LOOP LQ NCONNECT$ 
                  DO
                    BEGIN            # FIND CCT ENTRY                 # 
                    IF CACN EQ ACN$ACN[LOOP]
                    THEN
                      BEGIN 
                      TABLE$NDX = LOOP; 
                      END 
                    END              # LOOP                           # 
                  IF TABLE$NDX EQ -1
                  THEN
                    BEGIN 
                    FFSEABT (BADACN);   # DAYFILE ERROR MSG THEN ABORT# 
                    END 
                  ELSE
                    BEGIN 
                    CCT$ = TABLE$NDX; 
                    END 
                  END                # REPLY NOT FOR SAP              # 
  
                IF GW$STATUS EQ 0 
                THEN
                  BEGIN               # NORMAL STATUS                 # 
                  IF GW$IDENT EQ GW$ID$TCS
                  THEN
                    BEGIN             # EVENT = C/SAP REPLY           # 
                    EVENT = TCE$CDS"TCE$CSNRPY";
                    END               # EVENT = C/SAP REPLY           # 
                  ELSE
                    BEGIN             # EVENT NOT = C/SAP REPLY       # 
                    IF GW$IDENT EQ GW$ID$TACC 
                    THEN
                      BEGIN           # EVENT = TCPACC REPLY          # 
                      EVENT = TCE$CDS"TCE$ABNRPY";
                      END 
                    ELSE
                      BEGIN 
                      EVENT = TCE$CDS"TCE$GWNRPY";
                      END 
                    END               # EVENT NOT = C/SAP REPLY       # 
                  END                 # NORMAL STATUS                 # 
                ELSE
                  BEGIN               # ERROR STATUS                  # 
                  EVENT = TCE$CDS"TCE$GWERPY";
                  END 
                END                  # HEADER IS A REPLY              # 
  
# 
*             HEADER IS DATA OR INDICATION. 
*             SET ACN NO./CCT TO USE FROM HEADER. 
# 
  
              ELSE
                BEGIN                # HEADER IS DATA OR INDICATION   # 
                IF GW$IDENT NQ GW$ID$TCSI 
                THEN
                  BEGIN              # HEADER NOT FOR SAP             # 
                  CACN = GW$TR$ICI; 
                  TABLE$NDX = -1; 
                                     CONTROL SLOWLOOP;
                  FOR LOOP = 0 STEP 1 
                    WHILE TABLE$NDX EQ -1 AND 
                          LOOP LQ NCONNECT$ 
                  DO
                    BEGIN            # FIND CCT ENTRY                 # 
                    IF CACN EQ ACN$ACN[LOOP]
                    THEN
                      BEGIN 
                      TABLE$NDX = LOOP; 
                      END 
                    END              # LOOP                           # 
  
                  IF TABLE$NDX EQ -1
                   OR 
                    (TABLE$NDX NQ CTYPE"CTSAP"
                      AND 
                     TABLE$NDX NQ IND$CTYPE[INAMTCP$])
                  THEN
                    BEGIN 
                    FFSEABT (BADACN);   # BAD ACN IN CONNECTION       # 
                    END 
                  ELSE
                    BEGIN 
                    CCT$ = TABLE$NDX; 
                    END 
                  END                # HEADER NOT FOR SAP             # 
  
                IF IND$M[INAMTCP$]
                THEN
                  BEGIN              # M BIT SET - MUST BE DATA       # 
  
# 
*                 CHECK FOR TELNET OPTION NEGOTIATION ON CONTROL CN.
*                 TRASH ANY BLOCK WITH THESE CHARACTERS...
# 
  
                  IF CCT$ EQ CTYPE"CTCTRL"
                  THEN
                    BEGIN 
                    P<DATABUFF> = IND$ADDR[INAMTCP$] + NWORDS;
                    IF DATABYT0[0] EQ TN$IAC
                    THEN
                      BEGIN 
                      IND$ICODE[ITCPCM$] = ITCP"NULL";
                      RETURN; 
                      END 
                    END 
  
                  ACN$INCMSG [IND$CTYPE[INAMTCP$]] = TRUE;
                  ACN$TURGNT [IND$CTYPE[INAMTCP$]] = GW$TR$URG; 
                  GW$DAT$LEN = IND$LEN[INAMTCP$] - GW$HDR$LEN;
                  END                # DATA IS DATA HEADER            # 
  
                DN$T$DOFF = NWORDS; 
                END                  # DATA IS DATA OR INDICATION     # 
  
              IND$CTYPE[INAMTCP$] = CCT$; # RESET INDIC C/TYPE IN CASE
                                            CCT WAS CHANGED           # 
              END                    # PRIMITIVE LENGTH IS VALID      # 
  
            END                      # PRIMITIVE IS VALID             # 
  
          END                        # PREVIOUS COMPL & Q BIT SET     # 
  
# 
*       ELSE THIS BLOCK IS DATA ONLY, WITH NO HEADER. 
# 
  
        ELSE
          BEGIN                      # BLOCK IS DATA ONLY             # 
  
# 
*         CHECK FOR TELNET OPTION NEGOTIATION ON CONTROL CONNECTION.
*         TRASH ANY BLOCK WITH THESE CHARACTERS...
# 
  
          IF CCT$ EQ CTYPE"CTCTRL"
          THEN
            BEGIN 
            P<DATABUFF> = IND$ADDR[INAMTCP$]; 
            IF DATABYT0[0] EQ TN$IAC
            THEN
              BEGIN 
              IND$ICODE[ITCPCM$] = ITCP"NULL";
              RETURN; 
              END 
            END 
  
          IF ACN$INCMSG[CCT$] 
          THEN
            BEGIN 
            IF IND$M[INAMTCP$]
            THEN
              BEGIN 
              ACN$INCMSG[CCT$] = TRUE;
              END 
            ELSE
              BEGIN 
              ACN$INCMSG[CCT$] = FALSE; 
              END 
  
            END                      # IF PREVIOUS BLOCK INCOMPLETE   # 
          ELSE
            BEGIN 
            ACN$TURGNT[CCT$] = FALSE; 
            END                      # IF PREVIOUS BLOCK COMPLETE     # 
  
          DN$T$IDENT = TCI$ID"TCI$R"; 
          EVENT = TCE$CDS"TCE$ININFO";
          DN$T$DOFF = 0;             # SET BLOCK OFFSET TO 0          # 
  
          END                        # BLOCK IS DATA ONLY             # 
  
        END                          # DATA AVAILABLE INDICATION      # 
  
      GOTO FFSPROCESS;
  
#*****REQUESTS ENTRY POINT*****                                       # 
  
      ENTRY PROC FFSLTRP; 
  
# 
*     CALL *FFSUWTB* TO WRITE THE REQUEST BLOCK TO
*     THE CIRCULAR TRACE BUFFER *CTB*.
# 
      BTYPE = REQ$; 
      LNAME = S"LTCP";
      FFSUWTB;
  
      CCT$ = REQ$CTYPE [RCMTCP$];    # GET CN TABLE ENTRY TO USE      # 
  
# 
*     GENERATE A TRIGGER (EVENT) FROM THE REQUEST SUPPLIED. 
* 
*     NOTE THAT SOME REQUESTS CAN TRANSLATE DIRECTLY TO A TRIGGER 
*     WHILST OTHERS MAY NEED FURTHER INVESTIGATION BEFORE GENERATING
*     A TRIGGER.
# 
  
      IF REQ$RCODE [RCMTCP$] LS RTCP"RTMAX" 
       AND
         REQ$RCODE [RCMTCP$] GR RTCP"NULL"
      THEN
        BEGIN                        # CONVERT REQUEST TO TRIGGER     # 
        EVENT =  REQ$MAP [REQ$RCODE [RCMTCP$]]; 
        END 
      ELSE
        BEGIN 
        FFSEABT (BADREQ);            # DAYFILE ERROR MSG THEN ABORT   # 
        END 
  
# 
*     VALIDATE/SET CONNECTION TYPE WHERE NECESSARY
# 
  
      IF REQ$RCODE[RCMTCP$] EQ RTCP"RTOPENSAP"
      THEN
        BEGIN                        # OPEN SAP REQUEST               # 
        REQ$CTYPE [RCMTCP$] = CTYPE"CTSAP"; 
        CCT$ = CTYPE"CTSAP";
        END 
      IF REQ$RCODE[RCMTCP$] EQ RTCP"RTABTDAT" 
      THEN
        BEGIN                        # ABORT DATA CN REQUEST          # 
        REQ$CTYPE [RCMTCP$] = CTYPE"CTDATA";
        CCT$ = CTYPE"CTDATA"; 
        END 
  
FFSPROCESS: 
  
# 
*     SET ACTION TO STATE_TABLE [STATE, EVENT]. 
*     SET LOCAL STATE TABLE VALUES (ACTION/EVENT/NEW STATE/INDICATION)
# 
  
      TCPSTATE = ACN$TCSTAT [CCT$];  # GET CN'S TCP STATE             # 
      CACN = ACN$ACN[CCT$];          # GET CN NUMBER                  # 
      ACTION     = TCP$ST$ACT [TCPSTATE, EVENT];
      DN$T$ACT   = ACTION;
      DN$T$EVENT = EVENT; 
      DN$T$NEXT  = TCP$ST$NXT [TCPSTATE, EVENT];
      IND$ICODE[ITCPCM$] = TCP$ST$IND [TCPSTATE, EVENT];
  
# 
*     CASE ACTION OF
# 
  
      GOTO ACTION$SW [ACTION];
  
TCA$SAPAAC: 
  
# 
*     CALL THE NAM LAYER TO INITIATE AN A-A CONNECTION TO THE TCP G/W.
# 
      REQ$RCODE[RTCPNAM$] = RNAM"RNINCON";
      REQ$CTYPE[RTCPNAM$] = CTYPE"CTSAP"; 
      REQ$LEN[RTCPNAM$] = 0;
      REQ$ADDR[RTCPNAM$] = 0; 
      FFSLNLH;
      GOTO END$CASE;
  
TCA$SAPSET: 
  
# 
*     SET SAPID FROM GATEWAY INTO CCT ENTRY.
*     INDICATION ALREADY SET - SET TYPE FIELD.
# 
  
      P<GW$HEADER> = IND$ADDR[INAMTCP$]; # POINT GW HEADER            # 
      ACN$TSAPID[CCT$] = GW$TOS$DSI;
      IND$CTYPE[ITCPCM$] = CTYPE"CTSAP";
      GOTO END$CASE;
  
TCA$CONAAC: 
  
# 
*     ISSUE A-A CONNECTION REQUEST TO NAM LAYER.
# 
  
      REQ$RCODE[RTCPNAM$] = RNAM"RNINCON";
      REQ$CTYPE[RTCPNAM$] = REQ$CTYPE[RCMTCP$]; 
      REQ$LEN[RTCPNAM$] = 0;
      REQ$ADDR[RTCPNAM$] = 0; 
      FFSLNLH;
      GOTO END$CASE;
  
TCA$CONSET: 
  
# 
*     SET TCP-ASSIGNED CEPID AND SOURCE ADDRESS INTO CCT ENTRY. 
*     INDICATION TO NEXT LAYER ALREADY SET. MUST BE CLEARED IF NOT
*     FOR PASSIVE CONNECT. (BOTH AC AND PC COME THRU HERE). 
# 
  
      P<GW$HEADER>           = IND$ADDR[INAMTCP$]; # POINT GW HEADER #
      ACN$TCEPID[CCT$]       = GW$TAC$DCI;
        P<GW$TCP$SAD>        = LOC(GW$TAC$SRC); 
          P<GW$IP$SAD>       = LOC(GW$TSAD$AD); 
            ACN$SIPFIU[CCT$] = GW$ISAD$FU;
            ACN$SIPNET[CCT$] = GW$ISAD$NW;
            ACN$SIPHST[CCT$] = GW$ISAD$HS;
          ACN$STCPIU[CCT$]   = GW$TSAD$PI;
          ACN$STCPRT[CCT$]   = GW$TSAD$PT;
  
      IF GW$IDENT EQ GW$ID$TAC
      THEN
        BEGIN 
        IND$ICODE[ITCPCM$]   = ITCP"NULL";
        END 
      ELSE
        BEGIN 
        IND$CTYPE[ITCPCM$]   = CCT$;
        END 
  
      GOTO END$CASE;
  
TCA$SENDOS: 
  
# 
*     SET UP OPEN SAP HEADER. 
*     CALL FFSRSNC TO SEND OPEN SAP/CONNECTION REQUEST HEADER.
# 
  
      P<GW$HEADER> = LOC(OUTBUF);    # POINT GW HEADER                # 
      FFSUCLR(LOC(OUTBUF), GW$HL$TOS);
      GW$IDENT     = GW$ID$TOS;      # IDENTIFY HEADER                # 
      GW$HDR$TYP   = 0;              # SET HEADER TYPE                # 
      GW$DAT$LEN   = 0;              # SET DATA LENGTH                # 
      GW$HDR$LEN   = INT (GW$HL$TOS * 7.5); # SET HEADER LENGTH       # 
      GW$VERSION   = DGWVERSION;     # SET VERSION SO NO TCPSD REPLIES# 
      GW$STATUS    = 0; 
      GW$TOS$ISI   = 0; 
      REQ$Q[RTCPNAM$] = TRUE; 
      REQ$M[RTCPNAM$] = FALSE;
  
      FFSRSNC (CCT$, LOC(OUTBUF));
      GOTO END$CASE;
  
  
TCA$SENDCS: 
  
# 
*     SET UP CLOSE SAP HEADER.
*     CALL FFSLNLH TO SEND CLOSE SAP REQUEST BLOCK. 
# 
  
      P<GW$HEADER> = LOC(OUTBUF);    # POINT GW HEADER                # 
      FFSUCLR(LOC(OUTBUF), GW$HL$TCS);
      GW$IDENT     = GW$ID$TCS;      # IDENTIFY HEADER                # 
      GW$HDR$TYP   = 0;              # SET HEADER TYPE                # 
      GW$HDR$LEN   = INT (GW$HL$TCS * 7.5); # SET HEADER LENGTH       # 
      GW$DAT$LEN   = 0;              # SET DATA LENGTH                # 
      GW$STATUS    = 0; 
      GW$TCS$ISI   = 0; 
      REQ$Q[RTCPNAM$] = TRUE; 
      REQ$M[RTCPNAM$] = FALSE;
      REQ$RCODE[RTCPNAM$] = RNAM"RNSENDAT"; 
      REQ$CTYPE[RTCPNAM$] = CTYPE"CTSAP"; 
      REQ$LEN[RTCPNAM$] = GW$HDR$LEN + GW$DAT$LEN;
      REQ$ADDR[RTCPNAM$] = LOC(OUTBUF); 
  
      FFSLNLH;
      GOTO END$CASE;
  
TCA$SENDAC: 
  
# 
*     SET UP ACTIVE-CONNECT HEADER. 
*     CALL FFSRSNC TO SEND CONNECTION REQUEST HEADER. 
*     NOTE:- APPROPRIATE TCP SOURCE AND DESTINATION ADDRESSES ARE SET 
*            IN THE CALLING LAYER OR THE FTP LAYER. THE SOURCE IP 
*            ADDRESS AND VARIOUS DEFAULT PORT SETTINGS ARE DONE IN
*            INITIALISATION.
# 
  
      P<GW$HEADER> = LOC(OUTBUF);    # POINT GW HEADER                # 
      FFSUCLR(LOC(OUTBUF), GW$HL$TAC);
        GW$IDENT   = GW$ID$TAC;      # IDENTIFY HEADER                # 
        GW$HDR$TYP = 0;              # SET HEADER TYPE                # 
        GW$HDR$LEN = INT (GW$HL$TAC * 7.5); # SET HEADER LENGTH       # 
        GW$DAT$LEN = 0; 
        GW$STATUS  = 0; 
        GW$TAC$ALO = X"FFFF";        # INITIAL ALLOCATION             # 
        GW$TAC$PSH = ACN$PUSH[CCT$];
        GW$TAC$URG = FALSE; 
        GW$TAC$DSI = ACN$CSAPID[CCT$];
  
#     PACK SOURCE AND DESTINATION ADDRESSES INTO GATEWAY HEADER.      # 
      FFSUPAR (LOC (ACN$TDADDR[CCT$]), LOC (ACN$TSADDR[CCT$]),
               LOC (GW$TAC$DES), LOC (GW$TAC$SRC)); 
  
#     PACK IP HEADER                                                  # 
      P<GW$IP$HDR> = LOC(GW$TAC$IPH); 
        GW$IPHD$PR = 0; 
        GW$IPHD$DY = FALSE; 
        GW$IPHD$RE = FALSE; 
        GW$IPHD$TP = FALSE; 
        GW$IPHD$TT = 100; 
        GW$IPHD$PC = IP$TCP;
  
#     PACK IP OPTIONS                                                 # 
      P<GW$IP$OPT>  = LOC(GW$TAC$IPO);
      P<GW$SCURITY> = LOC(GW$IPOP$SE);
        GW$SCUR$IU  = FALSE;
      P<GW$STREAM>  = LOC(GW$IPOP$SI);
        GW$STRE$IU  = FALSE;
      P<GW$ROUTE>   = LOC(GW$IPOP$RO);
        GW$ROUT$IU  = FALSE;
      P<GW$TIMING>  = LOC(GW$IPOP$TM);
        GW$TIMG$IU  = FALSE;
  
#     SET ULP TIME-OUT                                                # 
      P<GW$ULP$TO>  = LOC(GW$TAC$UTO);
        GW$UTO$UTO  = ACN$TULPTO[CCT$]; 
        GW$UTO$TAB  = TRUE;          # ENSURES NO ERROR INDICNS. RECD.# 
  
      REQ$Q[RTCPNAM$] = TRUE; 
      REQ$M[RTCPNAM$] = FALSE;
  
      FFSRSNC (CCT$, LOC(OUTBUF));
      GOTO END$CASE;
  
  
TCA$SENDPC: 
  
# 
*     SET UP PASSIVE-CONNECT HEADER.
*     CALL FFSRSNC TO SEND CONNECTION REQUEST HEADER. 
*     NOTE:- APPROPRIATE TCP SOURCE AND DESTINATION ADDRESSES ARE SET 
*            IN THE CALLING LAYER OR THE FTP LAYER. THE SOURCE IP 
*            ADDRESS AND VARIOUS DEFAULT PORT SETTINGS ARE DONE IN
*            INITIALISATION.
# 
  
      P<GW$HEADER> = LOC(OUTBUF);    # POINT GW HEADER                # 
      FFSUCLR(LOC(OUTBUF), GW$HL$TPC);
        GW$IDENT   = GW$ID$TPC;      # IDENTIFY HEADER                # 
        GW$HDR$TYP = 0;              # SET HEADER TYPE                # 
        GW$HDR$LEN = INT (GW$HL$TPC * 7.5); # SET HEADER LENGTH       # 
        GW$DAT$LEN = 0; 
        GW$STATUS  = 0; 
        GW$TPC$ALO = X"FFFF";        # INITIAL ALLOCATION             # 
        GW$TPC$PSH = ACN$PUSH[CCT$];
        GW$TPC$URG = FALSE; 
        GW$TPC$DSI = ACN$CSAPID[CCT$];
  
#     PACK SOURCE AND DESTINATION ADDRESSES INTO GATEWAY HEADER.      # 
      FFSUPAR (LOC (ACN$TDADDR[CCT$]), LOC (ACN$TSADDR[CCT$]),
               LOC (GW$TAC$DES), LOC (GW$TAC$SRC)); 
  
#     PACK IP HEADER                                                  # 
      P<GW$IP$HDR> = LOC(GW$TAC$IPH); 
        GW$IPHD$PR = 0; 
        GW$IPHD$DY = FALSE; 
        GW$IPHD$RE = FALSE; 
        GW$IPHD$TP = FALSE; 
        GW$IPHD$TT = 100; 
        GW$IPHD$PC = IP$TCP;
  
#     PACK IP OPTIONS                                                 # 
      P<GW$IP$OPT>  = LOC(GW$TAC$IPO);
      P<GW$SCURITY> = LOC(GW$IPOP$SE);
        GW$SCUR$IU  = FALSE;
      P<GW$STREAM>  = LOC(GW$IPOP$SI);
        GW$STRE$IU  = FALSE;
      P<GW$ROUTE>   = LOC(GW$IPOP$RO);
        GW$ROUT$IU  = FALSE;
      P<GW$TIMING>  = LOC(GW$IPOP$TM);
        GW$TIMG$IU  = FALSE;
  
#     SET ULP TIME-OUT                                                # 
      P<GW$ULP$TO>  = LOC(GW$TAC$UTO);
        GW$UTO$UTO  = ACN$TULPTO[CCT$]; 
        GW$UTO$TAB  = TRUE; 
  
      REQ$Q[RTCPNAM$] = TRUE; 
      REQ$M[RTCPNAM$] = FALSE;
  
      FFSRSNC (CCT$, LOC(OUTBUF));
      GOTO END$CASE;
  
TCA$SENDACC:  
  
# 
*     SET UP ABORT HEADER.
*     CALL FFSLNLH TO SEND THE ABORT BLOCK. 
# 
  
      P<GW$HEADER> = LOC(OUTBUF);    # POINT GW HEADER                # 
      FFSUCLR(LOC(OUTBUF), GW$HL$TACC); 
      GW$IDENT     = GW$ID$TACC;     # IDENTIFY HEADER                # 
      GW$HDR$TYP   = 0;              # SET HEADER TYPE                # 
      GW$DAT$LEN   = 0;              # SET DATA LENGTH                # 
      GW$HDR$LEN   = INT (GW$HL$TACC * 7.5); # SET HEADER LENGTH      # 
      GW$VERSION   = DGWVERSION;     # SET VERSION SO NO TCPSD REPLIES# 
      GW$STATUS    = 0; 
      GW$TACC$IC   = ACN$CCEPID[CCT$];
      REQ$Q[RTCPNAM$] = TRUE; 
      REQ$M[RTCPNAM$] = FALSE;
      REQ$RCODE[RTCPNAM$] = RNAM"RNSENDAT"; 
      REQ$CTYPE[RTCPNAM$] = CCT$; 
      REQ$LEN[RTCPNAM$] = GW$HDR$LEN + GW$DAT$LEN;
      REQ$ADDR[RTCPNAM$] = LOC(OUTBUF); 
  
      FFSLNLH;
      GOTO END$CASE;
  
TCA$SENDD:  
  
# 
*     SEND A DISCONNECT REQUEST.  IF WE'RE IN THE MIDDLE OF 
*     A DATA MESSAGE THEN FINISH UP THE DATA MESSAGE FIRST. 
# 
  
      IF ACN$OUT$M[CCT$] THEN BEGIN 
        REQ$Q[RTCPNAM$] = FALSE;
        REQ$M[RTCPNAM$] = FALSE;
        REQ$RCODE[RTCPNAM$] = RNAM"RNSENDAT"; 
        REQ$CTYPE[RTCPNAM$] = CCT$; 
        REQ$LEN[RTCPNAM$] = 0;
        REQ$ADDR[RTCPNAM$] = 0; 
        FFSLNLH;
      END 
  
      P<GW$HEADER> = LOC(OUTBUF);    # POINT GW HEADER                # 
      FFSUCLR(LOC(OUTBUF), GW$HL$TD); 
      GW$IDENT     = GW$ID$TD;       # IDENTIFY HEADER                # 
      GW$HDR$TYP   = 0;              # SET HEADER TYPE                # 
      GW$DAT$LEN   = 0;              # SET DATA LENGTH                # 
      GW$HDR$LEN   = INT (GW$HL$TD * 7.5); # SET HEADER LENGTH        # 
      GW$VERSION   = DGWVERSION;     # SET VERSION SO NO TCPSD REPLIES# 
      GW$STATUS    = 0; 
      GW$TD$ICI    = ACN$CCEPID[CCT$];
      REQ$Q[RTCPNAM$] = TRUE; 
      REQ$M[RTCPNAM$] = FALSE;
      REQ$RCODE[RTCPNAM$] = RNAM"RNSENDAT"; 
      REQ$CTYPE[RTCPNAM$] = CCT$; 
      REQ$LEN[RTCPNAM$] = GW$HDR$LEN + GW$DAT$LEN;
      REQ$ADDR[RTCPNAM$] = LOC(OUTBUF); 
      FFSLNLH;
  
      GOTO END$CASE;
  
TCA$SENDA:  
  
# 
*     SET UP ALLOCATE HEADER. 
*     CALL FFSLNLH TO SEND THE BLOCK. 
# 
  
      P<GW$HEADER> = LOC(OUTBUF);    # POINT GW HEADER                # 
      FFSUCLR(LOC(OUTBUF), GW$HL$TA); 
      GW$IDENT     = GW$ID$TA;       # IDENTIFY HEADER                # 
      GW$HDR$TYP   = 0;              # SET HEADER TYPE                # 
      GW$DAT$LEN   = 0;              # SET DATA LENGTH                # 
      GW$HDR$LEN   = INT (GW$HL$TA * 7.5); # SET HEADER LENGTH        # 
      GW$VERSION   = DGWVERSION;     # SET VERSION SO NO TCPSD REPLIES# 
      GW$STATUS    = 0; 
      GW$TA$ICI    = ACN$CCEPID[CCT$];
      GW$TA$SZ     = X"7FF70000"; 
      REQ$Q[RTCPNAM$] = TRUE; 
      REQ$M[RTCPNAM$] = FALSE;
      REQ$RCODE[RTCPNAM$] = RNAM"RNSENDAT"; 
      REQ$CTYPE[RTCPNAM$] = CCT$; 
      REQ$LEN[RTCPNAM$] = GW$HDR$LEN + GW$DAT$LEN;
      REQ$ADDR[RTCPNAM$] = LOC(OUTBUF); 
  
      FFSLNLH;
      GOTO END$CASE;
  
TCA$SENDSD: 
  
# 
*     SEND THE MESSAGE. 
# 
      REQ$Q[RTCPNAM$] = FALSE;
      REQ$M[RTCPNAM$] = REQ$M[RCMTCP$]; 
      REQ$RCODE[RTCPNAM$] = RNAM"RNSENDAT"; 
      REQ$CTYPE[RTCPNAM$] = CCT$; 
      REQ$LEN[RTCPNAM$] = REQ$LEN[RCMTCP$]; 
      REQ$ADDR[RTCPNAM$] = REQ$ADDR[RCMTCP$]; 
  
      FFSLNLH;
  
      GOTO END$CASE;
  
  
TCA$NREPLY: 
  
# 
*     CALL FFSRPNR TO PROCESS THE NORMAL REPLY. 
# 
  
      FFSRPNR(CCT$, EVENT); 
      GOTO END$CASE;
  
TCA$EREPLY: 
  
# 
*     CALL FFSRPER TO PROCESS THE ERROR REPLY.
# 
  
      FFSRPER(CCT$, EVENT); 
      GOTO END$CASE;
  
TCA$INDIC:  
  
# 
*     CALL FFSITIH TO PROCESS THE INDICATION. 
# 
  
      FFSITIH (CCT$, EVENT);
      GOTO END$CASE;
  
TCA$NOOP: 
  
# 
*     NO OPERATION. 
# 
  
      GOTO END$CASE;
  
TCA$ABORT:  
  
# 
*     AT PRESENT THE ONLY ACTION TAKEN HERE WILL BE TO OUTPUT AN
*     ERROR MESSAGE AND ABORT SO THAT A DUMP IS TAKEN.
*     A FUTURE MOD MIGHT END THE CONNECTION AND PASS UP AN
*     INDICATION... 
# 
  
      ABT$STCD = XCDD (TCPSTATE);    # CURRENT SATE CODE              # 
      ABT$TRGCD = XCDD (EVENT);      # CURRENT TRIGGER CODE           # 
      FFSEABT (STTBABT);             # DAYFILE ERROR MSG THEN ABORT   # 
  
TCA$NETERR:                            # NETWORK ERROR                 #
  
# 
*     CLEAR OUT CCT ENTRY VALUES. 
# 
  
      IF CCT$ EQ CTYPE"CTSAP" 
      THEN
        BEGIN                          # ON SAP CONNECTION             #
        ACN$TSAPID[CCT$] = 0; 
        ACN$CSAPID[CCT$] = 0; 
        ACN$CCEPID[CCT$] = 0; 
        END 
      ELSE
        BEGIN 
        ACN$DIPFIU[CCT$] = IP$FIUSTAT"NONE";
        ACN$DIPNET[CCT$] = 0; 
        ACN$DIPHST[CCT$] = 0; 
        IF EPTFLAG EQ FTPC$ 
        THEN
          BEGIN                      # CLIENT CONN. - CLEAR SRCE PORT # 
          ACN$STCPRT[CCT$] = 0; 
          ACN$STCPIU[CCT$] = FALSE; 
          END 
        ELSE
          BEGIN                      # SERVER CONN. - CLEAR DEST PORT # 
          ACN$DTCPRT[CCT$] = 0; 
          ACN$DTCPIU[CCT$] = FALSE; 
          END 
        END 
      ACN$TCEPID[CCT$] = 0; 
      ACN$TURGNT[CCT$] = FALSE; 
  
#     GOTO TCA$SINDIC    #
  
TCA$SINDIC: 
  
  
# 
*     INDICATION ALREADY SET TO UPPER LAYER - SET CONNECTION TYPE.
# 
  
      IND$CTYPE[ITCPCM$] = CCT$;
      GOTO END$CASE;
  
TCA$LSTOFF: 
  
# 
*     ISSUE SUSPEND DATA DELIVERY REQUEST TO NAM LAYER
# 
  
      REQ$RCODE[RTCPNAM$] = RNAM"RNSDATAD"; 
      REQ$CTYPE[RTCPNAM$] = REQ$CTYPE[RCMTCP$]; 
      REQ$LEN[RTCPNAM$] = 0;
      REQ$ADDR[RTCPNAM$] = 0; 
      FFSLNLH;
      GOTO END$CASE;
  
TCA$LSTON:  
  
# 
*     ISSUE RESUME DATA DELIVERY REQUEST TO NAM LAYER 
# 
  
      REQ$RCODE[RTCPNAM$] = RNAM"RNRDATAD"; 
      REQ$CTYPE[RTCPNAM$] = REQ$CTYPE[RCMTCP$]; 
      REQ$LEN[RTCPNAM$] = 0;
      REQ$ADDR[RTCPNAM$] = 0; 
      FFSLNLH;
      GOTO END$CASE;
  
END$CASE: 
  
# 
*     ADVANCE TO NEXT STATE.
# 
  
      ACN$TPSTAT[CCT$] = ACN$TCSTAT[CCT$];
      ACN$TCSTAT[CCT$] = DN$T$NEXT; 
      ACN$TTRIGG[CCT$] = DN$T$EVENT;
  
      RETURN; 
  
      END                            # FFSLTIP #
  
      TERM
