*DECK FALTPTH 
USETEXT COMCBEG 
USETEXT COMRNET 
PROC FALTPTH(CURORD,ALTPATH); 
# TITLE  FALTPTH - FIND ALTERNATE PATH  # 
  
      BEGIN  # FALTPTH #
  
# 
**    FALTPTH - FIND AN ALTERNATE PATH
* 
*     FALTPTH SEARCHES THE NETWORK DESCRIPTION TABLE FOR AN ALTERNATE 
*     ENABLED PATH ASSOCIATED WITH THE PID. 
* 
*     PROC    FALTPTH (CURORD,ALTPATH)
* 
*     ENTRY   - NET$HEADER - BASED ARRAY CONTAINING CURRENT NDT ENTRY 
*               CURORD     - CURRENT PATH ORDINAL 
* 
*     EXIT    - ALTPATH    - TRUE IF ALTERNATE ENABLED PATH FOUND 
* 
*     PROCESS - SET ALTERNATE PATH FOUND FLAG TO FALSE. 
*               FOR EACH PATH ENTRY ASSOCIATED WITH THE CURRENT PID 
*               DO: 
*                 IF NOT CURRENT PATH 
*                   AND PATH ENABLED
*                   AND NAD EST ON
*                 THEN
*                   SET ALTERNATE PATH FOUND FLAG TO TRUE.
*               RETURN. 
# 
      ITEM    CURORD      I;         # CURRENT PATH ORDINAL  #
      ITEM    ALTPATH     B;         # ALTERNATE PATH FOUND  #
# 
****  PROC FALTPTH XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        ITEM NADTBL  I;              # START OF LOCAL NAD TABLE  #
        END 
# 
****  PROC FALTPTH XREF LIST END. 
# 
  
  
    CONTROL  IFEQ OS$NOS; 
  
      ITEM  PTHINDX I;               #  INDEX  #
  
    CONTROL EJECT;
      ALTPATH = FALSE;
      P<PTH$ENTRY> = NET$PATHAD;
      SLOWFOR PTHINDX = 1 STEP 1 UNTIL NET$NMPATH 
      DO
        BEGIN                        # CHECK AVAILABLE PATHS  # 
        P<NAD$ENTRY> = NADTBL + PTH$NADORD * NAD$LENGTH;
        IF (PTHINDX NE CURORD)       # ALTERNATE PATHS ONLY  #
          AND PTH$ENABLE
          AND NOT NAD$ESTOFF
        THEN
          BEGIN              #  ALTERNATE PATH FOUND  # 
          ALTPATH = TRUE; 
          EXIT PATHSRCH;
          END 
  
        P<PTH$ENTRY> = P<PTH$ENTRY> + PTH$LENGTH; 
        END  PATHSRCH:  
  
      CONTROL ENDIF;
  
      RETURN; 
      END    # FALTPTH  # 
  
      TERM
