*DECK DLSCAN
USETEXT DLFPDEF 
USETEXT ABH 
USETEXT DIRTBL
USETEXT DIRTBLH 
USETEXT DIRTBLM 
USETEXT DIRTBLS 
USETEXT DLONEL
USETEXT DLNOD 
USETEXT DLTLC 
USETEXT DRHDR 
USETEXT ERRMSG
USETEXT MISRES
USETEXT NHEADER 
USETEXT OCIOBB
USETEXT OFETB 
USETEXT OUTCDA
USETEXT WRDPAIR 
USETEXT ZFETB 
USETEXT ZHRCD 
PROC DLSCAN;                 # SCAN DEBUG LOG FILE                     #
*IF DEF,IMS 
 #
*1DC  DLSCAN
* 
*     1. PROC NAME           AUTHOR              DATE.
*        DLSCAN              S.KRULEVITCH        79/01/08 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        SCAN DEBUG LOG FILE FOR SPECIFIED MESSAGES.
* 
*     3. METHOD USED. 
*        LOOP EXECUTING AS FOLLOWS UNTIL THE COMPLETE FLAG IS SET.
* 
*        READ FIRST 3 WORDS IF NIP LOG FILE, FIRST 2 WORDS IF AIP 
*          LOG FILE. CALL DLDFM, SET COMPLETE FLAG, AND TEST LOOP 
*          IF A READ ERROR OR EOF/EOI IS ENCOUNTERED. 
*        UPDATE CURRENT MESSAGE NUMBER REFLECTING ACTUAL NUMBER 
*          OF MESSAGES ON ZZZZZDN FILE. 
*        CHECK TIME OF CURRENT MESSAGE TO SEE IF IT IS PAST 
*          MIDNIGHT. IF SO, COMPUTE NEW MIDNIGHT RT VALUE, AND
*          UPDATE DATE RECORDED.
*        SET CHOSEN FLAG. 
*        CALL DLMSG TO PROCESS ENTRIES IN MESSAGE PROCESSING TABLE. 
*        IF AIP LOG FILE, DETERMINE IF GET OR PUT CALL. IF NOT, AND 
*          ABH/NBH PROCESSING TABLE OR SUPMSG PROCESSING TABLES 
*          ARE NOT EMPTY, CLEAR CHOSEN FLAG. IF NETON CALL, READ
*          UP REST OF ENTRY.
*          READ ABH WORD. (CALL DLDFM, SET COMPLETE FLAG, AND TEST LOOP 
*          IF A READ ERROR IS ENCOUNTERED.) 
*        IF CHOSEN FLAG STILL SET AND ENTRIES EXIST IN ABH/DBC
*          PROCESSING TABLE:  
*          IF AIP LOG FILE, CALL DLABH TO PROCESS ENTRIES IN
*            ABH/NBH PROCESSING TABLE.
*          IF NIP LOG FILE, CALL DLNBH TO PROCESS ENTRIES IN
*            ABH/NBH PROCESSING TABLE.
*        IF TEXT EXISTS, READ IT. (CALL DLDFM, SET COMPLETE FLAG, AND 
*          TEST LOOP CONDITION IF A READ ERROR IS ENCOUNTERED.) 
*          IF CHOSEN FLAG STILL SET, CALL DLSM TO PROCESS 
*          ENTRIES IS THE SUPMSG PROCESSING TABLE.
*        IF TEXT DOES NOT EXIST, AND ENTRIES EXIST IN SUPMSG
*          PROCESSING TABLE, CLEAR CHOSEN FLAG. 
*        IF CHOSEN FLAG STILL SET, CHECK IF SM COUNT IS NONZERO.
*          IF SM COUNT IS NONZERO, DECREMENT IT AND CLEAR CHOSEN
*            FLAG.
*          IF SM COUNT IS ZERO, OUTPUT TIME,CALL DLAREP(IF AIP LOG FILE)
*            OR DLNREP (IF NIP LOG FILE) TO FORMAT AND WRITE DEBUG
*            LOG FILE ENTRY TO OUTPUT. ALSO INCREMENT COUNTER OF
*            NUMBER OF ENTRIES WRITTEN TO OUTPUT. 
*            TRUNCATE TEXT LENGTH IF NECESSARY. 
*            IF NETGETF, NETGTFL, OR NETPUTF, SET UP FRAGMENT SIZE
*              HEADING. 
*            OUTPUT TEXT. 
*        IF (EOF) IS ENCOUNTERED SET EOFFLAG TO TRUE AND
*        INITIALIZE FILE FOR READ.
* 
*     4. ENTRY PARAMETERS.
*        COMPLETE            =FALSE TO CONTINUE SEARCH
* 
*     5. EXIT PARAMETERS. 
*        NONE.
* 
*        ARGTBL NCIOBB NFETB
*     6. COMDECKS CALLED AND SYMPL TEXTS USED.
*        DIRTBL    DIRTBLH   DIRTBLM   DIRTBLS
*        DLFPDEF   DLONEL    DLNOD     DLTLC
*        DRHDR     ERRMSG    MISRES    NHEADER
*        NP$DLA    NP$TAA 
*        OCIOBB    OFETB     OUTCDA    WRDPAIR
*        ZFETB     ZHRCD
* 
*     7. PROCEDURES CALLED. 
*        DLABEND             ABORT PROGRAM
*        DLDIS               CONVERT FIELD TO HEX, OCTAL, DISPLAY, ASCII
*        DLDISDE              CONVERT FIELD FROM BINARY TO DECIMAL D C
*        DLDISO              CONVERT FIELD TO OCTAL DISPLAY 
*        DLABH               PROCESS AIP ABH DIRECTIVE TABLE
*        DLAREP              AIP DEBUG LOG FILE HEADERS 
*        DLDFM               DAYFILE MESSAGE PROCESSOR
*        DLFLUSH             WRITE EOR ON FILE
*        DLINT               INITIALIZE READING ON FILE 
*        DLMSG               PROCESS MESSAGE DIRECTIVE TABLE
*        DLNBH               PROCESS NIP NBH DIRECTIVE TABLE
*        DLNREP              NIP DEBUG LOG FILE HEADERS 
*        DLRECL              RECALL ON EVENT
*        DLSM                PROCESS SUPERVISORY DIRECTIVE TABLE
*        DLRDW               READ A SPECIFIED NO OF WORDS FROM FILE 
*        DLUPTM              CALCULATE THE CLOCK TIME FROM OFFSET 
*        DLWRITC             TRANSFER LINE TO CIO BUFFER
* 
*     8. DAYFILE MESSAGES.
*        *BAD FILE CONTENT* 
* 
 #
