*DECK NPREGCN
USETEXT NIPDEF
USETEXT PARAMS
USETEXT LLCB
USETEXT NCNT
USETEXT NCNB
USETEXT DRHDR
PRGM NPREGCN;
STARTIMS;
#
*1DC NPREGCN
*
* 1. PROC NAME AUTHOR DATE
* NPREGCN L.T.NGUYEN 81/10/01
*
* 2. FUNCTIONAL DESCRIPTION
* REGULATING THE CONNECTION
*
* 3. METHOD USED
* NEW 1 2 3
* OLD
* 1 XXX HPO AOR
*
* 2 HPI XXX AOR
*
* 3 ACI LPI XXX
*
* HOP = HIGH PRIORITY OUT OF REGULAION I.E. CLEAR NCNBNR
* AOR = ALL CONNECTION OUT OF REGULATION
* HPI = HIGH PRIORITY IN REGULATION
* ACI = ALL CONNECTIONS IN REGULATION
* LPI = LOW PRIORITY IN REGULATION
* XXX = NOTHING TO DO
*
* DEPENDING ON THE CURRENT BUFFER LEVEL (OLD) AND THE
* NEW BUFFER LEVEL IN REG/LL SUPERVISOR MESSAGE WE DO
* ACCORDINGLY TO THE ABOVE MATRIX.
*
* 4. ENTRY PARAMETERS:
* PARAMS1 = LLCB ADDRESS
* PARAMS2 = NEW REGULATION BUFFER LEVEL
* PARAMS3 = INDICATOR - 0 (LOWERING) NEW =< OLD
* - 1 (RAISING) NEW >= OLD
*
*
* 5. EXIT PARAMETER:
* NONE.
*
* 6. COMDECKS CALLED:
* NIPDEF
* PARAMS
* LLCB
* NCNT
* NCNB
* DRHDR
* OSSIZE
*
* 7. ROUTINES AND OVERLAY CALLED
* NFOB
*
* 8. NOTE
* CALLED BY NPREGLL.
* THIS IS A SECONDARY OVERLAY
* W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY
*CALL OSSIZE
*
*
#
STOPIMS;
#
#
ITEM I ;
ITEM TEMPPTR U ; # TEMPORARY POINTER #
ITEM DRADDRESS U ; # DATA RING ADDRESS #
ITEM NFOBCALL B ;
ITEM LLCBIX U ;
ITEM NCNTIX U ;
XREF PROC NFOB ;
XREF LABEL RJMAIN;
BEGIN # NPREGCN #
P<LLCB> = PARAMS1 ;
FOR LLCBIX = LLCBHSIZE STEP 1 UNTIL LLCBSIZE - LLCBHSIZE - 1
DO
BEGIN
P<NCNT> = LLCBNCNT[LLCBIX] ;
IF P<NCNT> NQ 0
THEN
BEGIN
FOR NCNTIX = NCNTHSIZE STEP 1 UNTIL NCNTSIZE-NCNTHSIZE
DO
BEGIN
NFOBCALL = FALSE ;
P<NCNB> = NCNTNCNB[NCNTIX] ;
IF P<NCNB> NQ 0
THEN
BEGIN
IF PARAMS3 NQ 0 # LOWERING #
THEN
BEGIN
IF PARAMS2 EQ BUFLSM # BUFFER LEVEL IS 1 #
THEN
NCNBNR = TRUE ;
IF PARAMS2 EQ BUFLHDS # BUFFER LEVEL IS 2 #
AND NCNBPRI EQ 2 # LOW PRIORITY #
THEN
NCNBNR = TRUE ;
END
ELSE # RAISING #
BEGIN
IF PARAMS2 EQ BUFLHDS # BUFFER$LEVEL IS 2 #
AND NCNBPRI EQ 1 # HIGH PRIORITY #
THEN
BEGIN
NCNBNR = FALSE ;
NFOBCALL = TRUE ;
END
IF PARAMS2 EQ BUFLAM # BUFFER LEVEL IS 3 #
THEN
BEGIN
NCNBNR = FALSE ;
NFOBCALL = TRUE ;
END
IF (NFOBCALL) AND # OKAY TO SEND DOWNLINE DATA #
(NCNBID[0] EQ NCNBIDVALUE) # THIS IS A NCNB #
THEN
BEGIN # CALL NFOB TO SEND DATA #
FOR I = I WHILE (NCNBNBO[0] LS NCNBDBL[0])
AND NCNBDRFP[0] NQ 0
AND NOT NCNBHR[0]
DO
BEGIN # FOR LOOP #
DRADDRESS = NCNBDRFP ; # ADDRESS FOR NFOB CALL #
IF NCNBDRFP NQ NCNBDRBP
THEN
BEGIN # NOT THE LAST NCNB #
P<DRHDRWD> = NCNBDRFP ;
NCNBDRFP = NEXTPTR ;
TEMPPTR = BACKPTR ;
P<DRHDRWD> = NEXTPTR ;
BACKPTR = TEMPPTR ;
END # NOT THE LAST NCNB #
ELSE
BEGIN # THE LAST NCNB #
NCNBDRFP = 0 ;
NCNBDRBP = 0 ;
END # THE LAST NCNB #
NCNBBLKSQ[0] = NCNBBLKSQ[0] - 1;
NFOB(DRADDRESS,P<NCNB>) ;
END # FOR LOOP #
END # CALL NFOB #
END
END
END
END
END
GOTO RJMAIN ;
END
TERM