*DECK NDLEM2
USETEXT NDLDATT 
USETEXT NDLER2T 
USETEXT NDLFETT 
      PROC NDLEM2(CODE,LINE,CLRWORD); 
      BEGIN 
*IF,DEF,IMS 
# 
**    NDLEM2 - PASS 2 ERROR MESSAGE PROC. 
* 
*     D.K. ENDO    81/10/22 
* 
*     THIS PROCEDURE MAKES AN ENTRY INTO THE PASS 2 ERROR FILE AND, 
*     IF NEEDED, FLUSHES THE CIO BUFFER.
* 
*     PROC NDLEM2(CODE,LINE,CLRWORD)
* 
*     ENTRY        CODE = ERROR CODE. 
*                  LINE = SOURCE LINE NUMBER ERROR WAS DETECTED ON. 
*                  CLRWORD = CLARIFIER WORD.
* 
*     EXIT         NONE.
* 
*     METHOD
* 
*     IF ERROR CODE IS NON-ZERO,
*     THEN, 
*       SET UP ENTRY. 
*       IF FATAL ERROR, 
*       THEN, 
*         INCREMENT ERROR COUNT.
*       OTHERWISE,
*         INCREMENT WARNING COUNT.
*     OTHERWISE,
*       CREATE ZERO ENTRY(FLAGS EOF). 
*     WRITE ENTRY TO FILE.
*     IF ERROR CODE IS ZERO,
*       FLUSH CIO BUFFER. 
* 
# 
*ENDIF
# 
****  PROC NDLEM2 - XREF LIST BEGINS
# 
      XREF
        BEGIN 
        PROC RECALL;
        PROC WRITEF;         # FLUSHES BUFFER AND WRITES EOF           #
        PROC WRITEW;         # WRITES ENTRY TO FILE                    #
        END 
# 
****
# 
      ITEM CODE;             # ERROR CODE                              #
      ITEM LINE;             # LINBE NUMBER THAT ERROR WAS DETECTED    #
      ITEM CLRWORD C(10);    # CLARIFIER WORD                          #
      ARRAY ELT [0:0]  S(2); # ERROR LISTING TABLE                     #
        BEGIN 
        ITEM ELTCODE I(0,0,12);        # ERROR CODE                    #
        ITEM ELTLINE I(0,12,18);       # LINE NUMBER                   #
        ITEM ELTCLRW C(1,0,10);        # CLARIFIER WORD                #
        ITEM ELTWRD1 U(0,0,60); 
        ITEM ELTWRD2 U(1,0,60); 
        END 
CONTROL EJECT;
#                                                                      #
#                            NDLEM2 CODE BEGINS HERE                   #
#                                                                      #
      IF CODE NQ 0           # BUFFER SHOULD NOT BE CLEARED            #
      THEN
        BEGIN 
        ELTWRD1[0] = 0;                # CLEAR FIRST WORD OF ENTRY     #
        ELTCODE[0] = CODE;             # MAKE ENTRY IN ERROR TABLE     #
        ELTLINE[0] = LINE;
        ELTCLRW[0] = CLRWORD; 
        IF EMT2TYPE[CODE] EQ "E"
        THEN                 # SET FLAG IN SOURCE                      #
          BEGIN 
          ERRCNT = ERRCNT + 1;         # INCREMENT FATAL ERROR COUNT   #
          END 
        ELSE
          BEGIN 
          WARNCNT = WARNCNT + 1;       # INCREMENT WARNING ERROR COUNT #
          END 
        END 
      ELSE                   # CLEAR BUFFER                            #
        BEGIN 
        ELTWRD1[0] = 0;                # MAKE ZEROED ENTRY             #
        ELTWRD2[0] = 0;                #   FLAGGING END OF TABLE       #
        END 
      WRITEW(ERR2FET,ELT,2); # WRITE ENTRY TO FILE                     #
      IF CODE EQ 0
      THEN                             # WRITE BUFFER TO FILE          #
        BEGIN 
        WRITEF(ERR2FET);
        RECALL(ERR2FET);
        END 
      RETURN;                # **** RETURN ****                        #
      END # NDLEM2 #
      TERM