*ENDIF
  
# 
      EXTERNAL VARIABLES
# 
      XREF
        BEGIN 
        PROC DLABEND;        # ABORT MAIN PROGRAM                      #
        PROC DLDIS;          # CONVERT TO HEX, OCTAL, DISPLAY, ASCII   #
        PROC DLDISDE;        # CONVERT FIELD TO DECIMAL DISPLAY        #
        PROC DLDISO;         # CONVERT FIELD TO OCTAL DISPLAY          #
        PROC DLABH;          # PROCESS AIP ABH DIRECTIVE TABLE         #
        PROC DLAREP;         # AIP DEBUG LOG FILE HEADERS              #
        PROC DLDFM;          # DAYFILE MESSAGE PROCESSOR               #
        PROC DLFLUSH;        # WIRTE EOR ON FILE                       #
        PROC DLINT;          # INITIALIZE READING OF FILE              #
        PROC DLMSG;          # PROCESS MESSAGE DIRECTIVE TABLE         #
        PROC DLNBH;          # PROCESS NIP NBH DIRECTVE TABLE          #
        PROC DLNREP;         # NIP DEBUG LOG FILE HEADERS              #
        PROC DLSM;           # PROCESS SUPERVISORY MESSAGE TABLE       #
        PROC DLRECL;         # RECALL ON EVENT                         #
        PROC DLRDW;          # READ RECORD FROM CIO BUFFER             #
        PROC DLUPTM;         # CALCULATE CLOCK TIME                    #
        PROC DLWRITC;        # WRITE LINE TO CIO BUFFER                #
        PROC DLWRT;          # DIRECT WRITE TO CIO BUFFER              #
        END 
  
     XREF 
       BEGIN
       ARRAY PSTAB [0:0] S(2);
         ITEM PSNAME         C(0,0,7),# NEMONIC IN DISPLAY CODE        #
              PSVALUE        I(1);    # VALUE OF THE PFC/SFC NEMONIC   #
       ITEM PSSIZE;          # SIZE OF THE PFC/SFC NEMONIC TABLE       #
       END
  
