Google
 

Trailing-Edge - PDP-10 Archives - BB-JF18A-BM - sources/rms/lodtop.b36
There are 3 other files named lodtop.b36 in the archive. Click here to see a list.
!
!	COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1986.
!	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.
!

%title 'L O D T O P -- Top of RMSLOD'
!<BLF/REQUIRE 'RMSBLF.REQ'>
!LANG:<PUCHRIK.FU>LODTOP.B36.3 20-Sep-85 12:56:51, Edit by PUCHRIK
!              Add Ron Lusk's pieces to get working RMSLOD.
MODULE lodtop (MAIN = driver,
		ENVIRONMENT (STACK = mystack)
		) =
BEGIN

LIBRARY 'rmsint';

LIBRARY 'bli:tops20';

EXTERNAL ROUTINE
    mapit : NOVALUE,				! Map to section 1
    demap : NOVALUE,				! Return to section 0
    freexabs,					! Free our memory
    lodcmd,					! Command processor
    lodcpy,					! Sequential load
    lodlod,					! Fast indexed load
    lodreo,					! Reorganize a file
    lodunl;					! Sequential unload

LITERAL
    !
    !   Operation values (keep in sync with those in LODCMD)
    !
    lod$k_load = 1,				! Load a file
    lod$k_reorg = 2,				! Reorganize a file
    lod$k_unload = 3;				! Unload a file

OWN
    mystack : VECTOR [%O'12000'],		! Huge stack
    status,
    operation,
    infab : $fab_decl,
    outfab : $fab_decl,
    intyp : $typ_decl,
    outtyp : $typ_decl;
ROUTINE driver : NOVALUE =
    BEGIN
    $fab_init (fab = infab, fac = nil, shr = nil, typ=intyp);
    $fab_init (fab = outfab, fac=<get,put>, shr=nil, fop=sup, typ=outtyp);
    $typ_init (typ = intyp);
    $typ_init (typ = outtyp);

    operation = lodcmd (infab, outfab);

    CASE .operation				! Choose what to do
    FROM lod$k_load TO lod$k_unload OF 		! ...
	SET

	[lod$k_load] :
	    BEGIN

	    IF .outfab [fab$v_org] EQL fab$k_idx	! Indexed load?
	    THEN
		BEGIN				! Use fast load routines
		status = lodlod (infab, outfab);	! Load the file
		END				! Whew!
	    ELSE
		BEGIN				! Just read and write file
		status = lodcpy (infab, outfab);
		END;

	    END;

	[lod$k_reorg] :
	    BEGIN
	    status = lodreo (infab, outfab);	! Copy file characteristics
	    END;

	[lod$k_unload] :
	    BEGIN
	    status = lodunl (infab, outfab);
	    END;
	TES;

    RETURN .status;
    END;					! End of DRIVER
END

ELUDOM