home *** CD-ROM | disk | FTP | other *** search
-
- #include "wat.ch"
-
- STATIC stack
-
- //────────────────────────────────────────────────────────────────────────────
- FUNCTION Pushdbf()
- *-- Purpose: To save the current state of the dbf
- *-- Updated: Sat 04-11-1992 10:03:01
- //────────────────────────────────────────────────────────────────────────────
-
- If(stack == NIL, stack := {}, NIL)
- aadd(stack, ;
- { select(), recno(), indexord(), set(_SET_SOFTSEEK), set(_SET_DELETED) } )
-
- RETURN len(stack)
-
-
- //────────────────────────────────────────────────────────────────────────────
- FUNCTION Popdbf(nPop) // Ex. nSav := Pushdbf()
- // Purpose: To Restore the saved state of the dbf. RECOVER using oErr
- // : Popdbf(nSav)
- // : END SEQUENCE
- // Updated: Sat 04-11-1992 10:03:46 Popdbf()
- //────────────────────────────────────────────────────────────────────────────
- LOCAL bot
-
- IF stack != NIL
- If(nPop == NIL, nPop := len(stack)-1, NIL)
- WHILE (bot := len(stack)) > nPop
- select(stack[bot,1]); dbgoto(stack[bot,2]); dbsetorder(stack[bot,3])
- set(_SET_SOFTSEEK, stack[bot,4])
- set(_SET_DELETED, stack[bot,5])
- ASHRINK(stack)
- ENDWHILE
- If(empty(stack), stack := NIL, NIL)
- ENDIF
-
- RETURN if(stack == NIL, 0, len(stack))
-
-
-