# 
      COMMON VARIABLES
# 
      CONTROL NOLIST;        # SEE DLFP FOR LISTING OF ARGTBL          #
*CALL ARGTBL
      CONTROL LIST; 
      CONTROL NOLIST;        # SEE DLFP FOR LISTING OF NCIOBB          #
*CALL NCIOBB
      CONTROL LIST; 
      CONTROL NOLIST;        # SEE DLFP FOR LISTING OF NFETB           #
*CALL NFETB 
      CONTROL LIST; 
      LABEL EXIT ;
      BASED ARRAY DATLINE P(4); 
*CALL NP$DLA
*CALL NP$TAA
# 
      LOCAL VARIABLES 
# 
  
      ITEM
      I,                     # TEMPORARY INDEX VARIABLE                #
      J            I,        # TRACKS TAA LOCATIONS                    #
      K            I,        # TEMPORARY LOOP                          #
      LNCNTR,                # LINE COUNT FOR TEXT                     #
      MSG$LEN      I,        # MESSAGE LENGTH                          #
      N            I,        # TRACKS FRAGMENT/MESSAGE SIZE            #
      RSIZE        I,        # READ IN DATA SIZE                       #
      RETWDH       C(15),    # HEX DISPLAY LITERAL                     #
      RETWDO       C(20),    # OCTAL DISPLAY LITERAL                   #
      RETWDD       C(WC),    # DISPLAY CODE LITERAL                    #
      RETWDA       C(8),     # ASCII DISPLAY CODE LITERAL              #
      SHORT        B=FALSE,  # SHORT AIP ENTRY                         #
      YY,                    # YEAR TEMPORARY VARIABLE                 #
      MM,                    # MONTH TEMPORARY VARIABLE                #
      DD,                    # DAY TEMPORARY VARIABLE                  #
      ENTRSZ,                # SIZE OF ENTRY HEADER                    #
      RCDHR,                 # WORD TO HOLD TIME FOR RECORD HEADER     #
      IA,                    # TEMP VARIABLE FOR BINARY S              #
      IB,                    # TEMP VARIABLE FOR BINARY S              #
      IC,                    # TEMP VARIABLE FOR BINARY S              #
      ILOG, 
      FOUND B,               # TEMP VAR FOR BINARY SE                  #
      TEMP1        C(WC),    # TEMPORARY VARIABLE                      #
      TEMP2        I,        # TEMPORARY VARIABLE                      #
      TLWDIF       I;        # REMAINING WORDS IN FRAGMENT             #
      ARRAY TEMP3A S(1) ; 
      BEGIN 
        ITEM TEMP3   I(00,00,60) ;
        ITEM TEMP3PFC U(00,44,08) ; 
        ITEM TEMP3SFC U(00,52,08) ; 
      END 
  
      ARRAY TEMP4A S(1) ; 
      BEGIN 
        ITEM TEMP4    I(00,00,60) ; 
        ITEM TEMP4PFC U(00,04,08) ; 
        ITEM TEMP4SFC U(00,16,08) ; 
      END 
  
  
      ARRAY FRAGLN  P(6);    # CHARACTER ARRAY FOR FRAGMENT HEADER     #
        BEGIN 
        ITEM FH$CC    C(0, 0, 1); 
        ITEM FH$FMT1  C(0, 0,10) = [" FRAGMENT "];
        ITEM FH$NUM   C(1, 0, 3); 
        ITEM FH$FMT2  C(1, 0,10) = ["      SIZE"];
        ITEM FH$SZEQ  C(2, 0, 2); 
        ITEM FH$SIZE  C(2,12,8);
        ITEM FH$FMT3  C(3, 0,10) = ["ADDRESS = "];
        ITEM FH$ADDR  C(4, 0,10); 
        ITEM FH$FMT4  I(5, 0,WL) = [0]; 
        END 
  
      ARRAY L4 S(2);
        BEGIN 
        ITEM L4FIL1 C(0,0,1)     =[" "];
        ITEM L4CLTM C(0,6,8); 
        ITEM L4DOT3 C(0,54,1)     =["."]; 
        ITEM L4MILS C(1,0,3); 
        ITEM L4FIL2 C(1,18,7)       =[" "]; 
        END                  # L4 TIME                                 #
  
      ARRAY L6 S(7);
        BEGIN 
        ITEM L6FIL1 C(0,0, 6)     =[" "]; 
        ITEM L6LNO  C(0,36,3);
        ITEM L6FIL2 C(0,54,1)     =[" "]; 
        ITEM L6HEX  C(1, 0,15); 
        ITEM L6FIL3 C(2,30,1)     =[" "]; 
        ITEM L6OCT  C(2,36,20); 
        ITEM L6FIL4 C(4,36,2)      =[" "];
        ITEM L6DIS  C(4,48,10); 
        ITEM L6FIL5 C(5,48,2)     =[" "]; 
        ITEM L6ASCI C(6,0,8); 
        ITEM L6ZERO U(6,48,12)    =[0]; 
        END                  # TEXT ARRAY                              #
  
