Sys(2007)
SYS(2007) returns a checksum that you can use to "fingerprint" a character string. This checksum can be used later to check if the value of the character string has changed. This function is the source of the CkVal field in the FoxPro resource file. Checksums are related to the original character field by some magical formula, which returns a number from zero to 65,535. Obviously, with only 65,536 combinations to choose from, SYS(2007) does not create a perfect, unique entry. For example, checksums run on the Details field of VFP 3's FoxHelp.DBF yield 72 duplicates on fewer than 3,000 records. But as a flag to determine if a single field has changed, it's suitable for many functions.
Usage |
cReturn = SYS( 2007, cString ) |
Parameter |
Value |
Meaning |
cString |
Character |
Value to be checksummed. |
cReturn |
Character |
5 characters containing a left-justified number. |
Example |
cCkVal = SYS(2007,Foxuser.Data) * * LogTime.PRG - time entry into resource diary PARAMETERS tcLogMessage PRIVATE ALL LIKE l* IF EMPTY(SET('RESOURCE',1)) WAIT WINDOW PROGRAM() + ": No resource in use!" RETURN .F. ELSE lcResSet = SET('RESOURCE') SET RESOURCE OFF ENDIF lnSelect = SELECT() SELECT 0 USE SET('RESOURCE',1) AGAIN ALIAS Diary LOCATE FOR TYPE = "DATA" AND ; ID = "DIARYDATA" AND ; NAME = DTOS(DATE()) IF NOT FOUND() INSERT INTO Diary VALUES ("DATA", "DIARYDATA", ; DTOS(DATE()),.F., 0, TIME() + ; " " + tcLogMessage, DATE()) ELSE REPLACE DATA WITH DATA + CHR(13) + TIME() + " " + tcLogMessage ENDIF REPLACE CkVal WITH VAL(SYS(2007, DATA)) USE IN Diary SELECT (lnSelect) SET RESOURCE &lcResSet RETURN |
See Also |