Vb.74a: "avanti" beta 2

Bernhard Eversberg EV at buch.biblio.etc.tu-bs.de
Mo Aug 5 08:23:31 CEST 1996


Verlautbarung 74a der Entwicklungsabteilung                      960805
-------------------------------------------

Verbesserungen am "avanti"-Server
---------------------------------

Die Freigabe der ersten Version in der vorigen Woche war noch etwas
voreilig. Allerdings war das schon im ersten Satz der Verlautbarung
(mit der Bemerkung ueber C.F. Gauss) zugegeben worden. Jedoch:
Nichts ist anregender als die Praxis, nichts muehseliger als das 
nur theoretische Entwickeln von Programmen. Das letztere ist leider
unvermeidlich, wenn etwas ganz Neues entstehen soll, aber das
Produkt wird immer unvollkommen sein, wenn man es schliesslich mit 
der Praxis konfrontiert. So ist es auch in diesem Fall. Doch der Sprung
ins kalte Wasser hat sich gelohnt: die ersten praktischen Erfahrungen 
erbrachten eine Reihe von Anregungen, die einerseits zu Verbesserungen 
der Verarbeitungssicherheit, andererseits aber auch zu substantiellen 
Erweiterungen gefuehrt haben. 
Alles nachfolgende wurde in die Datei  avanti.txt  an den richtigen
Stellen eingearbeitet, damit man eine vollstaendige Dokumentation hat
und nicht diesen Text zusaetzlich beruecksichtigen muss.
Freigabe erfolgt nach weiteren Tests morgen, am 6.8.96.

MfG  B.E.

1. "put" statt "save"
---------------------
Bevor der Schreibbefehl freigegeben wurde, haben wir beschlossen, ihn
von "save" auf "put" zu aendern, weil der Lesebefehl schon "get" hiess.
Das klingt einfach plausibler. An einigen Stellen in "avanti.txt" stand
auch schon "put". Der Text wurde vereinheitlicht, "save" gibt es nicht mehr.

Ein Passwortverfahren o.ae. gibt es noch nicht. Vorlaeufig kann man die
Schreibfunktionen aktivieren, indem man die Zeile
@3
vor dem ersten "put", "delete" oder "upload" einsetzt. Ausserdem muss
der Server mit Option -a3 gestartet worden sein.
(Wenn man also einen "avanti"-Aufruf fuer Endnutzer bereitstellt, die nicht
schreiben duerfen: Option -a weglassen.)

2. "upload"
-----------
Ist jetzt ebenfalls freigegeben. Und zwar sowohl das Uploaden aus einer
Datei wie direkt aus dem Auftragstext.
Wenn also im Auftrag steht:

upload
#00 12345
#20 Faust
#40 Goethe, Johann Wolfgang von
#74 Frankfurt a.M.
...
#00 12346                      (neuer Satz beginnt mit #00)
#20 ...
...
end                            (upload-Daten enden hier)

Dann werden die zwischen "upload" und "end" eingebetteten Datensaetze
in die Datenbank eingemischt.  Danach kann der Auftrag mit anderen
Befehlen weitergehen.
Zwischen "upload" und "end" duerfen die Zeilen nur mit '#' oder ' '
anfangen, sonst bricht der Vorgang vorzeitig ab! (S. "news" 42, S.10)
Leere Zeilen sind erlaubt.

3. "if greater" und "if less"
-----------------------------

Da es oft unvorhersehbar ist, wie gross eine Ergebnismenge wird, will
man verhindern koennen, dass eine zu grosse Menge ausgegeben wird, oder
feststellen, ob die Zahl der Ergebnisse sehr klein ist.
Das geht mit diesen zwei Befehlen:

if greater N    Wenn die Ergebnismenge groesser als N ist, wird die
                naechste Zeile ausgefuehrt, sonst uebergangen

if less N       Wenn die Ergebnismenge kleiner als N ist, wird die
                naechste Zeile ausgefuehrt, sonst uebergangen

(Man wuerde eigentlich mit einem der beiden Befehle auskommen!)
Beispiel:

Langform:                       Kuerzeste Form:       Alternative:
   
find per goethe?                f per goethe?         f per goethe?
if greater 100                  i g 100               i l 101
jump zuviel                     j zuviel              j ausgabe
write length                    w l                   w l
write " Ergebnisse:"            w " Ergebnisse"       w " ist zuviel"
write newline                   w n                   w n
list numbered                   l n                   j ende
jump ende                       j ende                :ausgabe
:zuviel                         :zuviel               w l
write length                    w l                   w" Ergebnisse"
write " ist zuviel"             w "ist zuviel" C      w n
write newline                   :ende                 l n
:ende                                                 :ende