#     THE MAXIMUM LENGTH MESSAGE IS A MESSAGE OF LENGTH TLWMAX         #
#     IF THE MESSAGE HAS BEEN FRAGMENTED, THE MESSAGE LENGTH MAY BE    #
#     INCREASED BY A MAXIMUM OF MAXNA FRAGMENT SIZE/ADDRESS            #
#     DEFINITION WORDS INCLUDED WITH THE MESSAGE.                      #
#     THE SIZE OF TEMPB2+TEMPTAA = TLWMAX+MAXNA                        #
  
      ARRAY TEMPB2[0:TLWMAX];# AREA FOR MESSAGE TEXT FROM DEBUG LOG    #
        BEGIN 
        ITEM TEMPE2  U(0,0,WL); 
        ITEM TEMPFC  U(0,0,16); 
        END 
  
      ARRAY TEMPTAA[2:MAXNA];;# RESERVE AREA FOR FRAGMENTED TEXT ARRAY #
  
      ARRAY TWOL S(1);
        BEGIN 
        ITEM TOFIL1 C(0,0,8)      =["-"]; 
        ITEM TOFIL2 U(0,48,12)    =[0]; 
        END 
  
      BASED ARRAY DUMMY; ;
  
# ******************************************************************** #
  
  
      BEGIN 
      P<DRHDRWD> = LOC(ZHWD1[0]); 
      P<NHEADER> = P<DRHDRWD> + BLKHSIZE; 
      OUPART = FALSE;        # WRITE FULL LINES TO OUTPUT              #
      EOFFLAG = FALSE;
  
  
