cdc:nos2.source:nam5871:kdstin
Table of Contents
KDSTIN
Table Of Contents
- [00019] PRGM KDSTIN
- [00093] PROC MGETS
- [00094] PROC KDISLN
- [00095] PROC KPUT
- [00096] PROC KUPVTAB
- [00097] PROC XTRACE
Source Code
- KDSTIN.txt
- *DECK KDSTIN
- USETEXT NIPDEF
- USETEXT DRHDR
- USETEXT AT
- USETEXT PT
- USETEXT ACB
- USETEXT LLCB
- USETEXT NBT
- USETEXT KDIS
- USETEXT KINITBF
- USETEXT DISTAIL
- USETEXT KHDRX
- USETEXT PARAMP
- USETEXT TNT
- USETEXT KSTTAB
- USETEXT FREETAB
- USETEXT INPARUT
- USETEXT SYSTIME
- PRGM KDSTIN; # PROCESS DYNAMIC STATUS DISPLAY #
- STARTIMS;
- #
- *1DC KDSTIN
- *
- * 1.PROC NAME AUTHOR DATE
- * KDSTIN A.BEN-ARTZI 82/01/06
- M.GIBIAN 83/12/20
- *
- * 2.FUNCTIONAL DESCRIPTION.
- *
- * INITIATE THE STATUS DISPLAY SCREEN. IF CREATION CALL,
- * ALLOCATE VIEW WINDOW BUFFER AND INITIALIZE VIEW TABLE.
- * DISPLAY ALL LINES CURRENTLY IN VIEW WINDOW.
- *
- * 3.METHOD USED.
- *
- * IF THIS IS A CREATION CALL THEN
- * SET BLANK FLAG TO TRUE
- * SAVE ORIGINAL BUFFER
- * ALLOCATE VIEW WINDOW BUFFER AND CHAIN INTO PLACE
- * INITIALIZE THE VIEW TABLE BY
- * INITIALIZING THE APPLICATION START LINE
- * SCAN ACB-S, NBTE-S, AND LLCB-S TO COUNT THE NUMBER
- * OF LINES FOR EACH TYPE OF DISPLAY LINE. ASSIGN
- * A RELATIVE LINE NUMBER TO EACH ENTRY, AND STORE
- * THE MAXIMUM OF EACH TYPE IN THE VIEW TABLE.
- *
- * RESET THE SLOW UPDATE TIMER
- * IF THE BLANK FLAG IS SET, BLANK THE VIEW WINDOW, SET THE
- * STATUS TO CREATE, AND CLEAR THE BLANK FLAG.
- * CHECK ALL ACB-S, NBTE-S, AND LLCB-S AND DISPLAY ALL LINES
- * INDICATED AS BEING DISPLAYED BY THE VIEW TABLE.
- * IF CREATE IS SET, UPDATE THE MAIN HEADER
- * SET THE STATUS TO UPDATE
- *
- * LATER,EVERY ROUTINE,UPDATING A DATA WITCH IS SHOWN ON THE
- * DISPLAY(WHILE ST-DISPLAY IS ON) SHALL BE RESPONSIBLE TO
- * USE IT-S INDEX AND UPDATE IN THE BLOCK TOO.
- *
- * 4.ENTRY PARAMETERS.
- *
- * PARAMP1 = 1 - DO ONLY STATUS-DISPLAY UPDATE
- *
- * 5.OUTPUT PARAMETERS.
- *
- * 6.COMDECKS AND TEXTS USED.
- *
- * NIPDEF DRHDR AT PT ACB LLCB
- * NBT KDIS KSTTAB DISTAIL
- * KHDRX KINITBF PARAMP TNT
- * FREETAB INPARUT SYSTIME OSIZE
- *
- * 7.ROUTINES CALLED.
- *
- * MGETS ALLOCATE BUFFER
- * XTRACE RECORD PROCESSOR CALLS
- * KPUT PUTS VALUES IN BUFFER+CONVERT FROM B TO DISPLAY
- * KDISLN DISPLAY A SINGLE LINE IN THE VIEW WINDOW
- * KUPVTAB UPDATE THE VIEW TABLE
- *
- * 8.DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
- * THIS IS AN OVERSIZED PRIMARY OVERLAY CALLED
- * BY XEXEC.
- * W A R N I N G-THIS OVERSIZED PRIMARY OVERLAY CANNOT EXCEED
- *CALL OSIZE
- *
- #
- STOPIMS;
- #
- EXTERNAL CALLS
- #
- XREF
- BEGIN
- PROC MGETS;
- PROC KDISLN;
- PROC KPUT;
- PROC KUPVTAB;
- PROC XTRACE;
- LABEL RJMAIN ;
- END
- #
- INTERNAL VARIABLES
- #
- ITEM BUF U=0 ; # ADDRESS OF VIEW BUFFER #
- ITEM KREM I=0; # NUMBER OF LINES REMAINING IN VIEW BUFFER #
- # #
- ITEM KINDEX I=0; # COUNTER #
- ITEM KSIZE I=0; # TOTAL SIZE OF VIEW BUFFER #
- ITEM KN I=0; # INDEX INTO DATA BLOCK #
- #**********************************************************************#
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("KDSTN");
- CONTROL FI;
- # SET POINTERS AND INDICATE STATUS DISPLAY IS BEING SHOWN #
- KDST[0] = TRUE;
- #
- CHECK IF ONLY UPDATE IS REQUIRED
- #
- IF KDIS$STAT EQ STM"STM$UPDATE"
- THEN
- BEGIN
- BUF = KHDRNP[0] ; # GET VIEW POINTER FROM HEADER BLOCK #
- GOTO KUPDAT ;
- END
- KDBLNK=TRUE;
- #
- SAVE ORIGINAL BUFFER
- #
- P<DRHDRWD>=KDBP[0];
- BACKPTR[0]=LOC(KORIGBP[0]);
- NEXTPTR[0]=BACKPTR[0];
- BLKID[0]=DRIDVALUE;
- KORIGBP[0]=P<DRHDRWD>;
- KORIGFP[0]=P<DRHDRWD>;
- KDORIG[0]=FALSE;
- # ALLOCATE AND CHAIN INTO PLACE THE VIEW BUFFER #
- KSIZE = (KDVWLN[0]*KSTBLK) + BLKHSIZE + KHDRSIZE + 1;
- MGETS(KSIZE,BUF,TRUE);
- P<KINITBF>=0;
- KDTYPE[BUF+BLKHSIZE] = 0;
- K7777[BUF+KSIZE-1] = O"7777";
- KDSTAIL[BUF+KSIZE-1] = LOC(KDTLNAM)+1;
- KDFP[0] = LOC(KHDRBP[0]); # SET KDIS FORWARD ==> KHDRX #
- KHDRBP[0] = LOC(KDFP[0]); # SET KHDRX BACKWARD ==> KDIS FORWARD#
- KHDRNP[0] = BUF; # SET HEADER FORWARD POINTER TO VIEW BUFFER #
- P<DRHDRWD> = 0;
- NEXTPTR[BUF] = LOC(KDFP[0]); # VIEW NEXT ==> KDIS FORWARD #
- BACKPTR[BUF] = LOC(KHDRNP[0]); # VIEW BACK ==> KHDRX FORWARD #
- BLKID [BUF] = KDISIDVALUE;
- KHXNEXT[0] = BUF + BLKHSIZE + KHDRSIZE; # KHDRX 7777 CHAIN PTR #
- KDLSTOP[0] = LOC(KHDRX1); # CHAIN KDIS 7777 CHAIN PTR TO KHDRX#
- # INITIALIZE VIEW TABLE #
- KDAPPST[0] = 2; #FIRST DISPLAY STARTS WITH FIRST APPLICATION #
- KDIS$RT = KDST[0] AND KFAST[0];
- KN=3;
- FOR KINDEX = 1 STEP 1 UNTIL ATHAN[0] DO
- BEGIN
- IF ATACBA[KINDEX] NQ 0
- THEN
- BEGIN
- P<ACB> = ATACBA[KINDEX]; # WE WILL WRITE A LINE FRM THIS ACB#
- KN = KN+1 ;
- ACBKNDX[0] = KN; # THIS WILL BE ITS INDEX INTO DATA BLOCK #
- END
- END
- KDAPPMX[0] = KN;
- #
- NOW SEARCH THE SAME WAY ALL NBT ENTRIES
- #
- KN = 3 ;
- FOR KINDEX = 0 STEP NBTFETNO UNTIL NBTMAXID
- DO
- BEGIN
- IF NBTIUF[KINDEX]
- THEN # YES, THIS IS A LIVING ENTRY #
- BEGIN
- KN = KN + 1 ;
- NBTKNDX[KINDEX] = KN ;
- END
- END
- KDESTMX[0]=KN;
- #
- LAST REPEAT PROCESS FOR LOGICAL LINKS
- #
- KN = 3 ;
- FOR KINDEX = 1 STEP 1 UNTIL TNTBS[0]-1 DO
- BEGIN
- IF TNTLLAD[KINDEX] NQ 0
- THEN
- BEGIN
- P<LLCB> = TNTLLAD[KINDEX];#THIS IS AN LL WE SHOULD USE LATER #
- KL1: KN = KN + 1 ;
- IF LLCBHN[0] NQ 0
- THEN
- LLCBKNDX[0] = KN ; # INDEX INTO K-DISPLAY ST BUFFER #
- ELSE
- BEGIN # THIS IS A FAKE INTRA HOST LLK #
- KN = KN - 1 ;
- LLCBKNDX[0] = 0 ;
- END
- IF LLCBFP[0] NQ 0
- THEN # OH, WE HAVE ONE MORE LINK IN THIS ENTRY #
- BEGIN
- P<LLCB>=LLCBFP[0]; # SO, GET THIS ONE TWO #
- GOTO KL1; # AND DO TO IT THE SAME THING #
- END
- END
- END
- KDLGLMX[0]=KN;
- #
- END VIEW BUFFER/STATUS DISPLAY INITIALIZATION
- #
- KUPDAT:
- KSLOWTM[0] = RTSECS[0] ;
- KUPVTAB; # REVISE THE VIEW WINDOW #
- IF KDBLNK THEN # IF BLANK IS SET, CLEAR VIEW WINDOW + REDISPLAY #
- BEGIN
- P<KSTTAB>=BUF+BLKHSIZE+KHDRSIZE;
- FOR KINDEX = 1 STEP 1 UNTIL KDVWLN[0] DO
- BEGIN
- KAPPDTA[KINDEX-1] = " ";
- KAPPEND[KINDEX-1] = 0;
- END
- KDBLNK=FALSE;
- END
- #
- START LOOKING FOR DATA IN THE AT
- #
- #
- PROCESS APPLICATIONS IF ANY ARE DISPLAYED
- #
- IF (KDAPPST[0] NQ 0) THEN
- BEGIN
- IF KDAPPST LQ 2 THEN
- KDISLN(2,0,KST"APP"); # DISPLAY HEADER LINE #
- #
- CHECK ALL ACB-S TO SEE IF THEY ARE BEING DISPLAYED
- #
- FOR KINDEX = 1 STEP 1 UNTIL ATHAN[0] DO
- BEGIN
- P<ACB> = ATACBA[KINDEX];
- IF ATACBA[KINDEX] NQ 0 # ACB EXISTS #
- AND ACBKNDX[0] NQ 0 # STATUS DISPLAY LINE EXISTS #
- AND ACBKNDX[0] GQ KDAPPST[0] #GREATER THAN FIRST LIN #
- AND ACBKNDX[0] LQ KDAPPND[0] #LESS THAN LAST LINE #
- THEN # UPDATE APPLICATION STATUS LINE #
- KDISLN(ACBKNDX[0],ATACBA[KINDEX],KST"APP");
- END
- END
- #
- PROCESS ANY EST THAT IS DISPLAYED
- #
- IF KDESTST[0] NQ 0 THEN
- BEGIN
- IF KDESTST[0] LQ 2 AND KDESTND[0] GQ 2 THEN
- KDISLN(2,0,KST"EST");
- #
- START LOOKING FOR DATA IN THE EST HEADER
- #
- FOR KINDEX = 0 STEP NBTFETNO UNTIL NBTMAXID
- DO
- BEGIN
- IF NBTIUF[KINDEX]
- AND NBTKNDX[KINDEX] NQ 0 # STATUS DISPLAY LINE EXISTS #
- AND NBTKNDX[KINDEX] GQ KDESTST[0] #GTR THAN 1ST EST LN#
- AND NBTKNDX[KINDEX] LQ KDESTND[0] #LE LAST EST Y LINE #
- THEN
- KDISLN(NBTKNDX[KINDEX],KINDEX,KST"EST"); # GO DISPLAY#
- END
- END
- #
- DISPLAY ANY LOGICAL LINK LINES
- #
- IF KDLGLST[0] NQ 0 THEN
- BEGIN
- IF KDLGLST[0] LQ 2 AND KDLGLND[0] GQ 2 THEN
- KDISLN(2,0,KST"LLK");
- #
- START LOOKING FOR INFO ABOUT LOGICAL LINKS
- #
- FOR KINDEX=1 STEP 1 UNTIL TNTBS[0]-1 DO
- BEGIN
- P<LLCB> = TNTLLAD[KINDEX];
- KLMORE:
- IF P<LLCB> NQ 0 THEN # LLCB EXISTS #
- BEGIN
- IF LLCBKNDX[0] NQ 0 # STATUS DISPLAY LINE EXISTS #
- AND LLCBKNDX[0] GQ KDLGLST[0] # AFTER/IS FIRST LGL LN #
- AND LLCBKNDX[0] LQ KDLGLND[0] # BEFORE/IS LAST LGL LN #
- THEN # UPDATE LOGICAL LINK STATUS LINE #
- KDISLN(LLCBKNDX[0],P<LLCB>,KST"LLK");
- #
- BEFORE WE QUIT,CHECK FOR ANY MORE LL SERVING THE TNT
- #
- IF LLCBFP[0] NQ 0
- THEN
- BEGIN
- P<LLCB> = LLCBFP[0]; # GO GET DATA FROM THIS LLCB TOO #
- GOTO KLMORE;
- END
- #
- END LLCB SEARCH
- #
- END
- END
- END
- #
- UPDATE FIELDS IN MAIN HEADER
- #
- IF KDIS$STAT EQ STM"STM$CREATE"
- THEN
- BEGIN
- KPUT(LOC(KHDRXNM),0,KPHXNAP,KDAPPMX[0]-3);
- KPUT(LOC(KHDRXNM),0,KPHXNIN,INPNIN[1]);
- KPUT(LOC(KHDRXNM),0,KPHXRGL,HRL);
- KPUT(LOC(KHDRXNM),0,KPHXMFL,MAXFL);
- #
- AND UPDATE TIMER FOR STATISTICS
- #
- KSTATIM[0] = RTSECS[0] ;
- END
- KDIS$STAT=STM"STM$UPDATE";
- GOTO RJMAIN ;
- END
- TERM
cdc/nos2.source/nam5871/kdstin.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator