[Allegro] Vb.311: Programm rdwr.exe ersetzt durch rdwr.job

aresqa allegro aresqa at gmail.com
Mo Apr 15 09:46:35 CEST 2019


Verlautbarung 311 zur allegro-Entwicklung                    2019-04-15
---------------------------------------------------------

Dateien vom Typ .alg, .ald, .adt oder .txt zerlegen
-----------------------------------------------------------------

Wenig bekannt ist wohl das Programm "rdwr.exe". Was bedeutet der Name?
Ganz einfach: rd = read, wr = write - Es kann lesen und schreiben.
Aber was? Den Inhalt von Daten- oder Textdateien kann es lesen und
dann Auszüge (Abschnitte) in andere Dateien schreiben.

Wer rdwr.exe kennt, kann weiterlesen unter "rdwr.job ersetzt rdwr.exe".

Datendateien sind Dateien der Typen .alg, .ald und .adt.
Und wozu genau taugt das Programm, was kann es damit machen?
1. Es kann aus solchen Dateien, die SEHR groß sein können, einzelne
   Abschnitte herauskopieren in kleinere Dateien, und
2. Bei diesem Vorgang die Datenbankdaten in eine besser lesbare Form
   wandeln, die z.B. einem Texteditor angenehm ist.
So kann man riesige Dateien in handhabbare Abschnitte zerlegen oder
daraus mal beliebige Stichproben ziehen und inspizieren.

Die erste Version von rdwr.exe kam 1998 heraus, siehe vb238 und
   http://www.allegro-c.de/news/acn982/acn982.htm
Damit kann man also aus Dateien vom Typ .alg, .ald und auch .adt,
aber auf Wunsch auch aus normalen Textdateien (z.B. *.txt) kurze oder
lange Ausschnitte herausziehen.
Wenn etwa eine Datenbankdatei cat_1.ald 180000 Sätze enthielte,
könnte man z.B. die ersten 1000 oder den Abschnitt von 75000 bis 76000
herausziehen, oder jeden beliebigen anderen Abschnitt. Die Nummern
wären nicht die internen Nummern, sondern die laufenden vom Dateianfang
an gezählt. (Die Sätze stehen in einer .ald-Datei nicht in der Folge
der internen Nummern, sondern die Reihenfolge ist scheinbar chaotisch.)
Aber wozu ist das wichtig, solche Auszüge machen zu können?
Es kommt vor in der Praxis, daß jemand seine Datendateien mal mit
einer anderen Software oder einem speziellen Editor bearbeiten oder
begutachten will, dann jedoch feststellt, daß diese andere Software
keine Dateien mit mehr als 8 MB verarbeiten kann, und schon gar nicht
Dateien mit der Struktur einer .ald oder .alg-Datei. Dann ist es von
Vorteil, die Datei zerlegen zu können in mehrere Stücke, und diese dann
auch wandeln zu können in eine für andere Programme genießbare Textform.
Und genau das kann rdwr.exe:

Sagen wir, die Datei ist demo2\cat_1.ald, dann würde man mit

rdwr 1 300 demo2\cat_1.ald output1.alg