#     LOOP TO GENERATE OUTPUT                                          #
  
      FOR PAGE$COUNT = PAGE$COUNT WHILE NOT COMPLETE
      DO
        BEGIN 
        IF NIP
        THEN
          TEMP2 = ZNSIZE; 
        ELSE
          TEMP2 = ZASIZE; 
        DLRDW(ZFET, TEMP2, TEMPB1, RSIZE);
        IF RSIZE EQ 0 
        THEN
          BEGIN              # EOR ENCOUNTERED                         #
          DLINT(ZFET, READNR);# INITIALIZE READ AFTER EOR              #
          DLRDW(ZFET, 1, RCDHR, RSIZE); 
          DLRDW(ZFET, TEMP2, TEMPB1, RSIZE);
          END 
        IF RSIZE GQ 0        # NOT (EOF) OR (EOI)                      #
        THEN
          BEGIN              # DATA READ                               #
          IF TEMP2 NQ RSIZE 
          THEN
            BEGIN            # LOG FILE NOT CLOSED                     #
            COMPLETE = TRUE;
            DLDFM(NOT$CLOSED);
            TEST PAGE$COUNT;
            END 
          OUMSGNO = OUMSGNO + 1;
          ENTRSZ = RSIZE; 
  
          IF ZNMILS[0] GR MIDNITE 
          THEN
            BEGIN 
            MIDNITE = MIDNITE + 86400000; 
            YY = (C<0,1>L2DATE[0] - O"33") * 10 
                 + C<1,1>L2DATE[0] - O"33"; 
            MM = (C<3,1>L2DATE[0] - O"33") * 10 
                 + C<4,1>L2DATE[0] - O"33"; 
            DD = (C<6,1>L2DATE[0] - O"33") * 10 
                 + C<7,1>L2DATE[0] - O"33"; 
            IF YY - YY / 4 * 4 EQ 0 
            THEN
              NOD[2] = 29;
            ELSE
              NOD[2] = 28;
            DD = DD + 1;
            IF DD GR NOD[MM]
            THEN
              BEGIN 
              DD = 1; 
              MM = MM + 1;
              IF MM GR 12 
              THEN
                BEGIN 
                YY = YY + 1;
                MM = 1; 
                END 
              END 
            TEMP1 = "  /  /"; 
            C<0,1>TEMP1 = YY/10 + O"33";
            C<1,1>TEMP1 = YY - YY /10 * 10 + O"33"; 
            C<3,1>TEMP1 = MM / 10 + O"33";
            C<4,1>TEMP1 = MM - MM / 10 * 10 + O"33";
            C<6,1>TEMP1 = DD / 10 + O"33";
            C<7,1>TEMP1 = DD - DD / 10 * 10 + O"33";
            L2DATE[0] = TEMP1;
            END 
          CHOSEN = TRUE;
  
          IF DIRNUMM NQ 0 
          THEN
            DLMSG;                      # PROCESS MSG INPUT DIRECTIVES #
  
          IF NOT NIP
          THEN                          # AIP HEADER MAY BE 3 WORDS    #
            BEGIN 
            P<DATLINE> = LOC(TEMPB1); 
            IF DL$OPC[0] LQ OP$GSM OR 
               DL$OPC[0] EQ OP$LOG OR 
               (DL$OPC[0] GQ OP$GETF AND DL$OPC[0] LQ OP$GTFL)
            THEN             # GET OR PUT OR LOG CALL                  #
              BEGIN 
              TEMP2 = 2;                # 3 WORD HEADER                #
              SHORT = FALSE;
              END 
  
            ELSE
              BEGIN 
              SHORT = TRUE; 
              IF DIRNUMH NQ 0 OR DIRNUMS NQ 0 
              THEN
                BEGIN 
                CHOSEN = FALSE; 
                END 
              IF DL$OPC[0] EQ OP$ON 
              THEN
                BEGIN 
                NTOFF = FALSE;
                TEMP2 = 2;
                END 
  
              ELSE
                BEGIN 
                IF DL$OPC[0] EQ OP$OFF
                THEN
                  BEGIN 
                  NTOFF = TRUE; 
                  COMPLETE = TRUE;
                  END 
                TEMP2 = 0;
                END 
              END                       # NOT GET OR PUT ENTRY         #
  
            P<DUMMY> = LOC(TEMPB1) + ZASIZE;
            RSIZE = 0;
            IF TEMP2 NQ 0 
            THEN
              BEGIN 
              DLRDW(ZFET,TEMP2,DUMMY,RSIZE);
              ENTRSZ = ENTRSZ + TEMP2;
              END 
            IF TEMP2 NQ RSIZE 
            THEN
              BEGIN 
              COMPLETE = TRUE;
              DLDFM(NOT$CLOSED);# LOG FILE NOT CLOSED                  #
              TEST PAGE$COUNT;
              END 
  
            END                         # AIP HEADER ENTRY             #
  
          IF CHOSEN 
          THEN
            BEGIN # OUTPUT MESSAGE HEADER                              #
  
            DLCC = 0; 
            LTAA = 0; 
  
            IF DIRNUMH NQ 0 
            THEN
              BEGIN 
              IF NIP
              THEN
                DLNBH;         # NIP DEBUG LOG FILE HEADER DIRECTIVE   #
              ELSE
                DLABH;         # AIP DEBUG LOG FILE HEADER DIR TABLE   #
              END                       # HEADERS OUTPUT               #
  
            END 
  
