cdc:nos2.source:nam5871:relncnb
Table of Contents
RELNCNB
Table Of Contents
- [00015] PRGM RELNCNB
- [00065] PROC KPUT
- [00066] PROC LOCLLCB
- [00067] PROC MRELS
- [00068] PROC MCLRIL
- [00069] PROC MSETIL
- [00070] PROC OMSG
- [00071] PROC ABORT
- [00072] PROC XTRACE
Source Code
- RELNCNB.txt
- *DECK RELNCNB
- USETEXT NIPDEF
- USETEXT ACNB
- USETEXT PARAMS
- USETEXT PT
- USETEXT NCNB
- USETEXT DUMPFLG
- USETEXT DRHDR
- USETEXT LLCB
- USETEXT MSGIDX
- USETEXT NCNT
- USETEXT KDIS
- USETEXT KHDRX
- USETEXT STATTAB
- PRGM RELNCNB; # RELEASE NETWORK CONNECTION BLOCK #
- STARTIMS;
- #
- *1DC RELNCNB
- *
- * 1. PROC NAME AUTHOR DATE
- * RELNCNB C. BITTNER 81/04/07
- *
- * 2. FUNCTIONAL DESCRIPTION
- * RELEASE THE NETWORK CONTROL BLOCK
- *
- * 3. METHOD USED
- * CHECK IF THERE ARE ANY CONNECTIONS ON NCNT.
- * IF NOT, THEN RELEASE NCNT. RELEASE DATA RING AND
- * ACKNOWLEDGE QUEUE. RELEASE NCNB AND UPDATE INFORMATION
- * IN THE LLCB.
- *
- * 4. ENTRY PARAMETERS
- * PARAMS1 - ADDRESS OF NCNB TO RELEASE
- *
- * 5. EXIT PARAMETERS
- * NONE
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED
- * ACNB PARAMS
- * NIPDEF DRHDR
- * STATTAB NCNB
- * LLCB MSGIDX
- * NCNT KDIS
- * OSSIZE
- *
- * 7. ROUTINES AND OVERLAYS CALLED
- * OMSG - ISSUE DAYFILE MESSAGE
- * XTRACE - RECORD PROCEDURE CALLS
- * KPUT - UPDATE K-DISPLAY STATUS
- * LOCLLCB - LOCATE LLCB
- * MRELS - RETURN BUFFER
- *
- * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
- * THIS PROGRAM IS CALLED BY NCSTTP.
- * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY
- *CALL OSSIZE
- *
- #
- STOPIMS;
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC KPUT ;
- PROC LOCLLCB; # LOCATE LLCB #
- PROC MRELS; # RETURN BUFFER #
- PROC MCLRIL ; # CLEAR INTERLOCK ROUTINE #
- PROC MSETIL ; # REQUEST INTERLOCK ROUTINE #
- PROC OMSG; # DAYFILE MESSAGE #
- PROC ABORT ;
- PROC XTRACE; # RECORD PROCEDURE CALLS #
- LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
- END
- #
- INTERNAL VARIABLES
- #
- ITEM LLCBAD; # LLCB ADDRESS #
- ITEM LLCBINDX; # INDEX INTO LLCB #
- ITEM CURR; # INDUCTION LOOP VARIABLE #
- ITEM NEXT; # NEXT ENTRY IN DATA RING #
- ITEM NCNTINDX; # INDEX INTO NCNT #
- ITEM KN U;
- ARRAY CNX;
- BEGIN
- ITEM CNE U(00,00,60); # NETWORK CONNECTION NUMBER #
- ITEM CN1 U(00,52,04); # CONNECTION INDEX #
- ITEM CN2 U(00,56,04); # INDEX INTO NCNT #
- END
- #**********************************************************************#
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("RNCNB") ;
- CONTROL FI;
- P<NCNB> = PARAMS1; # BASE NETWORK CONNECTION BLOCK #
- # RELEASE DATA RING #
- P<DRHDRWD> = 0;
- CURR = NCNBDRFP[0]; # FIRST ENTRY IN DATA RING #
- FOR CURR = CURR WHILE CURR NQ LOC(NCNBDRFP[0]) AND CURR NQ 0 DO
- BEGIN
- NEXT = NEXTPTR[CURR]; # NEXT ENTRY IN DATA RING #
- MRELS(CURR); # RELEASE DATA RING ENTRY #
- CURR = NEXT;
- END
- # RELEASE ACKNOWLEDGE QUEUE #
- IF NCNBACKQ[0] NQ 0
- THEN
- MRELS(NCNBACKQ[0]); # RELEASE ACKNOWLEDGE QUEUE #
- CONTROL IFEQ STAT,1; # STATISTICS ON #
- ST$AQX = ST$AQX + 1; # INCREMENT NO. ACKQ-S RELEASED #
- CONTROL FI;
- #
- CHECK IF THERE ARE ANY CONNECTIONS ON NCNT.
- IF NOT, THEN RELEASE NCNT
- #
- P<NCNT> = NCNBCTAD; # BASE NETWORK CONNECTION TABLE #
- CNE[0] = NCNBCN[0]; # NETWORK CONNECTION NUMBER #
- LLCBINDX = CN1 + LLCBHSIZE; # INDEX INTO LLCB #
- NCNTINDX = CN2 + NCNTHSIZE; # INDEX INTO NCNT #
- LOCLLCB(NCNBHN[0],NCNBTN[0],LLCBAD); # LOCATE LLCB #
- P<LLCB> = LLCBAD; # BASE LLCB #
- CONTROL IFEQ DEBUG,1;
- IF P<LLCB> EQ 0
- THEN
- BEGIN
- D27M2[0] = "RELNCNB";
- OMSG(DFMSG27,0); # NIP INTERNAL ERROR #
- ABORT(0,0) ;
- END
- CONTROL FI;
- MSETIL(P<LLCB>) ; # REQUEST INTERLOCK WITH THIS LLCB #
- NCNTNCN[0] = NCNTNCN[0] - 1; # DECREMENT NO. ACTIVE CONN #
- CONCOUNT = CONCOUNT -1 ;
- IF CONCOUNT LS MAXSWIT
- THEN
- BEGIN
- TBUF = 10000;
- NFSIZE = 1536;
- END
- IF NCNTNCN[0] EQ 0
- THEN # LAST ENTRY DELETED #
- BEGIN
- MRELS(P<NCNT>); # RELEASE NCNT #
- LLCBNCNT[LLCBINDX] = 0; # CLEAR NCNT ADDRESS IN LLCB #
- END
- ELSE
- BEGIN
- NCNTWD[NCNTINDX] = 0; # DELETE NCNT ENTRY #
- END
- LLCBNC[0] = LLCBNC[0] - 1; # DECREMENT NO. CONN ON LOG LINK #
- MCLRIL ;
- IF KDIS$RT # REAL TIME UPDATE MODE IN EFFECT #
- AND NCNBDT[0] NQ DT$INTA # NOT AN INTRA-HOST A-A CONN #
- AND LLCBKNDX[0] NQ 0 # LLCB ENTRY EXISTS IN ST #
- AND LLCBKNDX[0] GQ KDLGLST[0]
- AND LLCBKNDX[0] LQ KDLGLND[0]
- THEN
- BEGIN
- IF KDESTST[0] EQ 0 THEN
- KN=LLCBKNDX[0]-KDLGLST[0];
- ELSE
- IF KDAPPST[0] EQ 0 THEN
- KN=LLCBKNDX[0]+KDESTND[0]-KDESTST[0];
- ELSE
- KN=LLCBKNDX[0]+KDESTND[0]+KDAPPND[0]-KDAPPST[0];
- KPUT(KHDRNP[0],KN,KPLGNCN,LLCBNC[0]) ;
- END
- IF NCNBACNB[0] NQ 0
- THEN
- BEGIN # ACNB EXISTS #
- P<ACNB> = NCNBACNB[0];
- ACNBNCNB[0] = 0; # CLEAR NCNB TWIN POINTERS #
- END
- MRELS(P<NCNB>); # RELEASE NCNB #
- GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
- END
- TERM
cdc/nos2.source/nam5871/relncnb.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator