*DECK PATHDISEN 
USETEXT COMCBEG 
USETEXT COMRDSD 
USETEXT COMRNET 
PROC PATHDISEN(ORD,TYPE); 
# TITLE - PATHDISEN - ENABLE/DISABLE PATH # 
  
      BEGIN  # PATHDISEN #
  
# 
**    PATHDISEN - ENABLE/DISABLE PATH 
* 
*     EITHER ENABLE OR DISABLE PATH(ORD) DEPENDING ON TYPE
* 
*     PROC PATHDISEN(ORD,TYPE)
* 
*     ENTRY      - ORD - ORDINAL OF PATH TO MODIFY
*                  TYPE - TRUE=ENABLE,FALSE=DISABLE 
* 
*     EXIT       - PATH MODIFIED OR ERROR MESSAGE DISPLAYED 
* 
*     PROCESSING -
*         FIND ORDINAL
*         IF ORDINAL FOUND
*         THEN
*           IF CHANGE IN THIS PATH STATUS 
*           THEN
*             CHECK FOR AN ALTERNATE PATH 
*             IF NO ALTERNATE PATH
*             THEN
*               UPDATE NETWORK STATUS FOR THIS PATH'S PID 
*           PATH(ORDINAL) = TYPE
*         ELSE
*           CALL ERROR
*         RETURN
# 
  
      ITEM ORD U;       # ORDINAL TO CHANGE # 
      ITEM TYPE B;      # TRUE=ENABLE,FALSE=DISABLE # 
  
# 
****  PROC PATHDISEN XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        PROC ERROR; 
        ITEM NDTADDR  I;             # NETWORK DEFINITION TABLE ADDR #
        ITEM NADTBL;                 # NAD TABLE ADDRESS  # 
        PROC FALTPTH;                # FIND ALTERNATE PATH  # 
        PROC SPIDSTAT;               # SET PID STATUS  #
        END 
# 
****  PROC PATHDISEN XREF LIST END. 
# 
  
  
      ITEM DONE B;
      ITEM I I; 
  
    CONTROL IFEQ OS$NOS;
      ITEM ALTPTH     B;             # ALTERNATE PATH FOUND FLAG  # 
      ITEM CURPTHORD  I;             # CURRENT PATH ORDINAL  #
      ITEM CURPTHENBL B;             # CURRENT PATH ENABLED FLAG  # 
      ITEM PIDSTAT    I;             # PID NETWORK STATUS  #
      ITEM UPDTFLG    B = TRUE;      # SPIDSTAT UPDATE FLAG  #
    CONTROL ENDIF;
CONTROL EJECT;
  
      P<NET$HEADER> = NDTADDR;
      I = 0;
      DONE = FALSE; 
      IF ORD EQ 0 
      THEN
        BEGIN 
        DONE = TRUE;
        I = 1;
        END 
      ASLONGAS NOT DONE DO
        BEGIN 
        IF ORD GR (I + NET$NMPATH[0]) 
        THEN
          BEGIN 
          IF NET$NXTPID[0] EQ 0 
          THEN   # ORDINAL NOT FOUND #
            BEGIN 
            DONE = TRUE;
            END 
          ELSE
            BEGIN 
            I = I + NET$NMPATH[0];
            P<NET$HEADER> = NET$NXTPID[0];
            END 
          END 
        ELSE
          BEGIN 
          DONE = TRUE;
          P<PTH$ENTRY> = NET$PATHAD[0]; 
  
        CONTROL IFEQ OS$NOS;
          CURPTHORD = ORD-I;
          CURPTHENBL = PTH$ENABLE[CURPTHORD-1];  # CURRENT STATUS  #
          IF (TYPE AND NOT CURPTHENBL)  # ENABLE DISABLED PATH  # 
            OR (NOT TYPE AND CURPTHENBL)  # DISABLE ENABLED PATH  # 
          THEN
            BEGIN                  # CHANGE IN THIS PATH STATUS  #
            FALTPTH(CURPTHORD,ALTPTH);  # FIND ALTERNATE PATH  #
            P<PTH$ENTRY> = NET$PATHAD;
            P<NAD$ENTRY> = NADTBL + PTH$NADORD[CURPTHORD-1] 
                               * NAD$LENGTH;
            IF NOT ALTPTH          # NO ALTERNATE PATHS UP  # 
              AND NOT NAD$ESTOFF   # THIS PATH-S EST ON  #
            THEN
              BEGIN     #  UPDATE NETWORK STATUS FOR THIS PID  #
              IF TYPE 
              THEN
                BEGIN 
                PIDSTAT = NW$PTHSUP;
                END 
  
              ELSE
                BEGIN 
                PIDSTAT = NW$PTHSDIS; 
                END 
  
              SPIDSTAT(PIDSTAT,UPDTFLG);
              END 
  
            END 
  
    CONTROL ENDIF;
          PTH$ENABLE[ORD-I-1] = TYPE; 
          I = ORD;
          END 
        END 
      IF ORD NE I 
      THEN
        BEGIN 
        ERROR;
        END 
      RETURN; 
      END 
  
      TERM
