cdc:nos2.source:nam5871:relacnb
Table of Contents
RELACNB
Table Of Contents
- [00011] PROC RELACNB(ACNBADR,SWFLAG,LNFLAG)
- [00075] PROC DELCDR
- [00076] PROC HUPDDAW
- [00077] PROC MREDUCE
- [00078] PROC KPUT
- [00079] PROC OMSG
- [00080] PROC MRELS
- [00081] PROC XTRACE
- [00082] PROC ABORT
Source Code
- RELACNB.txt
- *DECK RELACNB
- USETEXT NIPDEF
- USETEXT ACB
- USETEXT ACNB
- USETEXT ACNT
- USETEXT AT
- USETEXT DRHDR
- USETEXT KDIS
- USETEXT KHDRX
- USETEXT NCNB
- PROC RELACNB(ACNBADR,SWFLAG,LNFLAG); # RELEASE ACNB #
- STARTIMS;
- #
- *1DC RELACNB
- *
- * 1. PROC NAME AUTHOR DATE
- * RELACNB C. BITTNER 81/04/07
- *
- * 2. FUNCTIONAL DESCRIPTION
- * RELEASE THE APPLICATION CONNECTION BLOCK (ACNB)
- *
- * 3. METHOD USED
- * CHECK IF ACNT CAN BE SHRUNK. IF NOT, UPDATE ACNT
- * HEADER INFORMATION. RELEASE DATA RING AND ACNB.
- * DECREMENT TOTAL NUMBER OF CONNECTIONS IN THE ACB.
- *
- * 4. ENTRY PARAMETERS
- * ACNBADR ADDRESS OF ACNB TO RELEASE
- * SWFLAG FLAG TO INDICATE IF SWITCHING CONNECTION
- * LNFLAG FLAG TO INDICATE IF LOANING CONNECTION
- *
- * 5. EXIT PARAMETERS
- * NONE
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED
- * NIPDEF ACNT
- * ACB DRHDR
- * ACNB
- * NCNB AT
- * KDIS
- *
- * 7. ROUTINES AND OVERLAYS CALLED
- * REDUCE - REDUCE MEMORY BUFFER
- * HUPDDAW - UPDATE DATA AVAILABLE WORD
- * OMSG - ISSUE DAYFILE MESSAGE
- * XTRACE - RECORD PROCEDURE CALLS
- * DELCDR - DELETE ACNB FROM CONNECTION DATA RING
- * KPUT - UPDATE STATUS DISPLAY
- * MRELS - RELEASE BUFFER
- *
- * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
- * "NIP/RELACNB - BAD CN"
- *
- * THIS PROCEDURE IS LOADED AND CALLED BY PRIMARY OVERLAY
- * STRTSW AND SECONDARY OVERLAY HSWACNB VIA HCSTTP.
- *
- * W A R N I N G - THE SIZE OF THIS PROCEDURE ALONG WITH
- * SECONDARY OVERLAY HSWACNB PLUS PROCEDURE
- * HALLOCN CANNOT EXCEED THE SIZE OF THE
- * SECONDARY OVERLAY BUFFER SIZE MINUS 5
- * (473B WORDS). THE SIZE OF THIS PROCEDURE
- * ALONG WITH PRIMARY OVERLAY STRTSW PLUS
- * PROCEDURES HCONREQ, HCRSWHN, AND MREDUCE
- * CANNOT EXCEED THE SIZE OF THE PRIMARY
- * OVERLAY BUFFER SIZE MINUS 5 (673B WORDS).
- *
- #
- STOPIMS;
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC DELCDR; # DELINK ACNB FROM CONNECTION DATA RING #
- PROC HUPDDAW; # UPDATE DATA AVAILABLE WORD #
- PROC MREDUCE; # REDUCE MEMORY BUFFER #
- PROC KPUT ;
- PROC OMSG; # ISSUE DAYFILE MESSAGE #
- PROC MRELS; # RELEASE BUFFER SPACE #
- PROC XTRACE; # RECORD PROCEDURE CALLS #
- PROC ABORT ; # #
- END
- #
- INPUT PARAMETERS
- #
- ITEM ACNBADR; # ADDRESS OF ACNB TO RELEASE #
- ITEM SWFLAG B; # TRUE = SWITCHING CONNECTION #
- ITEM LNFLAG B; # TRUE = LOANING CONNECTION #
- #
- INTERNAL VARIABLES
- #
- ITEM ACNTINDX; # INDEX INTO ACNT #
- ITEM AN; # APPLICATION NUMBER #
- ITEM NEWSIZE; # SIZE TO REDUCE BUFFER TO #
- ITEM CURR; # INDUCTION LOOP VARIABLE #
- ITEM FOUND B; # HIGHEST CN IN USE FOUND-FLAG #
- ITEM INDX; # INDUCTION LOOP VARIABLE #
- ITEM NEXT; # NEXT ENTRY IN DATA RING #
- ITEM TMPINDX I; # ACB KDISPLAY ABSOLUTE INDEX #
- # SET TO -1 IF NOT IN VIEW #
- # DAYFILE MESSAGE TO ISSUE IF BAD CONNECTION NUMBER #
- CONTROL IFEQ DEBUG,1;
- ARRAY ERRMSG P(3);
- BEGIN
- ITEM BADMSG C(00,00,20) = ["NIP/RELACNB - BAD CN"];
- ITEM ENDMSG U(02,00,60) = [0];
- END
- CONTROL FI;
- #**********************************************************************#
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("RACNB") ;
- CONTROL FI;
- FOUND = FALSE; # INITIALIZE HIGHEST CN FOUND FLAG #
- P<ACNB> = ACNBADR; # ADDRESS OF ACNB TO RELEASE #
- CONTROL IFEQ DEBUG,1;
- IF P<ACNB> EQ 0
- THEN
- BEGIN
- OMSG(ERRMSG,0); # ISSUE ERROR DAYFILE MESSAGE #
- ABORT(0,0) ;
- END
- CONTROL FI;
- AN = ACNBAN[0]; # APPLICATION NUMBER #
- P<ACB> = ATACBA[AN]; # BASE APPL CONTROL BLOCK #
- P<ACNT> = ACBACNT[0]; # BASE APPL CONNECTION TABLE #
- ACNTINDX = ACNBACN[0] + ACNTHSIZE - ACNTMINACN[0];
- ACNTWD[ACNTINDX] = 0; # DELETE ACNT ENTRY #
- IF NOT LNFLAG # NOT LOANING CONNECTION #
- THEN
- BEGIN # FREE THIS ENTRY, NOT FOR LOAN-CON #
- ACNTNFE[0] = ACNTNFE[0] + 1 ; # UPDATE NUMBER OF FREE ENTRY #
- IF ACNBACN[0] LS ACNTFFCN[0]
- THEN
- ACNTFFCN[0] = ACNBACN[0] ; # UPDATE FIRST FREE ACN #
- IF ACNBACN[0] EQ ACNTHCN[0]
- THEN # UPDATE HIGHEST CN IN USE #
- BEGIN # SEARCH FOR HIGHEST CN IN USE #
- FOR INDX = ACNTINDX - 1 STEP -1 WHILE INDX GQ ACNTHSIZE
- AND NOT FOUND
- DO
- BEGIN
- IF ACNTWD[INDX] NQ 0
- THEN # HIGHEST CN FOUND #
- BEGIN
- ACNTHCN[0] = INDX + ACNTMINACN[0] - ACNTHSIZE;
- FOUND = TRUE; # SET HIGHEST CN IN USE FOUND FLAG #
- END
- END
- IF NOT FOUND
- THEN # THERE ARE NO ENTRIES IN ACNT #
- ACNTHCN[0] = 0;
- END
- END # FREE THIS ENTRY, NOT FOR LOAN-CON #
- # CHECK IF ACNT CAN BE SHRUNK#
- IF (ACNTNFE[0] GQ MINACNTFE) AND
- (ACNTBS[0] - (ACNTHCN[0] - ACNTMINACN[0]) - ACNTHSIZE - 1)
- GQ ACNTESIZE
- THEN # SHRINK ACNT #
- BEGIN
- NEWSIZE = ACNTBS[0] - ACNTESIZE; # SIZE TO REDUCE ACNT TO #
- MREDUCE(P<ACNT>,NEWSIZE); # SHRINK ACNT #
- ACBACNT[0] = P<ACNT>; # UPDATE ACNT ADDRESS #
- ACNTNFE[0] = ACNTNFE - ACNTESIZE; # UPDATE NO. FREE ENTRIES #
- END
- ACBNCN[0] = ACBNCN[0] - 1; # DECREMENT NO. OF CONN IN ACB #
- IF KDIS$RT
- AND ACBKNDX[0] NQ 0
- AND ACBKNDX[0] GQ KDAPPST[0]
- AND ACBKNDX[0] LQ KDAPPND[0]
- THEN
- BEGIN
- TMPINDX=ACBKNDX[0]-KDAPPST[0];
- KPUT(KHDRNP[0],TMPINDX,KPAPNCN,ACBNCN[0]) ;
- END
- ELSE
- TMPINDX=-1;
- IF NOT SWFLAG AND P<ACNB> NQ 0
- THEN # NOT A CONNECTION SWITCH #
- BEGIN
- # RELEASE DATA RING #
- P<DRHDRWD> = 0;
- CURR = ACNBDRFP[0]; # FIRST ENTRY IN DATA RING #
- FOR CURR = CURR WHILE CURR NQ LOC(ACNBDRFP[0]) AND
- CURR NQ 0 DO
- BEGIN
- NEXT = NEXTPTR[CURR]; # NEXT ENTRY IN DATA RING #
- MRELS(CURR); # RELEASE DATA RING ENTRY #
- CURR = NEXT;
- END
- IF ACNBBLKSQ[0] NQ 0
- THEN # DATA QUEUED TO ACNB #
- BEGIN
- HUPDDAW(P<ACB>,P<ACNB>,-ACNBBLKSQ[0],-ACNBBLKSQ[0]);
- DELCDR(P<ACNB>); # DELETE ACNB FROM CONNECTION DATA RING #
- END
- IF ACNBNCNB[0] NQ 0
- THEN # NCNB EXISTS #
- BEGIN
- P<NCNB> = ACNBNCNB[0];
- NCNBACNB[0] = 0; # CLEAR ACNB POINTER #
- END
- IF TMPINDX GQ 0 THEN
- KPUT(KHDRNP[0],TMPINDX,KPAPNDM,ACBBLKSQ[0]) ;
- MRELS(P<ACNB>);
- END
- RETURN ; # RETURN TO CALLING PROGRAM #
- END
- TERM
cdc/nos2.source/nam5871/relacnb.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator