Google
 

Trailing-Edge - PDP-10 Archives - tops20-v7-ft-dist1-clock - 7-sources/wfrbukt.bli
There are 10 other files named wfrbukt.bli in the archive. Click here to see a list.
 %TITLE 'WFRBUKT - make a bucket current'
MODULE WFRBUKT (				! make a bucket the current bucket
		IDENT = '3-001'			! File: WFRBUKT.BLI Edit: CJG3001
		) =
BEGIN
!COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1981, 1988.  ALL RIGHTS RESERVED.
!
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ONLY
!IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION OF 
!THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR ANY OTHER COPIES THEREOF MAY 
!NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.  NO TITLE
!TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
!
!THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND 
!SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
!
!DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS 
!SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
!
!
!++
! FACILITY:	EDT -- The DEC Standard Editor
!
! ABSTRACT:
!
!	Make a specified bucket the current bucket.
!
! ENVIRONMENT:	Runs at any access mode - AST reentrant
!
! AUTHOR: Bob Kushlis, CREATION DATE: October 16, 1978
!
! MODIFIED BY:
!
! 1-001	- Original.  DJS 23-Feb-1981.  This module was created by
!	extracting routine READ_BUKT from module EDTWF.
! 1-002	- regularize headers.  JBS 19-Mar-1981
! 1-003 - Modify to use EDT$WORKIO. STS 15-Feb-1982
! 1-004 - Add literals for callable parameters. STS 08-Mar-1982
! 3-001 - Remove call to EDT$$CALLWIO. CJG 13-Jun-1983
!--

%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!

REQUIRE 'EDTSRC:TRAROUNAM';

FORWARD ROUTINE
    EDT$$WF_MAKECUR : NOVALUE;

!
! INCLUDE FILES:
!

REQUIRE 'EDTSRC:EDTREQ';

!
! MACROS:
!
!	NONE
!
! EQUATED SYMBOLS:
!
!	NONE
!
! OWN STORAGE:
!
!	NONE
!
! EXTERNAL REFERENCES:
!
!	In the routine
%SBTTL 'EDT$$WF_MAKECUR  - make a bucket current'

GLOBAL ROUTINE EDT$$WF_MAKECUR (		! Make a specified bucket the current bucket
	BUKT_NUM				! Number of the bucket to make current
    ) : NOVALUE =

!++
! FUNCTIONAL DESCRIPTION:
!
!	This routine insures that the bucket number passed as a parameter is the
!	current bucket.  If it is not already the current bucket then return the
!	current bucket to the cache (marking it as modified if necessary) and
!	make the new bucket current by bringing it into the cache if necessary.
!
! FORMAL PARAMETERS:
!
!  BUKT_NUM 		the number of the bucket to read.
!
! IMPLICIT INPUTS:
!
!	WF_DESC
!	WK_BUK
!	WK_CURBUK
!	WK_MODFD
!
! IMPLICIT OUTPUTS:
!
!	WF_DESC
!	WK_BUK
!	WK_CURBUK
!	WK_MODFD
!
! ROUTINE VALUE:
!
!	NONE
!
! SIDE EFFECTS:
!
!	May write and read the work file, especially if the cache is small.
!
!--

    BEGIN

    EXTERNAL ROUTINE
	EDT$$WF_RD : NOVALUE,		! Read from work file
	EDT$$WF_WR : NOVALUE;		! Write to work file

    EXTERNAL
	WF_DESC : BLOCK,		! descriptor for workfile record
	WK_BUK : 			! Pointer to current bucket
	    REF BLOCK [WF_BUKT_SIZE] FIELD (WFB_FIELDS),
	WK_CURBUK,			! Number of the current bucket
	WK_MODFD;			! Flag indicating bucket was modified

!+
! Do not read if we are reading the current bucket
!-

    IF (.WK_CURBUK NEQ .BUKT_NUM)
    THEN
	BEGIN
!+
! Mark the current bucket as modified, if it has been.
!-

	IF .WK_MODFD THEN EDT$$WF_WR (.WK_CURBUK, WF_DESC);

!+
! Read the new bucket, possibly from the cache.
!-
	WK_CURBUK = .BUKT_NUM;
	EDT$$WF_RD (.WK_CURBUK, WF_DESC);
	WK_BUK = .WF_DESC[DSC$A_POINTER];	! get address of record
!+
! The new bucket has not yet been modified.
!-
	WK_MODFD = 0;
	END;

    END;


END
ELUDOM