Durchbl"attern in intern. Satznummernfolge und 'fam'

Thomas Berger ThB at gymel.com
Do Nov 22 18:04:01 CET 2001


Lieber Herr Allers,

> Ich möchte eine komplette Datenbank abgrasen und in jeder Aufnahmegruppe (=
> Hauptsatz und über Identif.-Nrn. mit ihm verknüpfte Bandaufführungssätze)
> gucken, ob es eine Signatur (#90) gibt und dann was damit machen; aber
> letzteres tut hier nichts zur Sache, denn mir geht es hier einzig um die
> Technik des Abgrasens.
> 
> Ich durchlaufe die Datenbank in der Folge der internen Satznummern, und
> immer dann, wenn ich auf Anhieb keine #90 finde, bilde ich mittels 'fam' die
> Aufnahmegruppe und blättere die durch auf der Suche nach einer #90.
> 
> Und wenn dann eine gefunden ist, dann kehre ich zum Ausgangssatz zurück
> (dem, der in der internen Satznummernfolge gerade dran war), "setze mich
> wieder drauf" (mache ihn zum aktuellen Satz) und greife dann den zur
> folgenden internen Satznummer gehörenden Satz.
> 
> Klingt schon ziemlich gewagt, immerhin handelt es sich um eine etwas
> verschachtelte Angelegenheit, funktioniert aber meinem Eindruck nach mit
> dieser Flexdatei:
> 
>   Datensatz mit int. Nr. 1 greifen
> find #1
> :bearb
...
> fam
> first
...
>   Rückschalten auf Satz, der in Satznummernfolge dran ist:
> var "#" #uy6
> find
...
> var "#" #uy6
> find
...
>   nächsten Satz in Satznummernfolge greifen:
> next #
...
 
> Es funktioniert auf der Demo-Datenbank bis zum Ende. Es funktioniert aber
> nicht auf einer Datenbank von mir. Da ich mittels 'write' das Geschehen im
> weentlichen mitprotokollieren lasse, sehe ich hinterher, wo der Prozeß
> abbricht und sich mit dem Dr.-Watson-Fehler verabschiedet: es ist ein Werk
> mit fast 50 Bandaufführungssätzen.
> 
> Kann es sein, daß es bei der Operation 'fam' eine obere Grenze für die damit
> induzierte Ergebnismenge gibt, bei deren Überschreiten die Fehlerprozedur in
> Gang gesetzt wird?

Mich wundert, dass es funktioniert und Sie noch nicht einmal "switch"
brauchen. Verschachteltes Durcharbeiten kann allegro nicht, aber
anscheinend sind die Konstruktionen "next #" etc. intern anders
realisiert, so dass Sie stets nur maximal eine Ergebnismenge haben.

Vielleicht bin ich da etwas altmodisch, aber warum nehmen Sie
keine Parameterdatei: Die Nachladegeschichten dort sind bekannt
zuverlaessig, und mit "download database" koennen Sie alles
durchjagen. Und Sie koennen die Parameterdatei ja sogar so
gestalten, dass sie Ihnen eine Folge von Satznummern liefert,
die Sie wiederum als Ergebnismenge einlesen und weiterverarbeiten
koennen. Aber ich kenne natuerlich Ihre konkrete Aufgabe nicht.

viele Gruesse
Thomas Berger




Mehr Informationen über die Mailingliste Allegro