*DECK KCHANGE 
USETEXT NIPDEF
USETEXT AT
USETEXT KDIS
USETEXT KSTTAB
USETEXT NBT 
USETEXT OVERLAY 
USETEXT PARAMS
USETEXT PT
  
 PRGM KCHANGE;               # PROCESS K DISPLAY CHANGE                #
  
 STARTIMS;
 STOPIMS; 
  
# 
      EXTERNAL REFERENCES 
# 
      XREF
        BEGIN 
        PROC LOCLLCB;        # LOCATE LOGICAL LINK CONTROL BLOCK       #
        PROC MRELS;          # RELEASE BUFFER                          #
        PROC OVLCALL; 
        PROC XTRACE;         # TRACE CALL                              #
        LABEL RJMAIN; 
        END 
# 
      LOCAL VARIABLES 
# 
      ITEM TYPE;             # STATUS DISPLAY BUFFER TYPE              #
      ITEM INDEX;            # INDUCTION VARIABLE, TABLE INDEX         #
      ITEM J;                # INDUCTION VARIABLE                      #
      ITEM NEXTKWL;          # FWA OF NEXT KWL                         #
  
      SWITCH ST$TYPE:KST     # SWITCH FOR VALID STATUS DISPLAY BUFFER  #
        LB$APP:APP,          # APPLICATION ACB                         #
        LB$EST:EST,          # EST                                     #
        LB$LLK:LLK;          # LOGICAL LINK LLCB                       #
  
      CONTROL EJECT;
  
      BEGIN # KCHANGE # 
  
      P<KWL> = LOC(KWLPTR[0]);
      NEXTKWL = KWL$NEXT[0]; # FWA OF FIRST KWL IN LIST                #
  
      IF KDST[0]
      THEN # IF STATUS DISPLAY IS STILL ON                             #
        BEGIN 
        FOR J=J WHILE KWL$NEXT[0] NQ 0
        DO    # PROCESS ALL KWL ENTRY(S) IN LIST                       #
          BEGIN 
          P<KWL> = KWL$NEXT[0]; # CURRENT KWL ENTRY                    #
          TYPE = KWL$TYPE[0]; # BUFFER TYPE TO ADD/DELETE              #
  
          PARAMS5=FALSE;
          IF KWL$ID[0] EQ KADDIDVALUE 
          THEN # ADD ENTRY TO STATUS DISPLAY                           #
            BEGIN 
            GOTO ST$TYPE[TYPE]; # CASE ON STATUS DISPLAY BUFFER TYPE   #
  
LB$APP:     # COMPUTE ACB ADDRESS                                      #
            INDEX = ATACBA[KWL$AN[0]];
            GOTO LB$CHANGE; 
  
LB$EST:     # COMPUTE NBT ENTRY INDEX                                  #
            FOR INDEX=0 STEP NBTFETNO WHILE NBTHN[INDEX] NQ KWL$HN[0] 
                                            AND INDEX LQ NBTMAXID 
            DO # SEARCH NBT FOR MATCHING COUPLER NODE NUMBER           #
              BEGIN 
              END # INDEX = NBT ENTRY INDEX                            #
            GOTO LB$CHANGE1;
  
LB$LLK:     # COMPUTE LLCB ADDRESS                                     #
            LOCLLCB(KWL$HN[0],KWL$TN[0],INDEX); 
            GOTO LB$CHANGE; 
  
LB$CHANGE:  
            IF INDEX EQ 0 
            THEN # ACB OR LLCB NOT EXISTS                              #
              GOTO LB$END;
LB$CHANGE1: 
            PARAMS1=TYPE; 
            PARAMS2=INDEX;
            OVLNAME=KADDP;
            OVLCALL;
LB$END: 
            END 
  
          ELSE # DELETE ENTRY FROM STATUS DISPLAY                      #
            BEGIN 
            INDEX = KWL$KNDX[0]; # STATUS DISPLAY LINE INDEX           #
            IF INDEX NQ 0 
            THEN # STATUS DISPLAY LINE EXISTS                          #
              BEGIN 
              PARAMS1=TYPE; 
              PARAMS2=INDEX;
              OVLNAME=KDELP;
              OVLCALL;
              END 
            END 
          IF PARAMS5 THEN 
             BEGIN
             OVLNAME=KOVDISP; 
             OVLCALL; 
             END
          END 
        END 
  
      FOR INDEX=INDEX WHILE NEXTKWL NQ 0
      DO # RELEASE ALL KWL ON LIST                                     #
        BEGIN 
        P<KWL> = NEXTKWL; 
        NEXTKWL = KWL$NEXT[0]; # NEXT KWL ENTRY                        #
        MRELS(P<KWL>); # RELEASE KWL                                   #
        END 
      KWLPTR[0] = 0;         # CLEAR KWL POINTER, ALL KWL(S) PROCESSED #
  
      GOTO RJMAIN;
      END # KCHANGE # 
      TERM
