Kbase P9824: Miscalculation of checksum stored in the QC7
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  11/25/2003 |
|
Status: Unverified
FACT(s) (Environment):
Windows
FACT(s) (Environment):
Progress 9.x
SYMPTOM(s):
Miscalculation of checksum stored in the QC7
the origional code:
Def var cs as decimal format ">>>>>>>>>>>>>>9".
FIND FIRST Part200._Db.
FOR EACH Part200._File OF Part200._Db NO-LOCK
WHERE Part200._File._File-Number > 0:
Cs = cs + Part200._File._Last-change.
END.
CHANGE:
Migrated to v9
CAUSE:
In Version 9, there are system tables that all start with SYS that have the _Last-change field = ?.
This means the final cs value is = to ? also.
FIX:
1. SQL92 tables and views are filtered out
2. The _CRC value is used instead of _Last-Change
/* new_cs_v9.p */
DEF VAR qbf-h as DECIMAL FORMAT "zzz,zzz,zzz,zz9".
FIND FIRST [database]._Db.
FOR EACH [database]._File OF [database]._Db NO-LOCK
WHERE [database]._File._File-Number > 0:
/* filter out sql92 tables and views */
IF INTEGER(DBVERSION("[database]":U)) > 8 THEN
IF [database]._File._Owner <> "PUB":u AND [database]._File._Owner <> "_FOREIGN":u
THEN NEXT.
qbf-h = qbf-h + [database]._File._CRC.
END.
DISPLAY qbf-h.