*DECK,UPKPID
USETEXT COMCBEG 
USETEXT COMQDEF 
USETEXT COMQKDS 
USETEXT COMQPID 
    PROC UPKPID;
      BEGIN  # UPKPID # 
# 
**    UPKPID     UPDATE STATUS,PID DISPLAY. 
* 
*     UPDATES THE STATUS,PID DISPLAY. 
* 
*     PROC UPKPID 
* 
*     ENTRY      DISPLAY HEADER INITIALIZED FOR PID DISPLAY.
* 
*     EXIT       DISPLAY ITEM AREA UPDATED. 
* 
*     PROCESS    FOR EACH ITEM IN DISPLAY RANGE:  
*                  CALL UPKPID1 TO GENERATE ITEM FOR ONE PID. 
* 
# 
  
# 
****  XREF
# 
      XREF
        BEGIN 
        PROC NAME;                 # DEBUG CODE # 
        PROC SETPLTA;              # LOCATE PID ENTRY # 
        PROC UPKPID1;              # GENERATE ITEM FOR ONE PID #
        END 
  
# 
****  XREF END
# 
  
      ITEM FIRSTPID   U;           # ORDINAL OF FIRST PID # 
      ITEM LASTPIDP1  U;           # ORDINAL + 1 OF LAST PID #
      ITEM ORDINAL    U;           # CURRENT DISPLAY ITEM ORDINAL # 
  
        $BEGIN
        NAME("UPKPID");            # DEBUG CODE # 
        $END
  
      SETPLTA(KD$LPID);            # POINT TO PID LAST DISPLAYED #
      FIRSTPID = 1 + ( (KS$CURPAGE[KDIS"PID"] - 1)
                      * KS$ITPERPG[KDIS"PID"] );
      IF FIRSTPID GT PIDNPID
      THEN
        BEGIN 
        FIRSTPID = PIDNPID; 
        END 
  
      IF FIRSTPID LE 0
      THEN
        BEGIN 
        FIRSTPID = 1; 
        END 
  
      LASTPIDP1 = FIRSTPID + KS$ITPERPG[KDIS"PID"]; 
      IF LASTPIDP1 GT (PIDNPID + 1) 
      THEN
        BEGIN 
        LASTPIDP1 = (PIDNPID + 1);
        END 
  
      ASLONGAS KD$LPIDORD NE FIRSTPID 
      DO
        BEGIN 
        P<PLTHDR> = PLTNXTPID;     # POSITION TO NEW FIRST PID #
        KD$LPIDORD = KD$LPIDORD + 1;
        IF KD$LPIDORD GT PIDNPID
        THEN
          BEGIN 
          KD$LPIDORD = 1; 
          END 
  
        END 
  
      KD$LPID = PLTPID; 
      SLOWFOR ORDINAL = 1 STEP 1 UNTIL (LASTPIDP1 - FIRSTPID) 
      DO
        BEGIN 
        UPKPID1(ORDINAL); 
        P<PLTHDR> = PLTNXTPID;
        END 
  
  
      END  # UPKPID # 
    TERM
