gymel  >> Tools  >> TBL-Konsistenz

Konsistenztests

Offline-Programme mit ähnlicher Funktionalität wie das allegro-Utility SNIFFER. Der Schwerpunkt der Tests liegt aber in der Konsistenz der Datenbank, auf ungütige Kategorien bzw. falsche interne Reihenfolge wird überhaupt nicht getestet.

 · Tblint  · Aldint  · 

[Download] (ZIP-Format, 8.2kB)

Aufrufe

Die Datenbank ist jeweils mit vollem Pfade und Namen (ohne Extension) anzugeben:
c:\allegro\demo\cat
oder
c:/allegro/demo/cat

^Top


Tblint

Konsistenztests ausgehend von der Satztabelle:

tblint.pl liest die Satztabelle (.TBL) der allegro-Datenbank ein und sucht jeden aufgeführten Satz auf, um dessen Anfang auf korrekte Rückreferenzierung zu testen.

Aufruf:
tblint.pl [-i[ ]Aufbohr-Faktor] [-k[ ]Kategorienschema] [-r[ ]VonBis] [-c[ ]Chunksize] Pfad_und_Name_der_Datenbank
 
Parameter:
Aufbohr-Faktor:
Die Offsets für die Satzpositionen in der .TBL-Datei sind als Vielfache dieses Faktors aufzufassen. Dieser Wert wird normalerweise automatisch anhand des 2. Bytes in der .TBL-Datei bestimmt.
Kategorienschema:
1. Buchstabe der Extension der zugehörigen .cLD-Dateien (Vorgabe: Umgebungsvariable -K, sonst A
VonBis:
Einschränkung auf Satznummernbereich
(Eingabe als Von-Bis, Von oder -Bis)
Chunksize:
Soviele Eintraege werden auf einmal getestet (Vorgabe: 10000)

Die Ausgabedatei tbl.err bleibt bestehen, sobald Fehler entdeckt wurden und enthält für jeden betroffenen Datensatz eine Zeile mit der Fehlermeldung.

Als Errorlevel wird eine Zahl zurueckgegeben, deren Bitmuster für jeden der folgenden Fehlerzustände eine 1 hat, sofern mindestens ein Satz betroffen war:

WertName Erläuterung
1 SPERR Satz gesperrt
2 NOACC .cLD nicht vorhanden / zugreifbar
4 MULTIIDMehrfacheintrag
8 WRONGNRfalsche Satznummer bei Vergleich
16 HIGHNR Satznummer zu hoch
32 NOSTARTSatz korrupt (Kein Anfang)

Anmerkung: MULTID und WRONGNR sind austauschbar: Zeigen zwei Einträge der Satztabelle auf denselben Datensatz, und werden sie gleichzeitig bei der Verarbeitung eingelesen (liegen also hinreichend nahe beieinander), so wird dies sofort bemerkt und mit MULTID quittiert. Anderenfalls kann dieser Datensatz aber nur auf eine Satznummer zurueckweisen, beim zwangsläufig erfolgenden Zweiten Test des Satzes gibt es dann einen Fehler WRONGNR.

^Top

Aldint

Konsistenztests ausgehend von den Datendateien:

aldint.pl liest die Satztabelle (.TBL) ein und sucht jeden aufgeführten Satz auf, um dessen Anfang auf korrekte Rückreferenzierung zu testen.

Aufruf:
aldint.pl [-i[ ]Aufbohr-Faktor] [-k[ ]Kategorienschema] [-r[ ]VonBis] [-I Idnr-Regexp] [-exp] [-tbl] Pfad_und_Name_der_Datenbank
 
Parameter:
Aufbohr-Faktor:
Die Offsets für die Satzpositionen in der .TBL-Datei sind als Vielfache dieses Faktors aufzufassen. Dieser Wert wird normalerweise automatisch anhand des 2. Bytes in der .TBL-Datei bestimmt.
Kategorienschema:
1. Buchstabe der Extension der zugehörigen .cLD-Dateien (Vorgabe: Umgebungsvariable -K, sonst A
VonBis:
Einschränkung auf Satznummernbereich
(Eingabe als Von-Bis, Von oder -Bis)
Idnr.-Regexp:
Angabe eines Suchmusters für die Identnummern:
Bsp.: "00 |89." (Die Anführungszeichen sind dazu da, den senkrechten Strich zu schützen)
-exp:
Export einer Kurzliste Datenbankname.raw mit den Spalten Identnr., Satzlänge und Dateinr.
-tbl:
Gegentest der Satznummer gegen die .TBL-Datei

Die Ausgabedateien Datenbankname_nnn.err bleiben bestehen, sobald Fehler entdeckt wurden und enthalten für jeden betroffenen Datensatz eine Zeile mit der Fehlermeldung.

Als Errorlevel wird eine Zahl zurueckgegeben, deren Bitmuster für jeden der folgenden Fehlerzustände eine 1 hat, sofern mindestens ein Satz betroffen war:

WertName Erläuterung
1 SPERR Satz gesperrt
2 STRANGEKomische Zeichen im Datensatz
4 NOID keine Identnummer
8 WEIRDIDmerkwürdige Identnummer
16 WRONGNRfalsche Satznummer bei Vergleich
32 HIGHNR Satznummer zu hoch
64 CORRUPTkein gültiges Satzanfangszeichen
128 NOEND Letzte Kategorie des Satzes ohne Kategorieendezeichen
-1 DESASTER.TBL nicht lesbar

Anmerkungen: HIGHNR und WRONGNR können nur vorkommen, wenn der Parameter -tbl angegeben wurde.

"Komische Zeichen" sind Zeichen aus einer festen Liste, die erfahrungsgemäß in "gesunden" Datensätzen nicht vorkommen sollten:

$wronglist = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e
              \x11\x12\x13\x16\x17\x18\x19\x1a\x1b\x1d\x1e\xff";
(Bei hierarchischen Sätzen kommen natürlich die Zeichen \x02 und u.u. weitere durchaus vor)

Der Gegentest gegen die .TBL kann durchaus andere Fehler bringen als ein Test mit tblint: Durch eine Fehlindexierung oder vorige korrupte Sätze kann es in der .cLD Datensätze geben, die in der .TBL nicht verzeichnet sind!

^Top

Bugs:

Die Identnummerntests von aldint sind vermutlich ziemlich sinnlos.

^Top

Änderungen:

27.11.2008
Aldint: Schalter -hn, Kontrolle von Hierarchien und leeren / unplausiblen / doppelten Kategorien
23.06.2000
Aldint monierte die Zeichen 0x12, 0x13, 0x16, 0x17, die in neueren Versionen des OSTWEST-Fonts legal sind.
28.05.2000
Aufbohrung berücksichtigt: Beide Routinen ermitteln anhand der .TBL-Datei bzw. Aufrufparameter -i den zutreffenden Faktor für die Berechnung der Satzposition in den .cLD-Dateien.
Errorlevel von aldint jetzt tatsächlich.
10.12.1999
Aldint ermittelt maximale Satznummer bei tendenziell zu hohen Satznummern jedes Mal neu: Weniger Fehlermeldungen bei »lebenden« Datenbanken.

Letzte Aktualisierung: 27.11.2008
submit more bugs here