*DECK,UPKSC 
USETEXT COMCBEG 
USETEXT COMQDEF 
USETEXT COMQKDS 
USETEXT COMQSCH 
USETEXT COMQSEL 
    PROC UPKSC; 
      BEGIN  # UPKSC #
# 
**    UPKSC     UPDATE STATUS,SC DISPLAY. 
* 
*     UPDATES THE STATUS,SC DISPLAY.
* 
*     PROC UPKSC
* 
*     ENTRY      DISPLAY HEADER INITIALIZED FOR SC DISPLAY. 
* 
*     EXIT       DISPLAY ITEM AREA UPDATED. 
* 
*     PROCESS    GENERATE ITEMS FOR EACH SC.
* 
# 
  
# 
****  XREF
# 
      XREF
        BEGIN 
        PROC NAME;                 # DEBUG CODE # 
        FUNC UPKXCDD    C(10);     # CONVERT INTEGER TO DPC # 
        END 
  
# 
****  XREF END
# 
  
      BASED ARRAY KSC [0:0] S(KDWDSPERLN);
        BEGIN 
        ITEM KSC$NAME   C(00,12,01);  # SELECTION CLASS NAME #
        ITEM KSC$STATUS C(00,30,10);  # SELECTION CLASS STATUS #
        ITEM KSC$LFSI   C(01,30,01);  # LOWER FSI # 
        ITEM KSC$DOTDOT C(01,42,02);  # .. #
        ITEM KSC$UFSI   C(02,00,01);  # UPPER FSI # 
        ITEM KSC$MAXCNT C(02,30,04);  # MAXIMUM SLOTS FOR SC #
        ITEM KSC$RSVCNT C(03,30,04);  # RESERVED SLOTS FOR SC # 
        ITEM KSC$INUCNT C(04,24,04);  # IN-USE SLOTS #
        ITEM KSC$AVLCNT C(05,24,04);  # AVAILABLE SLOTS # 
        END 
  
      ITEM AVAILABLE  U;           # AVAILABLE SLOTS FOR ONE SC # 
      ITEM I          U;           # LOOP VARIABLE #
      ITEM SLOTSFREE  U;           # TOTAL SLOTS FREE # 
  
        $BEGIN
        NAME("UPKSC");             # DEBUG CODE # 
        $END
  
      SLOTSFREE = SCHMAXCONS - ACNNO; 
      P<KSC> = LOC(KL$ITEM[1]) - KDWDSPERLN;
      FOR I = 0 STEP 1 UNTIL MXSEL-1
      DO
        BEGIN 
        P<KSC> = P<KSC> + KDWDSPERLN; 
        KSC$NAME = SEL$NAME[I]; 
        IF SEL$NOTDEF[I]           # IF SC NOT YET DEFINED #
        THEN
          BEGIN 
          KSC$STATUS = "UNDEFINED"; 
          CYCLE;                   # PROCESS NEXT SC #
          END 
  
        IF SEL$DISABL[I]           # IF SC IS DISABLED #
        THEN
          BEGIN 
          KSC$STATUS = "DISABLED";
          END 
  
        ELSE
          BEGIN 
          KSC$STATUS = "ENABLED"; 
          END 
  
        KSC$LFSI = SEL$LFSI[I] + O"33"; 
        KSC$DOTDOT = "..";
        KSC$UFSI = SEL$UFSI[I] + O"33"; 
        KSC$MAXCNT = UPKXCDD(SEL$MAXCNT[I]);
        KSC$RSVCNT = UPKXCDD(SEL$RSVCNT[I]);
        KSC$INUCNT = UPKXCDD(SEL$INUCNT[I]);
        IF SEL$MAXCNT[I] NE 0      # IF A MAXIMUM IS DEFINED #
        THEN
          BEGIN 
          AVAILABLE = SEL$MAXCNT[I] - SEL$INUCNT[I];
          IF AVAILABLE GT SLOTSFREE 
          THEN
            BEGIN 
            AVAILABLE = SLOTSFREE;
            END 
  
          END 
  
        ELSE
          BEGIN 
          AVAILABLE = SLOTSFREE;
          END 
  
        IF (NOT SEL$IGNORE[I])
          AND (SEL$RSVCNT[I] - SEL$INUCNT[I]) GT 0
        THEN
          BEGIN 
          SLOTSFREE = SLOTSFREE - (SEL$RSVCNT[I] - SEL$INUCNT[I]);
          END 
  
        KSC$AVLCNT = UPKXCDD(AVAILABLE);
        END 
  
      END  # UPKSC #
    TERM
