*DECK KDEL USETEXT NIPDEF USETEXT KDIS USETEXT KINITBF USETEXT KSTTAB USETEXT ACB USETEXT LLCB USETEXT NBT USETEXT DRHDR USETEXT KHDRX USETEXT AT USETEXT PARAMS USETEXT PT USETEXT TNT PRGM KDEL; STARTIMS; # *1DC KDEL * * 1. PROC NAME AUTHOR DATE * KDEL A.BEN-ARTZI 82/03/04 * M.GIBIAN 83/12/20 * * 2. FUNCTIONAL DESCRIPTION * * DELETE A LINE FROM STATUS DISPLAY (ACB,NBT,OR LLCB) * * 3. METHOD USED * * -IF DELETED LINE IS BEING DISPLAYED, SET DISPLAY TYPE TO * THE TYPE OF LINE DELETED. COMPUTE THE CONVERSION FACTOR * TO CONVERT FROM RELATIVE LINE NUMBER TO ABSOLUTE LINE NUMBER. * * -DECREMENT MAXIMUM COUNT FOR LINE TYPE AND UPDATE VIEW TABLE * * -IF DELETED LINE IS BEING VIEWED THEN * SHIFT DISPLAY TO DELETE LINE * DETERMINE TYPE OF NEW LAST LINE AND SAVE IT. IF LAST LINE * IS BEYOND END OF DISPLAY, SET TYPE TO RESERVED TO PREVENT * ANY NEW LINE FROM BEING DISPLAYED. * * -SEARCH ACB-S NBTE-S AND LLCB-S TO ADJUST RELATIVE LINE NUMBER * FOR STRUCTURE OF DELETED LINE, AND TO DISPLAY NEW LAST LINE * * 4. ENTRY PARAMETERS * * TYPE - 1,2,OR 3 ACCORDING TO ACB,NBT(EST) OR LLCB * * KNDX - THE DATA-STRUCTURE INDX INTO THE STATUS DISPLAY BUFFER * * 5. EXIT PARAMETERS * * NONE * * 6. COMDECKS AND TEXTS * * NIPDEF KDIS KINITBF * KHDRX ACB LLCB NBT * DRHDR AT PT * TNT * * 7. ROUTINES AND OVERLAYS CALLED * * KPUT - UPDATE DATA ON STATUS DISPLAY BUFFERS * KUPVTAB- UPDATE VIEW TABLE * XTRACE - MARK ROUTINE IN TRACE DUMP * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * * THIS PROCEDURE IS CALLED BY NPESTOF,RELACB AND RELLLCB. * # STOPIMS; XREF BEGIN PROC KUPVTAB; PROC KPUT ; PROC XTRACE ; LABEL RJMAIN; END # INPUT PARAMETERS # ITEM TYPE U; # SPECIFY ACB,NBT(EST) OR LLCB MOD (1,2 OR 3) # ITEM KNDX U; # THE INDEX INTO ST-DISPLAY BUFFER # # INTERNAL VARIABLES # ITEM DTYPE S:KST; # TYPE OF DISPLAY CONTAINING LAST LINE # ITEM BUF U; # ADDRESS OF NEW BUFFER ALLOCATED # ITEM KN I; # TEMP LINE INDEX # # # BASED ARRAY INDEXES S(1); BEGIN ITEM ISTART U(0,9,9); # START INDEX IN VIEW TABLE ARRAY # ITEM IEND U(0,18,9); # END INDEX IN VIEW TABLE ARRAY # END SWITCH KLAB1 N1,KAPP1,KEST1,KLGL1; # # ITEM SIZE U; # SIZE OF NEW BUFFER # ITEM I U; # LOOP INDEX # ITEM KINDEX U; # LOOP INDEX # # # #**********************************************************************# BEGIN CONTROL IFEQ DEBUG,1; XTRACE("KDEL "); CONTROL FI; TYPE=PARAMS1; KNDX=PARAMS2; # # IF TYPE LS 1 OR TYPE GR 3 THEN # ERROR IN TYPE (INTERNAL NIP) # RETURN ; # WE SHOULD ABORT NIP HERE # ELSE BEGIN DTYPE=KST"RESERVED"; P = KHDRNP[0]+BLKHSIZE+KHDRSIZE; P=LOC(KDAPPST[0])-1; FOR I=KST"APP" STEP 1 WHILE ISTART[I] EQ 0 DO; KN=KNDX-ISTART[I]; FOR I=KST"APP" STEP 1 UNTIL TYPE-1 DO KN=KN+IEND[I]; GOTO KLAB1[TYPE] ; END N1: RETURN ; # # KAPP1: IF KNDX GQ KDAPPST[0] AND KNDX LQ KDAPPND[0] THEN DTYPE=KST"APP"; KDAPPMX[0] = KDAPPMX[0] - 1; KPUT(LOC(KHDRXNM),0,KPHXNAP,KDAPPMX[0]-3) ; GOTO NEXT ; # # KEST1: IF KNDX GQ KDESTST[0] AND KNDX LQ KDESTND[0] THEN DTYPE=KST"EST"; KDESTMX[0] = KDESTMX[0] - 1 ; GOTO NEXT ; # # KLGL1: IF KNDX GQ KDLGLST[0] AND KNDX LQ KDLGLND[0] THEN DTYPE=KST"LLK"; KDLGLMX[0] = KDLGLMX[0] - 1 ; GOTO NEXT ; # # NEXT: KUPVTAB; # SHIFT DISPLAY TO DELETE LINE # IF DTYPE NQ KST"RESERVED" THEN BEGIN FOR I=KN+1 STEP 1 UNTIL KDVWLN[0]-1 DO KLGLDTA[I-1]=KLGLDTA[I]; KLGLDTA[KDVWLN[0]-1]=" "; # NOW DECIDE TYPE OF NEW LAST LINE IN DISPLAY # IF KDLGLST[0] NQ 0 THEN BEGIN DTYPE=KST"LLK"; IF KDESTST[0] EQ 0 THEN KN=KDLGLND[0]-KDLGLST[0]; ELSE IF KDAPPST[0] EQ 0 THEN KN=KDLGLND[0]+KDESTND[0]-KDESTST[0]; ELSE KN=KDLGLND[0]+KDESTND[0]+KDAPPND[0]-KDAPPST[0]; IF KN LS KDVWLN[0]-1 THEN DTYPE=KST"RESERVED"; END ELSE IF KDESTST[0] NQ 0 THEN DTYPE=KST"EST"; ELSE DTYPE=KST"APP"; END IF IEND[DTYPE] EQ 1 OR IEND[DTYPE] EQ 3 THEN BEGIN PARAMS1=0; DTYPE=KST"RESERVED"; END IF DTYPE NQ KST"RESERVED" THEN BEGIN PARAMS5=TRUE; PARAMS3=DTYPE; END IF IEND[DTYPE] EQ 2 THEN BEGIN PARAMS1=2; DTYPE=KST"RESERVED"; END IF TYPE EQ KST"LLK" OR DTYPE EQ KST"LLK" THEN BEGIN # CHECK LLCB-S FOR LAST LINE IN DISPLAY AND UPDATED VALUES # FOR KINDEX=1 STEP 1 UNTIL TNTBS[0]-1 DO BEGIN P = TNTLLAD[KINDEX]; KLMORE: IF P NQ 0 THEN BEGIN IF TYPE EQ KST"LLK" AND LLCBKNDX[0] GR KNDX THEN LLCBKNDX[0]=LLCBKNDX[0]-1; IF DTYPE EQ KST"LLK" AND LLCBKNDX[0] EQ KDLGLND[0] THEN BEGIN PARAMS1=LLCBKNDX[0]; PARAMS2=P; DTYPE=KST"RESERVED"; END # BEFORE WE QUIT,CHECK FOR ANY MORE LL SERVING THE TNT # IF LLCBFP[0] NQ 0 THEN BEGIN P = LLCBFP[0]; # GET DATA FROM THIS LLCB # GOTO KLMORE; END END # END LLCB SEARCH # END END IF TYPE EQ KST"EST" OR DTYPE EQ KST"EST" THEN BEGIN # LOCATE EST ENTRY TO DISPLAY ON LAST LINE OF DISPLAY # FOR KINDEX = 0 STEP NBTFETNO UNTIL NBTMAXID DO BEGIN IF TYPE EQ KST"EST" AND NBTKNDX[KINDEX] GR KNDX THEN NBTKNDX[KINDEX]=NBTKNDX[KINDEX]-1; IF DTYPE EQ KST"EST" AND NBTKNDX[KINDEX] EQ KDESTND[0] THEN BEGIN PARAMS1=NBTKNDX[KINDEX]; PARAMS2=KINDEX; DTYPE=KST"RESERVED"; END END END IF TYPE EQ KST"APP" OR DTYPE EQ KST"APP" THEN BEGIN FOR KINDEX = 1 STEP 1 UNTIL ATHAN[0] DO BEGIN P = ATACBA[KINDEX]; IF ATACBA[KINDEX] NQ 0 THEN BEGIN IF TYPE EQ KST"APP" AND ACBKNDX[0] GR KNDX THEN ACBKNDX[0]=ACBKNDX[0]-1; IF DTYPE EQ KST"APP" AND ACBKNDX[0] EQ KDAPPND[0] THEN BEGIN PARAMS1=KDAPPND[0]; PARAMS2=ATACBA[KINDEX]; DTYPE=KST"RESERVED"; END END END END IF DTYPE NQ KST"RESERVED" THEN PARAMS5=FALSE; # DO NOT CALL ADD # KLGLEND[KDVWLN[0]-1]=0; # MAKE SURE DISPLAY LINE IS TERMINATED # GOTO RJMAIN; END TERM