*DECK NDLCKPT 
USETEXT NDLER2T 
USETEXT NDLPS2T 
USETEXT NDLTBLT 
      PROC NDLCKPT(PORT,NODE$ID,PORT$STAT); 
      BEGIN 
*IF,DEF,IMS 
# 
**    NDLCKPT - CHECKS FOR DUPLICATE PORT NUMBERS.
* 
*     D.K. ENDO    81/10/12 
* 
*     THIS PROCEDURE, GIVEN A PORT NUMBER AND NPU NODE I.D., DETERMINES 
*     IF THE PORT NUMBER HAS ALREADY BEEN USED FOR A PREVIOUSLY DEFINED 
*     LINE OR TRUNK.
* 
*     PROC NDLCKPT(PORT,NODE$ID,PORT$STAT)
* 
*     ENTRY        PORT = PORT NUMBER TO BE CHECKED.
*                  NODE$ID = NPU NODE I.D. THAT SUPPORTS PORT.
* 
*     EXIT         PORT$STAT = RETURNED STATUS, SET TO TRUE IF PORT O.K.
* 
*     METHOD
* 
*     SEARCH FOR NODE$ID IN NPU TABLE.
*     IF NPU IS FOUND,
*       CHECK BIT MAP FOR PORT. 
*       IF BIT IS SET,
*       THEN, 
*         FLAG ERROR -- DUPLICATE PORT NUMBER.
*         CLEAR STATUS FLAG.
*       OTHERWISE,
*         SET BIT CORRESPONDING TO PORT 
*         SET STATUS FLAG.
* 
# 
*ENDIF
      ITEM PORT;             # PORT NUMBER TO BE CHECKED               #
      ITEM NODE$ID;          # NPU NODE I.D. THAT SUPPORTS PORT        #
      ITEM PORT$STAT B;      # RETURN STATUS OF PORT                   #
# 
****  PROC NDLCKPT - XREF LIST BEGINS 
# 
      XREF
        BEGIN 
        PROC NDLEM2;         # MAKES ENTRY IN PASS 2 ERROR FILE        #
        FUNC XCHD C(10);     # CONVERTS INTEGER TO HEX DISPLAY CODE    #
        END 
# 
****
# 
      ITEM CTEMP C(10);      # CHARACTER TEMPORARY                     #
      ITEM FOUND B;          # NODE I.D. FOUND FLAG                    #
      ITEM I;                # SCRATCH ITEM                            #
      ITEM ITEMP;            # INTEGER TEMPORARY                       #
      ITEM J;                # SCRATCH ITEM                            #
      CONTROL EJECT;
#                                                                      #
#                            NDLCKPT CODE BEGINS HERE                  #
#                                                                      #
      FOUND = FALSE;         # CLEAR FOUND FLAG                        #
      FOR I=1 WHILE NOT FOUND AND I LS NTWC[0] DO 
        BEGIN 
        IF NODE$ID EQ NTNID[I]
        THEN                 # IF NODE I.D. IS FOUND                   #
          BEGIN 
          FOUND = TRUE; 
          END 
        ELSE                 # NOT FOUND YET                           #
          BEGIN 
          I = I + NTENTSZ;   # POINT TO NEXT ENTRY                     #
          END 
        END 
      IF FOUND               # NPU WAS FOUND                           #
      THEN
        BEGIN 
        ITEMP = PORT;        # SAVE PORT NUMBER IN TEMPORARY           #
        FOR J=0 STEP 1 WHILE ITEMP GQ 0 DO
          BEGIN              # CALCULATE INDEX INTO PORT EXISTS BIP MAP#
          ITEMP = ITEMP - 60; 
          END 
        ITEMP = ITEMP + 60; 
        IF B<ITEMP,1>NTWORD[I+J] NQ 1 
        THEN                 # PORT HAS NOT BEEN USED                  #
          BEGIN 
          B<ITEMP,1>NTWORD[I+J] = 1;   # SET BIT CORRESPONDING TO PORT #
          PORT$STAT = TRUE;            # RETURN STATUS O.K.            #
          END 
        ELSE                 # PORT WAS ALREADY USED                   #
          BEGIN 
          CTEMP = XCHD(PORT);          # CONVERT PORT TO DISPLAY CODE  #
          NDLEM2(ERR102,STLNUM[0],CTEMP); # FLAG ERROR, DUPLICATE PORT #
          PORT$STAT = FALSE;           # RETURN ERROR STATUS           #
          END 
        END 
      ELSE                   # NODE I.D. NOT FOUND                     #
        BEGIN 
        PORT$STAT = FALSE;             # RETURN ERROR STATUS           #
        END 
      RETURN;                # **** RETURN ****                        #
      END # NDLCKPT # 
      TERM
