; ; ; RESETB ; ; RESETB- RESET DATABASE SEARCHES ; ; ROUTINE NAME: RESETB ; ; PURPOSE: RESETB forces the next search to reset to the ; first sibbling in the current level before start- ; ing the search. ; ; CALLABLE: From FORTRAN only: ; CALL RESETB(ROOT) ; ; PARAMETERS: ROOT The database root block and I/O buffers. ; ; ROUTINES USED: None. ; ; EXAMPLE: CALL RESETB(ROOT) ; ; FEATURES: No I/O is done until the next search (FNDKEY, ; MATCHK) is requested, and even then, no I/O is ; done if the first block of sibblings is already in ; core. ; ; AUTHOR: Mike Higgins ; ; SOURCE LANGUAGE: MACRO11 with SUPERMAC ; ; OBJECT MODULE NAME: RESETB ; ; LIBRARY: [60,100]DATABASE ; ; MAINTENANCE: See Mike Higgins ; ; ;REGESTER ASSIGNMENTS ROOT=R4 LEVEL=R2 .MCALL SUPER SUPER PROCEDURE RESETB ;(ROOT) LET ROOT := 2(R5) ;GET THE ROOT POINTER LET LEVEL := RT.PCL(ROOT) ;GET THE STACK POINTER ; ;DEACTIVATE THIS LEVEL. ;(THIS FORCES THE ACTIVATE ROUTINE TO RE- READ THE FIRST ;BLOCK IN THE LEVEL ONLY IF IT IS NOT IN CORE ALREADY) ;WHILE YOU ARE AT IT, CLEAR THE KEY FOUND BIT SO THAT ;THE NEXT FNDKEY CALL STARTS WITH A FRESH SLATE. ; LET LV.FLG(LEVEL) := . OFF.BY #FL.ACT!FL.FKY ENDPROCEDURE RESETB .END