Consultor Eletrônico



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.