*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