*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