erreichen, daß man die ersten 300 Sätze in die Datei output.alg
geschrieben bekommt. Mit
rdwr 301 600 demo2\cat_1.ald output2.alg
kriegt man die nächsten 300 usw. Die Zahlen sind beliebig.
(Wer's nicht glaubt - ausprobieren!)
Wenn man hinten noch anhängt " -ee-1", dann kommen die Daten
in der .adt-Struktur raus.

-----------------------------
| rdwr.job ersetzt rdwr.exe |
-----------------------------
rdwr.exe ist leider ein altes Programm, das nicht mit 64bit läuft.
Anstatt sich um eine Compilierung mit 64bit zu bemühen, kam die
Idee auf, lieber einen Job rdwr.job zu schreiben, mit dem dann acon
die Sache erledigen kann, und acon gibt es für Windows und für Linux,
lauffähig unter 64 bit. Jeder .job, auch rdwr.job, ist unempfindlich
gegen das Betriebssystem! Und wo man schon dabei war, wurden die
Möglichkeiten auch noch etwas ausgeweitet.

Jeder weiß: einen acon-Job xyz.job startet man mit  acon -jxyz ....
Der rdwr.job braucht dann vier Angaben: die laufenden Nummern des
ersten und letzten gewünschten Satzes und die Namen der Eingangs-
und Ausgabedateien. Das sieht ganz einfach so aus:
acon -jrdwr ANF END INFILE OUTFILE
z.B.
acon -jrdwr 1 300 demo2\cat_1.ald output1.alg

Sehr wichtig:
Hinten anhängen (!) muß man noch die normalen Argumente für die
eigene Datenbank, sonst wird die Demo-Bank genommen mit cat.api
und a.cfg - das macht man höchstens mal zum Testen! Zugriffe auf
die Datenbank selbst erfolgen zwar gar nicht immer, aber es geht
um die CFG und Indexparameter, die müssen zu den Daten passen.
Also lautet die abstrakte Syntax:

acon -jrdwr ANF END INFILE OUTFILE -dpath -bdbname -kcfg -eexpar

Die Argumente haben folgende Bedeutung:

  Die ersten 4 sind speziell für rdwr und die Reihenfolge ist wichtig:
ANF = lfd. Nummer des ersten Satzes (1 für den ersten)
END = lfd. Nummer des letzten Satzes (0 heißt: bis zum Ende)
INFILE = kompletter Name der Eingangsdatei (.alg, .ald, .adt oder Textdatei)
OUTFILE = Name der Ausgangsdatei (Typ entspr. der Exportparam. expar.?pr)
  die nächsten 3 braucht jeder Job - sonst nimmt er die DemoBank
path = Pfad der Datenbank (auch wenn der schon in INFILE steht!)
dbname = Name der Indexparameter
cfg = Name der Konfiguration (default = a)
  und optional -e... ganz am Ende, nur wirksam bei .alg und .ald:
expar = Name der Exportparameter (default = i-1)
Die Argumente -dpath ... können entfallen, wenn INFILE eine Textdatei
ist, das hat ja dann nichts mit einer bestimmten Datenbank zu tun.

Unter Linux genauso, nur beginnt der Aufruf mit  ./acon -jrdwr ...

Beispiel: Datenbank auf k:\daten\nbank mit n.cfg und bank.npi
Aus der Datei  bank_13.nld  sollen die Datensätze 4000 bis 4500 in die
Datei n13.ndt geschrieben werden, und zwar mit den Parametern e-1. at pr:

acon -jrdwr 4000 4500 k:\daten\nbank\bank_13.nld n13.ndt -dk:\daten\nbank
-bbank -kn -ee-1

ACHTUNG
Wichtig ist bei .ald auch folgendes: Die ungültigen Sätze werden
übergangen, falls es sich um eine .ald-Datei handelt!
Innerhalb der Datenbank sind diese am Code 09 erkennbar, mit dem
so ein Satz beginnt statt mit Code 01.

Die Datei INFILE kann .?ld, .?lg oder .?dt sein. Oder sogar überhaupt
keine Datenbankdatei, sondern eine ganz schlichte Textdatei mit
Zeilentrennung 13 10 oder nur 10. Auch OUTFILE wird dann eine
solche sein, und es werden nicht Sätze verarbeitet, sondern Zeilen.
(Leerzeichen am Zeilenende bleiben erhalten.) So kann man also auch
aus langen Textlistendateien Auszüge anfertigen.
Dies konnte schon das alte Programm rdwr.exe, deshalb wurde die
Möglichkeit auch in den rdwr.job eingebaut, damit rdwr.exe wirklich
unbesorgt entsorgt werden kann.

Zur Beachtung, damit keine Unklarheiten bleiben:
rdwr.job kann mit jeder verfügbaren Export-Parameterdatei arbeiten.
Jedoch kann der Job nicht die gesamte Datenbank exportieren, sondern
jeweils nur eine der .?ld-Dateien. rdwr.job gibt die Datensätze aus
in genau der Reihenfolge, wie sie in der Quelldatei stehen, unter
Übergehung der ungültigen Sätze.
Für einen GESAMTexport aller .?ld-Dateien würde man das noch viel
schnellere Programm srch.exe nutzen, mit Suchbegriff -s0. Auch dabei
kommen die Sätze in der vorliegenden Reihenfolge raus. Nicht in der
Folge der internen Satznummern, weil sie nicht in dieser Reihenfolge
in den Dateien stehen! Das ist nur der Fall unmittelbar nach einer
Gesamterneuerung, weil dann neue interne Satznummern vergeben werden.
(Die Nummern in #00 bleiben dabei unberührt, auch alle anderen Felder
der Sätze.)

rdwr.job kann man abholen mit   X gf rdwr.job
(ausführlich kommentiert, jedoch auf Englisch, weil's bei
Anwendern in England dringend gebraucht wird. Bevor Brexit kommt, denn
wer weiß, vielleicht wird dann Zoll kassiert für jeden Download, oder
alles muß durch einen Download-Filter ...)
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://bibservices.biblio.etc.tu-bs.de/pipermail/allegro/attachments/20190415/f6753aa1/attachment.html>


Mehr Informationen über die Mailingliste Allegro