Handbuch-Beispiele als Test, search/seek mit Schlüsseltabelle
- doc/handbuch.txt: OCR-Text des COHERENT-/rdb-Handbuchs - demo/handbuch/ und test/handbuch_test.rb: Beispiele aus dem Lehrbuchteil, mise run test führt sie mit aus - search/seek: Schlüsselspalten aus dem Kopf der Schlüsseltabelle - gregorian -u ohne führende Null im Monat, mean ganzzahlig ohne .00 - Mit justify aufgefüllte Spaltennamen werden wieder gefunden - coherent.pdf in .gitignore
This commit is contained in:
@@ -13,7 +13,7 @@ sind nach dem Handbuch neu geschrieben.
|
||||
mise trust # einmal nach dem Clone: mise.toml freigeben
|
||||
mise install # Ruby 3.4
|
||||
mise run install # legt die Symlinks row, column, total ... in bin/ an
|
||||
mise run test # 114 Tests
|
||||
mise run test # 114 Tests und die Beispiele aus dem Handbuch
|
||||
```
|
||||
|
||||
Ohne `mise trust` brechen in einem frisch geklonten Ordner alle `mise`-Befehle ab.
|
||||
@@ -89,6 +89,28 @@ Eine Zeile mit `##` erscheint als Überschrift in der Ausgabe, eine mit `#` ist
|
||||
ein stiller Kommentar. Neue Befehle brauchen hier ein Beispiel, sonst schlägt der Test
|
||||
`test_testall_mentions_every_command` fehl.
|
||||
|
||||
## Beispiele aus dem gedruckten Handbuch
|
||||
|
||||
`doc/handbuch.txt` ist der Text des gedruckten Handbuchs „COHERENT /rdb Relational
|
||||
Database Manager“ (Mark Williams, 346 Seiten), per OCR aus dem Scan `coherent.pdf`.
|
||||
Er ist nicht korrigiert: Tabulatoren fehlen, Tabellen können verrutscht sein. Jede
|
||||
Seite ist mit PDF- und Buchseite markiert (Buchseite = PDF-Seite − 10). Kapitel 1–16
|
||||
sind ein Lehrbuch, Kapitel 17 enthält dieselben Man-Pages wie `man/`.
|
||||
|
||||
`demo/handbuch/` enthält die Beispiele aus dem Lehrbuch mit ihren Tabellen, ein
|
||||
Unterordner je Kapitel. `beispiele.txt` hält zu jedem Beispiel den Befehl und die
|
||||
Ausgabe, wie sie im Buch steht; `test/handbuch_test.rb` führt alles aus und vergleicht
|
||||
(ohne Leerraum, das Buch richtet mit Leerzeichen aus). In der Datei bedeutet:
|
||||
|
||||
```
|
||||
@ kap03 die folgenden Befehle laufen in diesem Unterordner
|
||||
## S. 26 ... Überschrift mit Buchseite
|
||||
$ befehl darunter die Ausgabe laut Buch
|
||||
# ... Kommentar, z. B. ein Druckfehler des Buchs (die Ausgabe ist korrigiert)
|
||||
! ... hier weichen wir bewusst ab; nicht verglichen, der Test meldet aber,
|
||||
wenn die Ausgabe doch wieder zum Buch passt
|
||||
```
|
||||
|
||||
## Vorlagen: `form` und `entry`
|
||||
|
||||
- `demo/form` ist eine Vorlage für `report` und `letter`: sie setzt Spaltenwerte in einen Text ein.
|
||||
@@ -217,10 +239,16 @@ er nicht mehr passt (außer mit `-a`). Beide halten die Indizes aktuell.
|
||||
## Unterschiede zum Original
|
||||
|
||||
- Es gibt kein COHERENT-Programmmaterial, daher sind die **Ausgaben nur anhand der
|
||||
Man-Pages geprüft**, nicht gegen das echte /rdb. Die Beispiele aus dem
|
||||
Handbuch sind als Tests enthalten (`test/rdb_test.rb`).
|
||||
- Die Indexdateien haben ein eigenes, einfaches Format (das Original ist nicht
|
||||
dokumentiert). Sie sind nicht mit alten /rdb-Dateien austauschbar.
|
||||
Man-Pages und dem gedruckten Handbuch geprüft**, nicht gegen das echte /rdb. Die
|
||||
Beispiele aus den Man-Pages sind als Tests enthalten (`test/rdb_test.rb`), die aus
|
||||
dem Lehrbuch in `demo/handbuch/` (`test/handbuch_test.rb`).
|
||||
- Die Indexdateien sind dem Original nachgebaut, aber nicht gleich (Handbuch S. 103–108):
|
||||
die Hashtabelle `.h` hat 2n statt 2n+1 Plätze, und in `.i` steht der Schlüssel vor
|
||||
dem Offset statt dahinter. Alte /rdb-Indizes muss man neu bauen.
|
||||
- `sorttable` lässt Zeilen mit gleichem Schlüssel in ihrer Reihenfolge; das Original
|
||||
ordnet sie nach der ganzen Zeile, wie `sort` (Handbuch S. 94).
|
||||
- `subtotal` schreibt bei einer Summe von null ein leeres Feld; das Handbuch zeigt
|
||||
`0` und die Kontonummern als `101.0` (S. 30).
|
||||
- Spaltennamen unterscheiden wie im Original Groß- und Kleinschreibung. Mit
|
||||
`RDB_ICASE=1` (z. B. in `mise.toml` unter `[env]`) wird sie ignoriert:
|
||||
ein exakter Treffer gewinnt, mehrere ähnliche sind ein Fehler. In
|
||||
@@ -252,6 +280,8 @@ lib/rdb/fast.rb Schnellzugriff über Byte-Offsets
|
||||
lib/rdb/cmd/*.rb die Befehle, nach Gruppen
|
||||
man/ Man-Pages (troff-Quellen aus den MWC-Archiven)
|
||||
demo/ Beispieltabellen; testall.cmds = je ein Beispiel pro Befehl, testall.old = letzter Lauf
|
||||
demo/handbuch/ die Beispiele aus dem gedruckten Handbuch, je Kapitel ein Ordner
|
||||
doc/handbuch.txt Text des gedruckten Handbuchs (OCR)
|
||||
test/ Tests
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user