<div dir="ltr"><div dir="ltr"><div><br></div><div>Verlautbarung 311 zur allegro-Entwicklung                    2019-04-15</div><div>---------------------------------------------------------</div><div><br></div><div>Dateien vom Typ .alg, .ald, .adt oder .txt zerlegen</div><div>-----------------------------------------------------------------</div><div><br></div><div>Wenig bekannt ist wohl das Programm "rdwr.exe". Was bedeutet der Name? </div><div>Ganz einfach: rd = read, wr = write - Es kann lesen und schreiben.</div><div>Aber was? Den Inhalt von Daten- oder Textdateien kann es lesen und</div><div>dann Auszüge (Abschnitte) in andere Dateien schreiben.</div><div><br></div><div>Wer rdwr.exe kennt, kann weiterlesen unter "rdwr.job ersetzt rdwr.exe".</div><div><br></div><div>Datendateien sind Dateien der Typen .alg, .ald und .adt.</div><div>Und wozu genau taugt das Programm, was kann es damit machen?  </div><div>1. Es kann aus solchen Dateien, die SEHR groß sein können, einzelne</div><div>   Abschnitte herauskopieren in kleinere Dateien, und</div><div>2. Bei diesem Vorgang die Datenbankdaten in eine besser lesbare Form </div><div>   wandeln, die z.B. einem Texteditor angenehm ist.</div><div>So kann man riesige Dateien in handhabbare Abschnitte zerlegen oder</div><div>daraus mal beliebige Stichproben ziehen und inspizieren.</div><div><br></div><div>Die erste Version von rdwr.exe kam 1998 heraus, siehe vb238 und</div><div>   <a href="http://www.allegro-c.de/news/acn982/acn982.htm">http://www.allegro-c.de/news/acn982/acn982.htm</a></div><div>Damit kann man also aus Dateien vom Typ .alg, .ald und auch .adt,</div><div>aber auf Wunsch auch aus normalen Textdateien (z.B. *.txt) kurze oder</div><div>lange Ausschnitte herausziehen. </div><div>Wenn etwa eine Datenbankdatei cat_1.ald 180000 Sätze enthielte, </div><div>könnte man z.B. die ersten 1000 oder den Abschnitt von 75000 bis 76000 </div><div>herausziehen, oder jeden beliebigen anderen Abschnitt. Die Nummern</div><div>wären nicht die internen Nummern, sondern die laufenden vom Dateianfang</div><div>an gezählt. (Die Sätze stehen in einer .ald-Datei nicht in der Folge</div><div>der internen Nummern, sondern die Reihenfolge ist scheinbar chaotisch.) </div><div>Aber wozu ist das wichtig, solche Auszüge machen zu können?</div><div>Es kommt vor in der Praxis, daß jemand seine Datendateien mal mit</div><div>einer anderen Software oder einem speziellen Editor bearbeiten oder</div><div>begutachten will, dann jedoch feststellt, daß diese andere Software </div><div>keine Dateien mit mehr als 8 MB verarbeiten kann, und schon gar nicht</div><div>Dateien mit der Struktur einer .ald oder .alg-Datei. Dann ist es von </div><div>Vorteil, die Datei zerlegen zu können in mehrere Stücke, und diese dann</div><div>auch wandeln zu können in eine für andere Programme genießbare Textform.</div><div>Und genau das kann rdwr.exe:</div><div><br></div><div>Sagen wir, die Datei ist demo2\cat_1.ald, dann würde man mit</div><div><br></div><div>rdwr 1 300 demo2\cat_1.ald output1.alg</div><div><br></div><div>erreichen, daß man die ersten 300 Sätze in die Datei output.alg</div><div>geschrieben bekommt. Mit</div><div>rdwr 301 600 demo2\cat_1.ald output2.alg</div><div>kriegt man die nächsten 300 usw. Die Zahlen sind beliebig.</div><div>(Wer's nicht glaubt - ausprobieren!)</div><div>Wenn man hinten noch anhängt " -ee-1", dann kommen die Daten</div><div>in der .adt-Struktur raus.</div><div><br></div><div>-----------------------------</div><div>| rdwr.job ersetzt rdwr.exe |</div><div>-----------------------------</div><div>rdwr.exe ist leider ein altes Programm, das nicht mit 64bit läuft.</div><div>Anstatt sich um eine Compilierung mit 64bit zu bemühen, kam die</div><div>Idee auf, lieber einen Job rdwr.job zu schreiben, mit dem dann acon</div><div>die Sache erledigen kann, und acon gibt es für Windows und für Linux,</div><div>lauffähig unter 64 bit. Jeder .job, auch rdwr.job, ist unempfindlich </div><div>gegen das Betriebssystem! Und wo man schon dabei war, wurden die </div><div>Möglichkeiten auch noch etwas ausgeweitet.</div><div><br></div><div>Jeder weiß: einen acon-Job xyz.job startet man mit  acon -jxyz ....</div><div>Der rdwr.job braucht dann vier Angaben: die laufenden Nummern des</div><div>ersten und letzten gewünschten Satzes und die Namen der Eingangs-</div><div>und Ausgabedateien. Das sieht ganz einfach so aus:</div><div>acon -jrdwr ANF END INFILE OUTFILE</div><div>z.B.</div><div>acon -jrdwr 1 300 demo2\cat_1.ald output1.alg</div><div><br></div><div>Sehr wichtig:</div><div>Hinten anhängen (!) muß man noch die normalen Argumente für die</div><div>eigene Datenbank, sonst wird die Demo-Bank genommen mit cat.api</div><div>und a.cfg - das macht man höchstens mal zum Testen! Zugriffe auf </div><div>die Datenbank selbst erfolgen zwar gar nicht immer, aber es geht </div><div>um die CFG und Indexparameter, die müssen zu den Daten passen.</div><div>Also lautet die abstrakte Syntax:</div><div><br></div><div>acon -jrdwr ANF END INFILE OUTFILE -dpath -bdbname -kcfg -eexpar</div><div><br></div><div>Die Argumente haben folgende Bedeutung:</div><div><br></div><div>  Die ersten 4 sind speziell für rdwr und die Reihenfolge ist wichtig:</div><div>ANF = lfd. Nummer des ersten Satzes (1 für den ersten)</div><div>END = lfd. Nummer des letzten Satzes (0 heißt: bis zum Ende)</div><div>INFILE = kompletter Name der Eingangsdatei (.alg, .ald, .adt oder Textdatei)</div><div>OUTFILE = Name der Ausgangsdatei (Typ entspr. der Exportparam. expar.?pr)</div><div>  die nächsten 3 braucht jeder Job - sonst nimmt er die DemoBank</div><div>path = Pfad der Datenbank (auch wenn der schon in INFILE steht!)</div><div>dbname = Name der Indexparameter</div><div>cfg = Name der Konfiguration (default = a)</div><div>  und optional -e... ganz am Ende, nur wirksam bei .alg und .ald:</div><div>expar = Name der Exportparameter (default = i-1)</div><div>Die Argumente -dpath ... können entfallen, wenn INFILE eine Textdatei</div><div>ist, das hat ja dann nichts mit einer bestimmten Datenbank zu tun.</div><div><br></div><div>Unter Linux genauso, nur beginnt der Aufruf mit  ./acon -jrdwr ...</div><div><br></div><div>Beispiel: Datenbank auf k:\daten\nbank mit n.cfg und bank.npi</div><div>Aus der Datei  bank_13.nld  sollen die Datensätze 4000 bis 4500 in die</div><div>Datei n13.ndt geschrieben werden, und zwar mit den Parametern e-1.@pr:</div><div><br></div><div>acon -jrdwr 4000 4500 k:\daten\nbank\bank_13.nld n13.ndt -dk:\daten\nbank -bbank -kn -ee-1</div><div><br></div><div>ACHTUNG</div><div>Wichtig ist bei .ald auch folgendes: Die ungültigen Sätze werden</div><div>übergangen, falls es sich um eine .ald-Datei handelt!</div><div>Innerhalb der Datenbank sind diese am Code 09 erkennbar, mit dem</div><div>so ein Satz beginnt statt mit Code 01. </div><div><br></div><div>Die Datei INFILE kann .?ld, .?lg oder .?dt sein. Oder sogar überhaupt </div><div>keine Datenbankdatei, sondern eine ganz schlichte Textdatei mit </div><div>Zeilentrennung 13 10 oder nur 10. Auch OUTFILE wird dann eine</div><div>solche sein, und es werden nicht Sätze verarbeitet, sondern Zeilen.</div><div>(Leerzeichen am Zeilenende bleiben erhalten.) So kann man also auch</div><div>aus langen Textlistendateien Auszüge anfertigen.</div><div>Dies konnte schon das alte Programm rdwr.exe, deshalb wurde die</div><div>Möglichkeit auch in den rdwr.job eingebaut, damit rdwr.exe wirklich</div><div>unbesorgt entsorgt werden kann.</div><div><br></div><div>Zur Beachtung, damit keine Unklarheiten bleiben:</div><div>rdwr.job kann mit jeder verfügbaren Export-Parameterdatei arbeiten.</div><div>Jedoch kann der Job nicht die gesamte Datenbank exportieren, sondern </div><div>jeweils nur eine der .?ld-Dateien. rdwr.job gibt die Datensätze aus</div><div>in genau der Reihenfolge, wie sie in der Quelldatei stehen, unter</div><div>Übergehung der ungültigen Sätze.</div><div>Für einen GESAMTexport aller .?ld-Dateien würde man das noch viel </div><div>schnellere Programm srch.exe nutzen, mit Suchbegriff -s0. Auch dabei</div><div>kommen die Sätze in der vorliegenden Reihenfolge raus. Nicht in der</div><div>Folge der internen Satznummern, weil sie nicht in dieser Reihenfolge</div><div>in den Dateien stehen! Das ist nur der Fall unmittelbar nach einer</div><div>Gesamterneuerung, weil dann neue interne Satznummern vergeben werden.</div><div>(Die Nummern in #00 bleiben dabei unberührt, auch alle anderen Felder</div><div>der Sätze.)</div><div><br></div><div>rdwr.job kann man abholen mit   X gf rdwr.job</div><div>(ausführlich kommentiert, jedoch auf Englisch, weil's bei</div><div>Anwendern in England dringend gebraucht wird. Bevor Brexit kommt, denn</div><div>wer weiß, vielleicht wird dann Zoll kassiert für jeden Download, oder</div><div>alles muß durch einen Download-Filter ...)</div><div><br></div></div></div>