#         PROCESS TEXT AREA                                            #
  
          MSG$LEN = BLKBS[0] - 2; 
          IF NOT NIP
          THEN
            MSG$LEN = MSG$LEN - 1;
  
          IF NOT SHORT
          THEN
            IF 0 LS MSG$LEN AND MSG$LEN LQ TLWMAX 
            THEN
              BEGIN          # READ MSG TEXT IN                        #
              DLRDW(ZFET, MSG$LEN, TEMPB2, RSIZE);
              IF RSIZE NQ MSG$LEN 
              THEN
                BEGIN        # FILE NOT CLOSED                         #
                COMPLETE = TRUE;
                DLDFM(NOT$CLOSED);
                TEST PAGE$COUNT;
                END 
              ELSE
                IF CHOSEN AND# IF SUP DIRECTIVES PRESENT,              #
                   DIRNUMS NQ 0# TEST MSG FOR SELECTION                #
                THEN
                  DLSM(TEMPB2); 
              END 
            ELSE
              IF 0 GR MSG$LEN OR MSG$LEN GR TLWMAX
              THEN
                BEGIN        # BAD LOG FILE                            #
                COMPLETE = TRUE;
                DLDFM(BAD$ZFILE); 
                TEST PAGE$COUNT;
                END 
  
          ELSE                          # NO TEXT                      #
            IF DIRNUMS NQ 0 
            THEN
              CHOSEN = FALSE; 
  
          IF CHOSEN 
          THEN
            IF SM NQ 0
            THEN
              BEGIN 
              SM = SM - 1;              # DECREMENT STARTING NUMBER    #
              CHOSEN = FALSE; 
              END 
  
          IF CHOSEN AND NOT ARGFLAG[NFILE]
          THEN
            BEGIN 
  
