Vb.77: "avanti" 1.1
Bernhard Eversberg
EV at buch.biblio.etc.tu-bs.de
Di Sep 3 15:12:53 CEST 1996
Verlautbarung 77 der Entwicklungsabteilung 960903
------------------------------------------
"avanti"-Server Version 1.1
---------------------------
Die Erweiterung des "avanti"-Servers schreitet voran. Es wird in den
naechsten Tagen die Version 1.1 bereitgestellt.
Wir geben hier nur vorab eine Uebersicht der neuen Funktionen.
An den vorhandenen hat sich nichts geaendert.
Das Papier AVANTI.TXT wird zugleich aktualisiert, sobald wir die Freigabe
bekanntgeben.
Bevor wir zu den Neuerungen kommen, zuerst eine aktuelle
Befehlsuebersicht (alle Befehle)
-----------------
Es gibt 7 Gruppen von Befehlen:
1 Auftrags-Steuerbefehle
2 Suchen, Einlesen, Sortieren, Auflisten
3 Exportieren (Datensaetze und Texte in Download-Datei schreiben)
4 Manipulation von Daten im Arbeitsspeicher
5 Speicherfunktionen (Schreiben in die Datenbank)
6 Bedingungspruefungen und Spruenge
7 Schalter und Einstellungen
Es folgt eine alphabetische Kurzuebersicht, wobei die Gruppennummer
links angegeben ist:
4 copy Kopiere den aktuellen Satz (d.h. es entsteht ein neuer)
3 download Exportiere den aktuellen Satz
5 erase Loesche den aktuellen Satz (auch aus den Registern)
2 find Ergebnismenge erstellen (Pica-aehnlicher Find-Befehl)
2 get Hole einen Satz (er wird dadurch zum "aktuellen Satz")
2 help Information ueber die Datenbank ausgeben (Registernamen etc.)
6 if Bedingungen pruefen und nachfolgende Aktion
6 jump Springe zu einem label
2 list Kurzliste der Ergebnismenge ausgeben
4 new Aktuellen Satz als neuen (leeren) Satz behandeln
2 order Sortiere die Ergebnismenge (auf- oder absteigend)
5 put Schreibe den aktuellen Satz in die Datenbank zurueck
(einschl. aller Registeraenderungen)
2 qrix Registerauszug ausgeben
4 read Naechsten Satz aus einer ASCII-Datei in den aktuellen Satz
einlesen
7 set Setze diverse interne Werte und Zustaende
5 upload ASCII-Datei als neue Datensaetze einlesen und speichern
5 update ASCII-Datei einlesen, Saetze per Primaerschluessel identi-
fizieren und ggfls. ersetzen (incl. Registeraenderungen)
3 w/W Schreibe Text und Daten in Download bzw. Errordatei
3 xport Lade Exportparameter / Setze Exportdatei
4 # Aktionen mit Datenfeldern und Anwendervariablen
1 : Label (Sprungmarke)
1 @ Identifikation des Benutzers
Neu in Version 1.1
------------------
w #uxy Ausgabe einer Anwendervariablen
Alle w-Befehle lassen sich auf einer Zeile beliebig kombinieren, z.B.
w n "Ort: " #74 ": " #75 ", " #76 ". - " #77 n
#nnn=<cstring> Hinter dem '=' kann man dieselben Elemente verwenden,
die auch beim "write"-Befehl auftreten koennen, also
insbes. andere Kategorien und Anwendervariablen.
Achtung: das '=' muss auf der Position des ersten
Textzeichens sein (CFG-Befehl k), z.B.
#40 ="Meier, Fritz" #402="Schmidt, Kurt"
ist gleichwertig mit
#40 Meier, Fritz #402Schmidt, Kurt
Das gilt auch fuer die #u-Variablen:
#ubc="TEXT" oder #ubcTEXT
Die Kategorie #nnn kann also auch eine #u-Variable (Anwendervariable) sein.
Diese wird dann in den Hintergrundspeicher kopiert und kann spaeter wieder
benutzt werden. Man hat also Variablen des Typs #uxy zur freien Verfuegung.
Dieselben koennen innerhalb der verwendeten Exportparameter wie gewohnt
eingesetzt werden. Will man z.B. die Kategorie #90 in #usg aufbewahren,
braucht man nur #usg=#90 zu geben.
read <name> Datei <name> oeffnen und ersten Satz einlesen
ERROR wenn es nicht gelingt
read naechsten Satz einlesen
ERROR wenn nichts mehr da
Eingelesen wird der Satz in das Objekt 2, wenn
vorher "set obj 2" gegeben wurde, sonst in Objekt 1.
(siehe -> "set object ..." )
Statt mit "upload" oder "update" kann man folglich auch mit "read" und
"put" arbeiten, was man als Schleife organisieren muss. Das hat den
Vorteil, dass an jedem Satz vor dem Speichern Operationen durchfuehrbar sind.
(Siehe Beispiel 7: Saetze einzeln einlesen und speichern)
Mit "read" und "dow" kann man aber auch Grunddateien exportieren (Beisp. 8),
also "avanti" statt des konventionellen SRCH einsetzen (I-1.APR als Export-
parameter einsetzen).
if #uxy <cmd> Dasselbe, nur auf eine Anwendervariable #uxy bezogen.
D.h. <cmd> ausfuehren, wenn #uxy besetzt ist.
if #mmm = #kkk <cmd> Vergleiche Inhalt von #mmm mit #kkk
> Bei Gleichheit bzw. groesser/kleiner: <cmd> ausfuehren
< #mmm und/oder #kkk koennen Anwendervariablen sein.
Wenn #mmm oder #kkk nicht besetzt ist, gilt die
Bedingung als nicht erfuellt.
Statt #kkk kann auch eine Zahl stehen, dann wird ein
Zahlenvergleich durchgefuehrt, sonst Stringvergleich.
Teilfelder koennen nicht angegeben werden, dazu muss
man erst Anwendervariablen erzeugen, z.B.
#uv1 = #123$a // $a von #123 in #uv1 kopieren
#uv2 = #234$b // $b von #234 in #uv2 kopieren
if #uv1 = #uv2 ...
set object 1 / 2 Satz 1 / Satz 2 einschalten *1
s o 1 Es gibt zwei interne Arbeitsspeicher. Normalerweise
s o 2 ist Satz 1 eingeschaltet, d.h. alle Aktionen werden
in Satz 1 ausgefuehrt. Jederzeit kann man aber in
einem Auftrag auf Satz 2 schalten, einen Datensatz
mit "get" oder "read" hineinholen, damit Aktionen
durchfuehren und ihn auch mit "put" wieder speichern.
put 1 Satz 1 bzw. Satz 2 zurueckschreiben in die Datenbank.
put 2 Wenn man nur "put" schreibt, wird der gerade aktuelle
Satz geschrieben, der zuletzt mit "set o" angewaehlt
wurde. Wenn "set o" nicht benutzt wurde, ist es
immer der Satz 1.
set download 1 / 2 Download 1 oder 2 einschalten
s d 1 Es koennen 2 download-Parameter und -Dateien definiert
s d 2 sein. Normalerweise ist Download 1 aktiviert.
Wenn erstmals "set dow 2" gegeben wird, muss man
gleich danach "x p ..." und "x f ..." setzen, damit
dem Programm bekannt ist, was bei "download"
geschehen soll. Anschliessende "down"-Befehle laufen
dann mit diesem Set ab, bis wieder "set d 1" kommt.
set list i Maximalzahl Zeilen fuer den "list"-Befehl
(als Default ist 10 eingestellt)
set max i Maximalzahl Datensaetze fuer "down set"-Befehl
Beispiel 7. Saetze einzeln einlesen und speichern
-------------------------------------------------
NEWDATA ist eine Grunddatei neuen Typs (ASCII-Datei). Die Saetze sollen
eingelesen und gespeichert werden. Dabei soll jeder Satz noch vorbearbeitet
werden. Hier nur das Geruest, damit es uebersichtlich bleibt:
@3
read NEWDATA // QuellDatei wird geoeffnet, erste Satz wird eingelesen
:schleife
// Vorbearbeitung durch beliebige Befehle
....
put // dann Satz wegschreiben
read // naechsten Satz einlesen
if ok jump schleife // wenn noch einer da war, Sprung nach :schleife
Beispiel 8. Grunddatei exportieren
----------------------------------
Eine Grunddatei des neuen Typs kann man nicht mit dem alten SRCH einlesen.
Der "avanti"-Server kann sie aber lesen und auch exportieren:
Achtung: Als Ausgabe wird immer eine Datei des Typs .DNL erzeugt.
Wenn die Datei z.B. ROHDATEN heisst, braucht man nur diesen Job:
(Auf die Datenbank wird hierbei gar nicht zugegriffen, es sei denn,
man hat Nachladungen oder V14-Verknuepfungen in den Daten)
xport p p-normal // diese Exportparameter benutzen
// oder:
// x p i-1 // Grunddatei alten Typs erzeugen
xport d LISTE // ZielDatei
read ROHDATEN // QuellDatei wird geoeffnet, erste Satz wird eingelesen
:schleife
dow // Satz exportieren
read // naechsten Satz einlesen
if ok jump schleife // wenn noch einer da war, Sprung nach :schleife
--------------------------------------------------------------------------
Ferner wurden intern, was man nach aussen nicht merkt, die Voraussetzungen
fuer eine Umstellung auf das "pipe"-Konzept von UNIX bzw. das Socket-
Konzept von Windows verbessert.
MfG B.E.
Mehr Informationen über die Mailingliste Allegro