Trick 44: Textdatei
umcodieren
Aufgabe: Schnell mal eben eine Textdatei von ASCII nach ANSI umcodieren.
Oder allgemeiner: vom
Codesystem X ins Codesystem Y.
Warum: Der alte DOS-Zeichencode ASCII gerät zunehmend auf den
abstei-
genden Ast. Aber auch ANSI ist
nicht von hohem Ewigkeitswert,
denn Unicode dringt immer weiter
vor.
Früher schrieb man dafür eine Exportparameterdatei mit den
entsprechenden p-Befehlen, mußte aber zuerst einen Import machen,
um
die Textdatei zeilenweise in Datensätze zu verwandeln, die dann
z.B.
nur die Kategorie #20 oder #u1 enthielten, um diese dann sofort mit
den Exportparametern wieder ausgeben zu können. Wer hat denn schon
heute noch solchen Durchblick? Oder man griff murrend zu einem
Fremdwerkzeug oder einer Skriptsprache. Nicht jedem stehen aber solche
Wege offen...
Eine "Textdatei" - damit sind Dateien
gemeint, die in Zeilen angeordnet
sind, mit Codes 13 10 (oder nur einem
von beiden) als Trennung.
Lösung:
Das Einzige, was man jetzt noch braucht, ist eine Liste von p-Befehlen.
Davon sind mehrere schon als Tabellen vorhanden:
(Wenn man hineinschaut, sieht man gleich, wie solche Tabellen aussehen
müssen und wie man sie erstellen und modifizieren kann. Bearbeiten
kann
man sie mit Notepad o.a.)
asciansi.apt
ASCII -> ANSI
ansiasci.apt ANSI
-> ASCII
d.apt
ASCII -> RTF
d.npt
ANSI -> RTF
d-utf8.apt
ASCII -> UTF-8
d-utf8.npt
ANSI -> UTF-8 [auch f. HTML]
p-htm.apt
ASCII -> HTML
durtf.apt
UTF-8 -> ASCII
durtf.npt
UTF-8 -> ANSI
Wenn man nun mit B.CFG arbeitet,
intern ASCII hat und nach ANSI
umcodieren will? Dann Kopie machen: asciansi.apt ->
asciansi.bpt
Wenn die richtige Tabelle erst feststeht, geht es ganz leicht,
sofern man das "final release" von V27.2 hat:
1. Füllhorn / Alles von A-Z / Umcodierung einer Textdatei
(Aufgerufen wird dann filecode.flx)
2. Man wird informiert:
"Sie wählen jetzt zuerst eine Datei aus. Diese wird
zeilenweise
gelesen und geschrieben"
Dateiauswahlbox erscheint, Datei wählen (evtl. zuerst
Verzeichnis
wechseln)
3. Frage beantworten, die danach kommt:
"Neuer Name für die Datei?"
Dateiname und -pfad ist beliebig
4. Und es kommt noch eine Dateiauswahlbox:
"Wählen Sie eine Codetabelle"
Aus der Liste die korrekte Tabelle (siehe oben)
wählen
Verarbeitung wird ausgeführt, Endemeldung:
... verarbeitet, Neue Datei: ...
... Zeilen, ... Bytes
FERTIG!
FLEXperten wollen mehr wissen: Was ist der Trick dabei?
Der FLEX filecode.flx ist abgeleitet von der allgemeineren
Vorlage file.flx (ASCII-Datei zeilenweise lesen+schreiben),
die es schon seit 2004 gibt. Neu ist in V27.2 die Möglichkeit,
Umcodierbefehle zu nutzen: Befehl xcode ... (h xxcode)
Hier die entscheidenden Zeilen:
export p i-1
i-1.apr laden. Diese wird
aber nicht als solche gebraucht,
das ist der Trick, sondern
nur, weil man eine Tabelle dazuladen
will, in der die
Umcodierbefehle stehen:
var "Wählen Sie eine
Codetabelle|*." K1 "pt"
fnam
Diese Tabelle zu den
Exp.Parametern laden
export t
Danach kann man in der Schleife :loop, die jeweils eine Zeile
mit get
aus der Datei liest, dies sagen:
xcode xp
wri
wri n
und es werden die p-Befehle der Exportparameter zum Umcodieren benutzt,
die umcodierte Zeile ausgegeben und ein Zeilenvorschub hinterdrein.