#           WRITE ENTRY HEADER                                         #
            TEMP3 = ZNMILS[0] - SRTMILS;
            TEMP2 = TEMP3 / 1000; 
            DLUPTM(SCLHHMMSS, TEMP2, TEMP1);# GET CLOCK TIME           #
            L4CLTM[0] = TEMP1;
            DLDISDE(TEMP3 - TEMP2 * 1000, 3, TEMP1);
            L4MILS[0] = TEMP1;
            OUPART = TRUE;   # OUTPUT A PARTIAL LINE                   #
            DLWRITC(L4,2);
            OUPART = FALSE; 
  
            MSG$COUNT = MSG$COUNT + 1;  # NUMBER OF MESSAGES OUTPUT    #
            IF NIP
            THEN
              DLNREP;                   # OUTPUT NIP HEADERS           #
            ELSE
              BEGIN            #  OUTPUT AIP HEADER                #
              DLAREP ;
              P<ABH> = P<DATLINE> + 3 ; 
              END 
  
            DLWRITC(ONEL,1);            # OUTPUT BLANK LINE            #
  
            IF MSG$LEN NQ 0 
            THEN
              BEGIN          # WRITE ENTRY TEXT                        #
              PAIR = FALSE; 
              IF NIP
              THEN
                TRUNC = MSG$LEN;
              IF TRUNC GR LENGTH
              THEN
                TRUNC = LENGTH; 
              LNCNTR = 0;# NUMBER OF LINES OUTPUT                      #
              N = TRUNC - 1;
              P<TAA> = LOC(TEMPE2[0]);
              J = 1;
              TLWDIF = TRUNC; 
              P<PWLHDR> = P<DRHDRWD> ;
              IF NIP
                    AND PWLID[0] EQ PWLIDVALUE
              THEN
                BEGIN 
                LNCNTR = LNCNTR + 1 ; 
                FOR LNCNTR = 1 STEP 1 UNTIL ZNSIZE
                DO
                  BEGIN 
                  DLDISDE(LNCNTR,3,TEMP1) ; 
                  L6LNO[0] = TEMP1 ;
                  DLDIS(CMWORD[LNCNTR-1] ,RETWDH,RETWDO,RETWDD,RETWDA) ;
                  L6HEX[0] = RETWDH ; 
                  L6OCT[0] = RETWDO ; 
                  L6DIS[0] = RETWDD ; 
                  L6ASCI[0] = RETWDA ;
                  DLWRITC(L6,7) ; 
                  END 
                END 
  
              IF     NOT NIP
                  AND DL$OPC[0] EQ OP$LOG 
                      AND DL$FORMAT[0] EQ 1 
              THEN
                BEGIN                # PROCESS NETLOG ENTRY            #
                ILOG = 0 ;
                FOR I = 0 STEP 1 WHILE I LQ N 
                                         AND DLCC NQ 0
                DO
                  BEGIN 
                  TEMP2 = TEMPE2[I] ; 
                  IF ILOG  EQ 0 
                  THEN
                    BEGIN                # FIRST WORD IN LINE TO LOG   #
                    DLWRITC(TEMP2,1) ;
                    ILOG = ILOG + 1 ; 
                    END 
                  ELSE
                    BEGIN                # WORD 1 TO 11 ON SAME LINE   #
                    DLWRT(OFET,TEMP2,1) ; 
                    ILOG = ILOG + 1 ; 
                    IF ILOG EQ 14 
                    THEN
                      BEGIN              # 12 PER LINE                 #
                      ILOG = 0 ;           # RESET TO BEGINNING OF LINE#
                      LINE$COUNT = LINE$COUNT + 1 ; # INCREMENT THE CNT#
                      END 
                    END 
                  END 
  
                DLWRITC(ONEL,1) ; 
                DLWRITC(ONEL,1) ; 
  
                GOTO EXIT ; 
                END                      # PROCESS NETLOG              #
              CONTROL FASTLOOP; 
              FOR K = 1 STEP 1 WHILE K LQ LTAA AND
                                     TLWDIF GR 0
              DO
                BEGIN 
                IF LTAA NQ 0
                THEN
                  BEGIN 
                  N = TAASIZE[J] - 1; 
                  IF N GQ TLWDIF
                  THEN
                    N = TLWDIF - 1; 
  
