[Allegro] "acon -j srch.job" als Ersatz fuer SRCH.EXE
Thomas Berger
ThB at Gymel.com
Di Jun 15 01:41:28 CEST 2010
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Liebe Liste, lieber Herr Eversberg,
ich habe srch.job so ueberarbeitet, dass es nun (zusammen mit einem
hinreichend neuen acon.exe) schematisch SRCH.EXE ersetzen kann:
D.h. es werden nun auch eher seltene Schalter wie -F oder -U (wiederholbar)
beruecksichtigt.
Bei der Implementierung habe ich versucht, soweit wie moeglich keine
Anwendervariablen zu nutzen, sondern nur die $-Variablen, die acon ja
mittlwerweile beherrscht.
Ausnahmen hiervon:
- - srch.job aus inst-all belegt #uiR mit der internen Satznummer, um (so der
Kommentar) e-solr.apr zu impfen (kein Verlass auf #nr?)
- - #ucc wird benutzt, weil gewisse if-Konstruktionen nicht mit $-Variablen
funktionieren
Zur Vorgehensweise: Die Kommandozeile wird Argument fuer Argument von links
nach rechts analysiert und alles gefundene in $ARGV{-k}, $ARGV{-d} etc.
abgelegt, Trenner zwischen den Werten wiederholt angegebener Schalter ist
der Zeilenvorschub ^J, der sollte in Kommandozeilen nun wirklich nicht
vorkommen.
Anschliessend werden die Schalter (an a99.ini orientierten) Namen zugeordnet,
also etwa
$ARGV{-k} ganz schematisch $OPTS.Konfiguration
$ARGV{-d} weniger schematisch $OPTS.ExportParam[0], $OPTS.OutputFile[0], ...
beides ist in je einem Unterprogramm realisiert, diese sind m.E. gute Kandidaten
fuer den kommenden Include-Mechanismus.
Anschliessend erfolgt dann analog dem Original-srch.job die Doppelschleife
ueber alle Saetze in allen Eingabedateien, ich habe mich aber bemueht, die
Tests etwas effizienter zu gestalten und die Ausgabe so zu gestalten, dass
die Konsole weder vollgemuellt wird noch der Eindruck entsteht, der Prozess
habe sich aufgehaengt.
Es sollte nun folgendes moeglich sein:
alte Aufruf der Form
%-P%\srch.exe ...
sollten ganz schematisch umsetzbar sein in
%-P%\acon -j%-P%\srch.job ...
ein bisschen haengt das allerdings davon ab, ob ein Schalter -b bereits gegeben
war bzw. wenn nicht, ob acon sich die Angabe der Datenbank aus dem Schalter
- -d konstruieren kann, evtl. muss man durch Angabe von -b%-d%\%-b% nachhelfen:
Es waere interessant zu wissen, in welchen Faellen von Alt-Aufrufen es
Probleme gibt.
Abweichungen zu SRCH.EXE
!!! Ein Endeabschnitt in den Parameterdateien wird nach dem letzten Datensatz
m.W. nicht ausgefuehrt
- - Tendenziell werden die Suchbegriffe in acon mittels "srx" (also regulaeren
Ausdruecken) verarbeitet, bei SRCH.EXE hausgemacht. Insbesondere bei
geklammerten Suchbegriffen oder solchen, die auf die Sonderzeichencodierung
in s1.asp rekurrieren, koennte es zu Abweichungen kommen. Mein Eindruck
ist allerdings, dass die meisten Exporte wenn ueberhaupt nur recht einfach
gelagerte Suchbegriffe benutzen und hier sowohl die Notation als auch
die Ergebnisse identisch sind.
- - aus dem Original-srch.job wurde uebernommen, dass es Defaults "e-1" und
outdat.adt fuer den Namen der Exportparameter bzw. der Exportdatei
gibt (insbesondere das letztere gefaellt mir nicht, Ausgabe sollte m.e.
in diesem Fall nach STDOUT gehen) [Da SRCH.EXE jedoch -d unbedingt
benoetigte, ist diese Abweichung keine Inkompatiblitaet]
- - Beim Ablauf erfolgt (nach STDERR) Hochzaehlen der Eingangsdatensaetze
(selektierte/gesamt), nicht der ausgegebenen Datensaetze. Animation erfolgt
nur bei -v1, nicht mehr bei -v0 (wenn man die Bildschirmanzeige in eine Datei
umleitet, haben da die CR-Zeichen, Farbumschaltungen und Backspaces schon
immer gestoert, -v0 setzt bei jedem 1000ten Datensatz ein diskretes
Puenktchen, mehr nicht).
- - zusaetzliche Schalter -T (= --debug), --verbose, --quiet
- - der Schalter -f (-f4, -f6) wird ignoriert es zaehlt -s (SRCH hingegen
ignorierte -s bei -f6)
- - die Angabe illegaler Schalter oder von Worten in der Kommandozeile, die
weder Schalter noch Argument zum vorangehenden Schalter sind, gilt als
Fehler.
- - Bei Fehlern werden diverse Errorlevel gesetzt (und analog zu SRCH der
Errorlevel 10 bei korrekter Verarbeitung aber Null Treffern)
- - die Performance ist leider vergleichbar mit SRCH.EXE (ich habe noch keine
gruendlichen Messungen vorgenommen, Export mit acon und srch.job ist m.E.
etwa doppelt so schnell wie mit SRCH, das ist etwas enttaeuschend, wenn
man die Steigerung um den Faktor 5 bedenkt, die das 32bit-Index.exe
gebracht hat)
Ich hoffe, dass dieses neue srch.job (sofern es die Tests besteht) in Zukunft
den derzeitigen srch.job in der Standarddistribution inst-all ersetzen kann.
Und ich hoffe, dass sich einige Anwendern finden, die den neuen srch.job
dergestalt testen, indem sie untersuchen, dass die Ergebnisse bytegenau
identisch mit den Resultaten der analogen Aufrufe von SRCH sind.
viele Gruesse & viel Spass beim Testen
Thomas Berger
Download der aktuellen Testversion:
http://svn.gymel.com/acxt-aconjob/srch.job
bzw. als .zip http://svn.gymel.com/acxt-aconjob/aconjobs.zip
SVN: https://svn.extra.gymel.com/repos/allegro/acxt/aconjob/trunk/
http://svn.gymel.com/repos/allegro/acxt/aconjob/trunk/ (readonly)
SVN Browser: http://svn.gymel.com/viewvc/allegro/acxt/aconjob/trunk/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iJwEAQECAAYFAkwWvigACgkQYhMlmJ6W47MfVgQAuSBS2rd0rR1fTT1tPaDy06Ze
nEsKM5Yv0iYBklp4nUdA8c+WqOesZzYb6IppxnaxNeB+khbgXmuY3MXTx4SU4nqI
itMpgCAAxilIC+fgFYqpYj7bwXGfx4AgbgYBHKYc8CaBXu/tlVKypP7nOND+9Mny
Nwkhgm07Q7s7WScFjtM=
=fDkO
-----END PGP SIGNATURE-----
Mehr Informationen über die Mailingliste Allegro