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.