home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Interactive Guide
/
c-cplusplus-interactive-guide.iso
/
c_ref
/
csource1
/
program4
/
pushdbf.prg
< prev
next >
Wrap
Text File
|
1993-02-17
|
1KB
|
42 lines
#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))