4. Weitere if-Befehle
---------------------
if hierarchy <label> Wenn der aktuelle Satz ein hierarchischer Satz ist 
                     (also Hauptsatz mit angehaengten Untersaetzen), wird 
                     nach :<label> gesprungen oder, wenn kein <label>
                     angegeben ist, die naechste Zeile ausgefuehrt.

if fam <label>       Wenn der aktuelle Satz zu einer Verknuepfungskette
                     gehoert (egal of Haupt- oder Untersatz), dann
                     Sprung nach :label

if main <label>      Wenn der aktuelle Satz Hauptsatz einer Verkn.Kette
                     ist, dann Sprung nach :label


5. download family
------------------
Wenn alle verknuepften Saetze (record family) auszugeben sind, genuegt es,
"download family" oder extrem verkuerzt "d f" zu schreiben. Was mit
den einzelnen Saetzen wirklich passiert, haengt natuerlich von den
Exportparametern ab, aber sie werden in der Reihenfolge abgearbeitet,
die sich aus dem Index ergibt. 
Voraussetzung hierzu ist, wie fuer den Befehl "switch family", dass
der Primaerschluessel an der Sprungmarke #-@ gebildet wird und die
Untersaetze durch Anhaengen von '+' mit einer Satznummer o.ae. an den
Primaerschluessel des Hauptsatzes gekennzeichnet sind. So wird es i.a.
ueberall gemacht.

6. write <cstring>
------------------
Hinter dem Befehl  write  kann man jetzt eine Steuerzeichenkette angeben,
wie im Handbuch (S. 154) definiert. D.h. man kann Text und Steuerzeichen
beliebig mischen, wie beim Export. Textteile muessen in "..." oder in
'...' eingeschlossen werden (innerhalb kann dann ' bzw. " vorkommen!)
Der Buchstabe C statt einer ASCII-Nummer erzeugt eine neue Zeile, und
zwar die Codes 13 10 bei DOS, 10 bei UNIX.
Beispiel:
            w C "Titel: "     neue Zeile, dann  Titel:
            w #20             Feld #20 enthaelt den Titel!

7. erase
--------
Dieser Befehl wurde dadurch abgesichert, dass man ihn als einzigen nicht
abkuerzen kann. Man muss "erase" hinschreiben und nichts anderes, dann
wird der aktuelle Satz geloescht.
(Die Gefahr ist zu gross, dass man z.B. versehentlich eine Kommentarzeile
ganz links und mit einem 'e' beginnen laesst, oder dass man "export" statt
"xport" schreibt - beides wuerde sonst als Loeschbefehl verstanden.

8. help keys
------------
Damit erhaelt man nur die Liste der Suchschluessel, die man in find-
Befehlen benutzen kann (d.h. die I-Befehle aus den Indexparametern).

9. Server anhalten
------------------
Mit dem Aufruf  av -h <server path>  kann man jetzt (vorher ging das
noch nicht) den auf <server path> laufenden Server anhalten. Er wartet
dann, bis man  av -r <server path> gibt, dann laeuft er weiter. Dazu
wird das dritte Byte der Datei  avanti.jb0  benutzt. Wenn der Server
hier eine '2' sieht, beendet er seine Arbeit, wenn er '1' sieht, wartet
er, bis wieder '0' oder aber '2' erscheint.

Fehlermeldungen
---------------

Die meisten Meldungen des Programms wurden in eine UIF-Datei ausgelagert,
nach guter alter Manier, und zwar UIFSGER. Diese darf man also nicht
vergessen! (Sonst Fehlermeldung)
Die Kommentare in dieser Datei machen auf weitere Moeglichkeiten der
Beeinflussung des Servers aufmerksam.

Als naechstes werden die Update-Modalitaeten bearbeitet, um "avanti"
als Alternative zu UPDATE einsetzen zu koennen. Damit wird der Server
eine erste definierte Ausbaustufe erreichen. Die Dokumentation wird dann
nochmals ueberarbeitet und in Form gebracht. Mindestens in Kurzform
wird sie in der Ausgabe 43 der "news" veroeffentlicht (Ende September).





Mehr Informationen über die Mailingliste Allegro