#                 FORMAT LOG ENTRY FOR FRAGMENTS                       #
                  DLDISDE(K, 3, TEMP1);# COMPUTE FRAGMENT NUMBER       #
                  FH$NUM[0] = C<0,3> TEMP1; 
  
                  DLDISDE(TAASIZE[J], 4, TEMP1);# CONVERT FRAG SIZE    #
                  FH$SIZE[0] = C<0,4> TEMP1;
                  FH$SZEQ[0] = " =";
  
                  DLDISO(TAADDR[J], 6, TEMP1);# CONVERT FRAG ADDR      #
                  FH$ADDR[0] = C<0,6> TEMP1;
  
                  IF K EQ 1 
                  THEN
                    FH$CC[0] = "0";# DOUBLE SPACE                      #
                  ELSE
                    FH$CC[0] = " ";# SINGLE SPACE                      #
  
                  DLWRITC(FRAGLN, 6); 
                  TLWDIF = TLWDIF - TAASIZE[J]; 
                  J = J + 1;
                  END 
  
                CONTROL SLOWLOOP; 
                FOR I = 0 STEP 1 WHILE I LQ N AND 
                                       DLCC NQ 0
                DO
                  BEGIN 
                  LNCNTR = LNCNTR + 1;# OUTPUT LINE OF TEXT            #
                  DLDISDE(LNCNTR, 3, TEMP1);
                  L6LNO[0] = TEMP1; 
                  TEMP2 = TEMPE2[I+J-1];
                  IF NOT NIP
                  THEN
                    IF ABHACT[0] EQ APPCMD  # CHARACTER TYPE IS 3      #
                    AND ABHADR[0] NQ 0      # A SYNCHRONOUS COMMAND    #
                    THEN
                      BEGIN 
                      TEMP4 = TEMP2;
                      TEMP3PFC[0] = TEMP4PFC[0];
                      TEMP3SFC[0] = TEMP4SFC[0];
                      END 
                    ELSE
                      TEMP3 = TEMPFC[I+J-1];
                  ELSE
                    TEMP3 = TEMPFC[I+J-1];
  
  
                    BEGIN           # REST OF THE CASES                #
                    DLDIS(TEMP2, RETWDH, RETWDO, RETWDD,
                                         RETWDA); 
                    L6HEX[0] = RETWDH;
                    L6OCT[0] = RETWDO;
                    L6DIS[0] = RETWDD;
                    L6ASCI[0] = RETWDA; 
                    IF I EQ 0 AND 
                        LTAA EQ 0 AND 
                    (( NOT NIP AND DL$ADR[0] EQ 0 AND ABHABT[0] GR APMSG
                                   AND DL$OPC[0] NQ OP$LOG )
                        OR
                    ( NIP AND ( ( CN[0] EQ 0 ) OR ( BT[0] EQ 7 )
                               OR ( ( CN[0] NQ 0 ) AND ( BT[0] EQ 4 ) ) 
                              ) 
                    ) 
                        OR ( NIP AND (( PWLID[0] EQ PWLIDVALUE )
                                AND ( PWLOP[0] EQ PWLOPNSM ) ) )
                 )
  
                    THEN
                      BEGIN  # FIRST WORD OF CONNECTION ZERO           #
                      IA = 0; 
                      IB = PSSIZE / 2;
                      FOUND = FALSE;
                      FOR IC = IC WHILE NOT FOUND AND 
                                        IA NQ IB
                      DO
                        BEGIN# BINARY SEARCH TABLE                     #
                        IC = (IA + IB) / 2; 
                        IF TEMP3 GR PSVALUE[IC] 
                        THEN
                          BEGIN 
                          IA = IC;
                          END 
                        ELSE
                          IF TEMP3 LS PSVALUE[IC] 
                          THEN
                            IB = IC;
                          ELSE
                            BEGIN 
                            FOUND = TRUE; 
                            L6DIS[0] = PSNAME[IC];
                            END 
                          IF IB EQ IA+1 
                          THEN
                            BEGIN 
                            FOUND = TRUE; 
                        IF TEMP3 EQ PSVALUE[IA] 
                        THEN
                          L6DIS[0] = PSNAME[IA] ; 
                        ELSE
                          L6DIS[0] = "UNKNOWN" ;
                            END 
                         END
                       END
                    DLWRITC(L6,7);
                    END 
                  END 
  
                DLWRITC(ONEL, 1); 
                DLWRITC(ONEL, 1); 
                IF LTAA NQ 0
                THEN
                  J = J + TAASIZE[J-1]; 
                END 
              END 
            ELSE
              DLWRITC(ONEL, 1); 
          END 
 EXIT:  
          IF CHOSEN AND 
             ARGFLAG[NFILE] 
          THEN
            BEGIN            # WRITE NEW DEBUG LOG FILE                #
  
            IF NMSGCNT GQ 500 AND 
               NOT NIP
            THEN
              BEGIN          # OVER 500 ENTRIES, EOR WRITTEN           #
              NMSGCNT = 0;
              DLFLUSH(NFET); # WRITE EOR                               #
              DLRECL(NFET); 
              DLWRT(NFET, RCDHR, 1);  # TIME FOR RECORD HDR            #
              END 
            DLWRT(NFET, TEMPB1, ENTRSZ);
            IF NOT SHORT
            THEN
              DLWRT(NFET, TEMPB2, MSG$LEN); 
            NMSGCNT = NMSGCNT + 1;
            END 
          END 
        ELSE
          BEGIN              # (EOF) OR (EOI) ENCOUNTERED              #
          IF RSIZE EQ -1
          THEN               # (EOF) ENCOUNTERED                       #
            BEGIN 
            EOFFLAG = TRUE; 
            DLINT(ZFET,READNR);  # INITIALIZE READ AFTER (EOF)         #
            END 
          COMPLETE = TRUE;
          END 
        END 
      END                    # DLSCAN                                  #
TERM
