*DECK KUPVTAB USETEXT NIPDEF USETEXT KDIS USETEXT KSTTAB PROC KUPVTAB; # UPDATE VIEW TABLE # STARTIMS; # *1DC KUPVTAB * * 1.PROC NAME AUTHOR DATE * KUPVTAB M.GIBIAN 84/01/20 * * 2.FUNCTIONAL DESCRIPTION * * UPDATE VIEW TABLE TO REFLECT KDVWLN DISPLAY STARTING FROM * FIRST NON-ZERO STARTING INDEX. * * 3.METHOD USED * * FOR EACH TYPE OF STRUCTURE IN THE DISPLAY (APP, EST, LGL), * SET THE END INDEX TO THE MIN(REMAINING LINES IN VIEW WINDOW, * MAXIMUM LINES FOR THIS TYPE) * IF MORE LINES IN VIEW THEN SET NEXT START INDEX TO 1 * ELSE SET NEXT START INDEX TO 0 * IF STRUCTURE NOT BEING DISPLAYED, SET END INDEX TO 0. * * * 4.ENTRY PARAMETERS. * * 5.OUTPUT PARAMETERS. * * 6.COMDECKS AND TEXTS USED. * * NIPDEF KDIS KSTTAB * * 7.ROUTINES CALLED * * XTRACE RECORD PROCESSOR CALLS * * 8.DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * # STOPIMS; # EXTERNAL CALLS # # INTERNAL VARIABLES # ITEM KREM I=0; # WORKING REMAINING LENGTH IN VIEW BUFFER # ITEM I I; ITEM J I; BASED ARRAY INDEXES S(1); BEGIN ITEM ISTART U(0,9,9); # START INDEX FIELD IN VIEW TABLE ARRAY # ITEM IEND U(0,18,9); # END INDEX FIELD IN VIEW TABLE ARRAY # ITEM IMAX U(0,27,9); # MAX INDEX FIELD IN VIEW TABLE ARRAY # END XREF BEGIN PROC XTRACE; END BEGIN CONTROL IFEQ DEBUG,1; XTRACE("KUPVT"); CONTROL FI; # ADJUST THE VIEW TABLE, USING THE FIRST NONZERO START LOCATION AS THE BASE (FIRST) LINE OF THE DISPLAY # P=LOC(KDAPPST[0])-1; KREM = KDVWLN[0]; FOR I=KST"APP" STEP 1 UNTIL KST"LLK" DO IF ISTART[I] GR 0 THEN BEGIN IF ISTART[I] GR IMAX[I] THEN ISTART[I]=IMAX[I]; IF IMAX[I] LQ KREM+ISTART[I]-1 THEN IEND[I]=IMAX[I]; ELSE IEND[I]=KREM+ISTART[I]-1; KREM=KREM-(IEND[I]-ISTART[I]+1); IF KREM GR 0 AND I LS KST"LLK" THEN ISTART[I+1] = 1; ELSE FOR J=I+1 STEP 1 UNTIL KST"LLK" DO ISTART[J]=0; END ELSE IEND[I]= 0; END TERM