[Allegro] Unbesetzte Satznummern

Bernhard Eversberg ev at biblio.tu-bs.de
Di Jun 28 13:33:24 CEST 2005


Es trat das Problem unbesetzter Satznummern auf. Solche gibt es nur 
dann, wenn man eine "Bereinigung" (DOS: "Entlueftung") durchgeführt hat, 
siehe Org-Menue. Dann verschwinden die geloeschten Saetze (//-Einträge 
im Reg. 1) und die Nummern der beseitigten Saetze sind frei. Unter
/[0] im Reg. sind sie registriert und werden recycelt, wenn neue Nummern 
gebraucht werden.
Im FLEX werden sie eigentlich nur zum Problem, wenn man mit  find 
#nummer  genau auf eine solche stoesst. Mit  "if no ..." muss man diese 
Bedingung abfangen, wie es in der Beschreibung auch steht.
Mit  next #  bzw.  prev #  tritt das Problem nicht mehr auf da jetzt
(V25.6) solche Nummern übersprungen werden. In Ergebnismengen können 
solche Nummern nicht auftreten, denn sie haben keine Registereintraege 
außer /[0].

Wer, warum auch immer, mal die momentan freien Nummern rauskriegen will, 
kann dazu den nachfolgend abgebildeten FLEX einsetzen. Er ist zugleich 
ein Muster dafür, wie man die Datenbank als ganzes abarbeiten kann!
(Man beachte dabei auch, wie die Fortschrittsanzeige gelöst ist: es wird 
immer nach 100 Saetzen die schon bearbeitete Zahl und die Gesamtzahl im
Schreibfeld angezeigt. Denn der Fortschrittsbalken tut es bei der
Satz-fuer-Satz-Abarbeitung der Gesamtbank nicht.)

  ----------------------------------------------------------------------
   FINDVOID : Finde unbesetzte Saetze
   2005-06-28

var "bitte warten..."
sho iv
z=1
Z=0
#uzU
var t
ins #uzG

   Schleife arbeitet alle Saetze durch
:loop
   Ist eine Hunderterzahl erreicht? Dann im Schreibfeld anzeigen
var z "z"
if %00z% var z " / " #uzG;sho iv
var "#" z
find
   Ende erreicht?
if can jump ende
   Nummer ungueltig?
if no var #uzU "," z;ins #uzU;Z+1;jump weiter
if del jump weiter
   ... Und hier
   koennten Aktionen stehen, die nur ablaufen, wenn es ein
   gueltiger und nicht geloeschter Satz ist!
:weiter
z+1
jump loop

:ende

z-1
var ""
sho iv
var "Es gibt " z " Sätze, unbesetzt sind " Z " Nummern: " n #uzU(f",")
mes






Mehr Informationen über die Mailingliste Allegro