cdc:nos2.source:nam5871:dlscan
Table of Contents
DLSCAN
Table Of Contents
- [00021] PROC DLSCAN
- [00122] PROC DLABEND
- [00123] PROC DLDIS
- [00124] PROC DLDISDE
- [00125] PROC DLDISO
- [00126] PROC DLABH
- [00127] PROC DLAREP
- [00128] PROC DLDFM
- [00129] PROC DLFLUSH
- [00130] PROC DLINT
- [00131] PROC DLMSG
- [00132] PROC DLNBH
- [00133] PROC DLNREP
- [00134] PROC DLSM
- [00135] PROC DLRECL
- [00136] PROC DLRDW
- [00137] PROC DLUPTM
- [00138] PROC DLWRITC
- [00139] PROC DLWRT
Source Code
- DLSCAN.txt
- *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
cdc/nos2.source/nam5871/dlscan.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator