*DECK NDLWLCR 
USETEXT NDLDATT 
USETEXT NDLFETT 
USETEXT NDLNCFT 
USETEXT NDLTBLT 
      PROC NDLWLCR(NPU$NAME,LAST$ENTRY);
      BEGIN 
*IF,DEF,IMS 
# 
**    NDLWLCR - WRITE LINE CONFIGURE RECORD.
* 
*     D.K. ENDO    81/11/10 
* 
*     THIS PROCEDURE MAKES ENTRIES IN LINE CONFIGURE INDEX AND WRITES 
*     LINE CONFIGURE ENTRY TO FILE. 
* 
*     PROC NDLWLCR(NPU$NAME,LAST$ENTRY) 
* 
*     ENTRY        NPU$NAME = NAME OF NPU SUPPORT LINE. 
*                  LAST$ENTRY = LAST ENTRY FLAG.
* 
*     EXIT         NONE.
* 
*     METHOD
* 
*     IF NO FATAL ERRORS HAVE BEEN DETECTED,
*       IF NPU$NAME IS NOT EQUAL TO NAME IN CURRENT INDEX ENTRY,
*         IF NEED MORE TABLE SPACE FOR INDEX, 
*           ALLOCATE MORE SPACE.
*         MAKE NEW ENTRY IN INDEX.
*       IF LAST$ENTRY IS NOT SET, 
*       THEN, 
*         INCREMENT RECORD LENGTH.
*         INCREMENT ENTRY COUNT.
*         WRITE ENTRY TO FILE.
*       OTHERWISE,
*         FLUSH CIO BUFFER FOR LINE CONFIG FILE.
*         WRITE EOR MAKER FOR RECORD. 
* 
# 
*ENDIF
      ITEM NPU$NAME C(7);    # NAME OF NPU SUPPORTING LINE             #
      ITEM LAST$ENTRY B;     # LAST ENTRY INDICATOR                    #
# 
****  PROC NDLWLCR - XREF LIST BEGINS.
# 
      XREF
        BEGIN 
        PROC SSTATS;         # ALLOCATES MORE TABLE SPACE              #
        PROC RECALL;         # RETURNS CONTROL WHEN RECALL BIT CLEARED #
        PROC WRITER;         # WRITES -EOR-                            #
        PROC WRITEW;         # WRITES GIVEN NUMBER OF WORDS            #
        END 
# 
****
# 
      ITEM I;                # SCRATCH ITEM                            #
      ITEM ITEMP;            # INTEGER TEMPORARY                       #
      CONTROL EJECT;
#                                                                      #
#                            NDLWLNR CODE BEGINS HERE                  #
#                                                                      #
      IF ERRCNT EQ 0         # IF NO FATAL ERRORS HAVE BEEN DETECTED   #
      THEN
        BEGIN 
        IF NPU$NAME NQ LCRNAME[LCRWC[1] - 1]
        THEN                 # MUST BE A NEW ENTRY                     #
          BEGIN 
          IF (LCRWC[1] + 2) GQ LCR$LENG 
          THEN               # NEED MORE TABLE SPACE                   #
            BEGIN 
            SSTATS(P<LIN$CON$INDX>,30); 
            END 
          LCRWC[1] = LCRWC[1] + 1;     # INCREMENT WORD COUNT          #
          LCRWORD[LCRWC[1]] = 0;       # CLEAR FIRST WORD IN ENTRY     #
          LCRNAME[LCRWC[1]] = NPU$NAME;# PUT NPU NAME IN ENTRY         #
          LCRWC[1] = LCRWC[1] + 1;     # INCREMENT WORD COUNT          #
          LCRRL[LCRWC[1]] = 0;         # CLEAR RECORD LENGTH           #
          LCRRANINDX[LCRWC[1]] = LRCRI[0]; # SET POINTER TO SECTOR     #
          END 
        IF NOT LAST$ENTRY    # LAST ENTRY HAS NOT BEEN DETECTED YET    #
        THEN
          BEGIN 
                             # INCREMENT RECORD LENGTH                 #
          LCRRL[LCRWC[1]] = LCRRL[LCRWC[1]] + LCWC[0] + 1;
          IF LCNI[0] EQ 0    # IF THIS IS NOT A -GROUP- DEFINITION     #
          THEN
            BEGIN            # INCREMENT ENTRY COUNT BY ONE            #
            LCRENT[LCRWC[1] - 1] = LCRENT[LCRWC[1] - 1] + 1;
            END 
          ELSE               # THIS IS A -GROUP- DEFINITION            #
            BEGIN            # INCREMENT ENTRY COUNT BY -NI- VALUE     #
            LCRENT[LCRWC[1] - 1] = LCRENT[LCRWC[1] - 1] + LCNI[0];
            END 
          WRITEW(LRFET,LIN$CON$REC,LCWC[0]+1); # WRITE ENTRY TO RECORD #
          END 
        ELSE                 # LAST ENTRY WAS FOUND                    #
          BEGIN 
          WRITER(LRFET,0);   # FLUSH CIO BUFFER AND WRITE EOR TO FILE  #
          RECALL(LRFET);
          END 
        END 
      RETURN;                # **** RETURN ****                        #
      END # NDLWLCR # 
      TERM
