*DECK HDCSTMR 
USETEXT ACB 
USETEXT ACNB
USETEXT ACNT
USETEXT NIPDEF
USETEXT APPSTAT 
USETEXT OVERLAY 
USETEXT PARAMS
USETEXT PT
USETEXT SUPMSG
USETEXT SYSTIME 
      PRGM HDCSTMR;          # PROCESS DC/STMR/R FROM APP              #
  
  
 STARTIMS;
 #
*1DC  HDCSTMR 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        HDCSTMR             E. GEE              85/11/22 
* 
*     2. FUNCTIONAL DESCRIPTION.
*          PROCESS DC/STMR/R SUPERVISORY MESSAGE FROM APPLICATION.
* 
*     3. METHOD USED. 
*          IF ACN WAS SPECIFIED (I.E. NONZERO), 
*            UPDATE ACNB WITH TIMEOUT DATA. 
*          ELSE (ACN WAS NOT SPECIFIED),
*            UPDATE ACB WITH TIMEOUT DATA.
*            LOOP THROUGH ALL CONNECTIONS UPDATING ACNB WITH TIMEOUT
*              DATA.
* 
*     4. ENTRY PARAMETERS.
*          DCACN             APPLICATION CONNECTION NUMBER
*          ACBADDR           ACB ADDRESS
*          WLADDR            WORKLIST ENTRY ADDRESS 
* 
*     5. EXIT PARAMETERS. 
*          NONE 
* 
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        ACB                 APPLICATION CONTROL BLOCK TEMPLATE 
*        ACNB                APPLICATION CONNECTION BLOCK TEMPLATE
*        APPSTAT             APPLICATION STATUS TABLE 
*        ACNT                APPLICATION CONNECTION TABLE TEMPLATE
*        NIPDEF              CONSTANT DEFINITIONS 
*        OVERLAY             OVERLAY TABLE
*        PARAMS              BUF FOR PASSING PARAMS TO/FROM SEC OVLY
*        PT                  POINTER TABLE PLUS MISC VARIABLES
*        SUPMSG              SUPERVISORY MESSAGE TEMPLATE 
*        SYSTIME             SYSTEM TIME
* 
*     7. ROUTINES AND OVERLAYS CALLED.
*          HLGLERR   OVL     FORM LOGICAL ERROR MESSAGE 
*          OVLCALL           LOAD AND EXECUTE OVERLAY 
*          XTRACE            RECORD PROCESSOR CALLS 
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
*          NONE 
* 
*        THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE OVLCALL.
*        WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION RJMAIN
*        TO RETURN TO THE CALLING PROGRAM.
* 
*        W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY 
*                        OVERLAY BUFFER SIZE MINUS 5 (560B WORDS).
* 
*        THIS OVERLAY IS CALLED BY HPPUT. 
* 
 #
 STOPIMS; 
# 
      EXTERNAL VARIABLES
# 
      XREF
        BEGIN 
        PROC OVLCALL;        # LOAD OVERLAY                            #
        PROC XTRACE;         # TRACE CALLS                             #
        LABEL RJMAIN;        # RETURN ADDRESS IN OVLCALL               #
        END 
# 
      INTERNAL VARIABLES
# 
      ITEM INDX;             # LOOP VARIABLE                           #
#**********************************************************************#
      BEGIN 
  
      CONTROL IFEQ DEBUG,1; 
        XTRACE("HDSTM") ; 
      CONTROL FI; 
  
      P<SUPMSG>  = WLADDR + AIPHSIZE + ABHSIZE;  # TEXT ADDRESS        #
      P<ACB> = ACBADDR;                # ADDRESS OF ACB                #
      P<ACNT> = ACBACNT[0];            # ADDRESS OF ACNT TABLE         #
  
      IF (DCTIME[0] NQ 0) OR           # NONZERO TIME INTERVAL GIVEN   #
         (DCPERMT[0]    )              # PERMANENT CHANGE FLAG         #
      THEN
        BEGIN 
        IF DCACN[0] NQ 0               # ACN IS GIVEN                  #
        THEN                           # LOCATE THE ACNB               #
          BEGIN 
          P<ACNB> = ACNTACNB[DCACN[0] + ACNTHSIZE - ACNTMINACN[0]]; 
          SETTIMER = TRUE;             # SET GLOBAL APP SPEC TIMER FLAG#
          ACNBTIMERP[0] = DCPERMT[0];  # SET TIMER PERMANENT CHG FLG   #
          ACNBTIMERF[0] = TRUE;        # SET APP SPECIFIED TIMER FLAG  #
          ACNBTIMER[0] = DCTIME[0];    # APP SPECIFIED TIMEOUT VALUE   #
          ACNBINACT[0] = RTSECS[0] + DCTIME[0];  # NEW TIME FOR FC/INAC#
          END 
        ELSE                           # NO ACN SPECIFIED              #
          BEGIN 
          ACBTIMER[0] = DCTIME[0];     # APP SPECIFIED TIMEOUT VALUE   #
          ACBTIMERP[0] = DCPERMT[0];   # SET PERMANENT TIMER CHG FLAG  #
          FOR INDX = ACNTHSIZE STEP 1 UNTIL ACNTHCN[0] - ACNTMINACN[0]
                     + ACNTHSIZE
          DO
            BEGIN 
            P<ACNB> = ACNTACNB[INDX]; 
            IF P<ACNB> NQ 0 THEN
              BEGIN 
              SETTIMER = TRUE;         # SET GLOBAL APP SPEC TIMER FLG #
              ACNBTIMERP[0] = DCPERMT[0]; # SET PERMANENT TIMER CHG FLG#
              ACNBTIMERF[0] = TRUE;    # SET APP SPECIFIED TIMER FLAG  #
              ACNBTIMER[0] = DCTIME[0];# APP SPECIFIED TIMEOUT VALUE   #
              ACNBINACT[0] = RTSECS[0] + DCTIME[0];# NEW TIME FOR FC/IN#
              END 
            END 
          END 
        END 
      GOTO RJMAIN;                     # RETURN TO CALLING PROGRAM     #
      END 
TERM
