[Allegro] acon-Uneinheitlichkeiten
Bernhard Eversberg
ev at biblio.tu-bs.de
Do Jun 10 16:56:46 CEST 2010
Ein paar schnelle Antworten:
Thomas Berger schrieb:
>
> 1. koennte acon nicht auch auf die Existenz von freien
> Variablen testen duerfen:
>
> if $abc command [ab V26]
> Wenn die Variable $abc belegt ist, wird command ausgeführt.
Läßt sich machen.
>
>
> 2. relative Pfade:
> [allegro-Installation in g:\otto, dort auch Arbeitsverzeichnis:]
>
>> acon -j test.job -b.\demo\cat OK
> ProgDir=
>
>
> Vorwaerts-Slashes jedoch ein Problem:
>
>> acon -j test.job -bdemo/cat
> ProgDir=
> Directory for DB=avdemo is c:\allegro\demo2
> Database : cat ; User : opac ; Access : 0
>
> cat.adx not found in c:\allegro\demo2
>
OK, das können wir richten.
>
> 3. die in 2. offensichtliche Existenz eines Standard-Pfads
> "c:\allegro\demo2" fuer Datenbanken geht ja wohl gar nicht!
>
Was statt dessen?
Gedacht ist das nur als Sonderservice für Windows-Version, damit man
schnell mal eben einen Job ausprobieren kann, bei dem es auf die
Datenbank nicht wirklich ankommt; dann braucht man keine
@-Zeile und keine Option -b, sondern sagt einfach acon <xyz
um xyz.job zu testen. Ansonsten macht's ja keinen Sinn, einen
Job ohne Angabe der Datenbank zu starten, d.h. der Default hat
dann keine Wirkung.
>
> 4. Ein acon-Job moechte ja manchmal bei "Fehler" sich so beenden,
> dass die aufrufende Anwendung darauf reagieren kann (SRCH.EXE liefert
> z.B. errorlevel 10, wenn es 0 Treffer zum Suchbegriff gab). Derzeit
> liefert acon Errorlevel 1, wenn etwas mit dem Aufruf nicht geklappt
> hat, sonst ist es aber immer Errolevel 0. Koennte nicht "nur avanti"
> eingefuehrt werden, dass bei "end" der Inhalt der iV (oder iz/iZ?)
> als Zahl den Errorlevel von acon bildet?
Schau'mer mal.
>
>
> 5.
> var "$OPTS" $ARGV (0,2)
> liefert "$O" und nicht "$OPTS" plus zwei Zeichen
>
Man muß so schreiben:
var $ARGV (0,2)
ins #uv2
var "$OPTS" #uv2
Denn (0,2) wirkt, steht ein Spatium davor, auf den gesamten momentanen
iV-Text, nicht auf die $-Variable. Letzteres [analog zu #xyz(0,2)] geht
leider nicht.
>
> 6. variable Zuweisung an freie Variable ist gar nicht moeglich:
>
> 6a
> var "$ABC hallo"
> ins
> write "$ABC now >" $ABC "<" n
>
Das läßt sich auch machen.
>
>
> 7. Der include-Mechanismus (und eigentlich auch exec) ist m.E. auch fuer acon
> sehr interessant. Ich entwickle gerade ein bischen Job/Flex-code, der die
> Kommandozeilenschalter in eine freie Variable ueberfuehrt, die dann wie ein
> assoziatives Array nutzbar ist, das waere ein idealer Kandidat fuer ein per
> include einzubindendes ausgelagertes Unterprogramm.
>
> Im Hinblick auf die Nutzung in Avanti-Kontexten muss allerdings sichergestellt
> werden, dass nur gewisse (Vorschlag: relative, nur unterhalb des aktuellen
> oder Daten- Verzeichnisses, welches war das noch gleich?) Pfade fuer die
> einzubindenden / anzuschliessenden Dateien erlaubt sind.
>
Nicht so leicht, aber schau'mer mal.
>
> 8. Will man vorhandene Aufrufe von srch.exe in acon -j srch.job umwandeln,
> so geht folgendes schief:
> a. acon beruecksichtigt nicht die Umgebungsvariable -P
> b. typische Aufrufe waren srch ... -d*(Datenverz)\(Name)_*
> das "*" zwischen "-d" und dem Pfad stoert das "dir" in srch.job,
> es werden keine Dateien gefunden
> c. [desgleichen verhindert das "*", dass der Aufrufschalter -d fuer -b
> eintreten kann, wenn acon beim Start die Datenbank initialisieren will.
> man wird aber wohl stets schematisch "-b" setzen, wenn es um SRCH-
> Kompatiblitaet geht]
> d. typische Aufrufe waren auch srch ... -d(Dateiname)
> fuer eine .alg-Datei (implizite Extension also!) im Daten- oder
> Aufrufverzeichnis. Die funktionieren derzeit auch nicht.
> e. Nachfrage: srch.job erbastelt sich fehlende Inputdateien aus env -d,
> env -b und env -k1 (unueblich), wenn -d nicht angegeben ist. Sollte
> es nicht besser auf die beim Initialisieren fixierten cstrings
> D, B und K1 zurueckgreifen, die im Zweifel aus dem Aufrufschalter -b
> abgeleitet wurden?
>
Das sollte alles machbar sein.
> 9. ist eine .alg-Datei leer (0 Bytes) so geraet acon -j srch.job in eine
> Endlosschleife
> J:<E111> -1 fehlerhaft
>
Das muss verbessert werden.
B.Eversberg
Mehr Informationen über die Mailingliste Allegro