cdc:nos2.source:nam5871:bfscan
Table of Contents
BFSCAN
Table Of Contents
- [00004] PROC BFSCAN
- [00045] PROC ABORT
- [00046] PROC OMSG
Source Code
- BFSCAN.txt
- *DECK BFSCAN
- USETEXT NIPDEF
- USETEXT FREETAB
- PROC BFSCAN; # CHECK VALIDITY OF DYNAMIC BUFFER AREA #
- STARTIMS;
- #
- *1DC BFSCAN
- * 1. PROC NAME AUTHOR DATE
- * BFSCAN PC.TAM 78/07/28
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * SCAN THE FREE BUFFER CHAIN TO FIND DISCREPANCIES.
- *
- * 3. METHOD USED.
- * LOOP THROUGH ALL FREE BUFFERS,
- * CHECK IF FORWARD AND BACKWARD POINTERS OK FOR EACH.
- *
- * 4. ENTRY PARAMETERS.
- * FREFBFP FREE CHAIN FORWARD POINTER.
- * FREFBBP FREE CHAN BACKWARD POINTER.
- * CTLSFWA FWA OF DYNAMIC BUFFER SPACE
- * CTLSLWA LWA OF DYNAMIC BUFFER SPACE
- *
- * 5. EXIT PARAMETERS.
- * NONE.
- *
- * 6. COMMON DECKS CALLED AND SYMPL TEXTS USED.
- * FREETAB NIPDEF
- *
- * 7. ROUTINES CALLED.
- * OMSG LOG ERROR MESSAGES
- * ABORT ABORT NIP
- *
- * 8. DAYFILE MESSAGES.
- * *FREE CHAIN ERROR*
- *
- #
- STOPIMS;
- BEGIN # BFSCAN #
- CONTROL IFEQ BFSC,1;
- XREF
- BEGIN
- PROC ABORT; # ABORT NIP #
- PROC OMSG; # LOG ERROR MESSAGES #
- END
- ARRAY EMSG S(2); # ERROR MESSAGE TEXT. #
- BEGIN
- ITEM MS C(0,0,16) =["FREE CHAIN ERROR"];
- ITEM MS2 U(1,48,12) = [0];
- END
- ITEM
- PREBUF, # PREVIOUS BUFFER #
- BUFWA, # CURRENT FREE BUFFER #
- FWPT, # FORWARD POINTER OF CURRENT BUFFER #
- BKPT, # BACKWARD POINTER OF CURRENT BUFFER #
- BLKS, # BLOCK SIZE OF CURRENT BUFFER #
- SIZE, # TOTAL SUM OF SIZES OF BUFFERS #
- I;
- #**********************************************************************#
- P<FREEBUF> = 0;
- SIZE = 0;
- PREBUF = LOC(FREFBFP[0]);
- BUFWA = FREFBFP[0];
- FOR I = 1 STEP 1 WHILE I LQ FRENOFB[0]
- DO
- BEGIN
- FWPT = FRBFBFP[BUFWA];# FORWARD POINTER OF CURRENT BUFFER #
- BKPT = FRBFBBP[BUFWA];# BACKWARD POINTER OF CURRENT BUFFER #
- BLKS = FRBBS[BUFWA]; # BLOCK SIZE OF CURRENT BUFFER #
- IF BLKS LQ 0 OR
- (FWPT LS CTLSFWA AND FWPT NQ LOC(FREFBFP[0])) OR
- (BKPT LS CTLSFWA AND BKPT NQ LOC(FREFBBP[0])) OR
- FWPT GQ CTLSLWA OR
- BKPT GQ CTLSLWA OR
- BKPT NQ PREBUF
- THEN
- ABORT(EMSG,0);
- SIZE = SIZE + BLKS;
- PREBUF = BUFWA;
- BUFWA = FRBFBFP[BUFWA];
- END
- IF BUFWA NQ LOC(FREFBFP[0]) OR FREFBBP[0] NQ PREBUF OR
- SIZE NQ FRESFB[0]
- THEN
- BEGIN
- ABORT(EMSG,0);
- END
- CONTROL FI;
- END # BFSCAN #
- TERM
cdc/nos2.source/nam5871/bfscan.txt ยท Last modified: 2023/08/05 17:21 by Site Administrator