Daten aus einer TUSTEP-Datei auf mehrere Fremd-Dateien aufteilen
Daten aus einer TUSTEP-Datei auf mehrere Fremd-Dateien aufteilen
<teiCorpus>
<TEI>
<!-- Hier das erste TEI-Dokument -->
...
</TEI>
<TEI>
<!-- Hier das zweite TEI-Dokument -->
...
</TEI>
</teiCorpus>#MAKRO
$$ MODE TUSCRIPT, {}
SET quelle = "Hier der Name der Quelldatei"
SET präfix = "Hier das Präfix der Zieldateien"
- Benötigte Variablen
SET n = 0
SET tmp = *
SET ziel = ""
- Anfang und Ende der TEI-Dokumente
BUILD S_TABLE start = "|<TEI |"
BUILD S_TABLE ende = "|</TEI>|"
- Schleife über alle Zeilen der Datei
- Es sollen mindestens eine Millionen Datensätze
- verarbeitet werden, bei Bedarf diesen Wert erhöhen.
ACCESS daten: READ/RECORDS $quelle, s.z/u, zeile
LOOP/1000001
- Es wird bei jedem Schleifendurchlauf ein
- neuer Datensatz eingelesen, bis zum Ende
- der Datei (oder bis zur Grenze der Schleife)
READ/NEXT/EXIT daten
- Wenn ein neues TEI-Dokument beginnt,
- die Sternvariable tmp für den Inhalt
- der nächsten Datei leeren, hochzählen
- und die neue Datei erstellen
IF (zeile .CT. start) THEN
SET tmp = *
SET n = n + 1
SET n = CENTER(n, +3, "0")
SET ziel = "{präfix}_{n}.xml"
SET status = CREATE($ziel, FDF-O)
ENDIF
- Die neue Zeile der Sternvariable hinzufügen
SET tmp = APPEND(tmp, zeile)
- Wenn das TEI-Dokument endet,
- den Inhalt in die neue Datei schreiben
IF (zeile .CT. ende) THEN
FILE/ERASE/UTF8 ziel = tmp
ENDIF
ENDLOOP
ENDACCESS daten
*eofGegeben sei eine TEI-Korpus-Datei, die ungefähr folgende Struktur aufweist.
Die Datei ist formatiert und enthält die einzelnen Start- und Endetags für
die Hierarchieebenen jeweils auf einer neuen Zeile:
<teiCorpus>
<TEI>
<!-- Hier das erste TEI-Dokument -->
...
</TEI>
<TEI>
<!-- Hier das zweite TEI-Dokument -->
...
</TEI>
</teiCorpus>#MAKRO
$$ MODE TUSCRIPT, {}
SET quelle = "Hier der Name der Quelldatei"
SET präfix = "Hier das Präfix der Zieldateien"
- Benötigte Variablen
SET n = 0
SET tmp = *
SET ziel = ""
- Anfang und Ende der TEI-Dokumente
BUILD S_TABLE start = "|<TEI |"
BUILD S_TABLE ende = "|</TEI>|"
- Schleife über alle Zeilen der Datei
- Es sollen mindestens eine Millionen Datensätze
- verarbeitet werden, bei Bedarf diesen Wert erhöhen.
ACCESS daten: READ/RECORDS $quelle, s.z/u, zeile
LOOP/1000001
- Es wird bei jedem Schleifendurchlauf ein
- neuer Datensatz eingelesen, bis zum Ende
- der Datei (oder bis zur Grenze der Schleife)
READ/NEXT/EXIT daten
- Wenn ein neues TEI-Dokument beginnt,
- die Sternvariable tmp für den Inhalt
- der nächsten Datei leeren, hochzählen
- und die neue Datei erstellen
IF (zeile .CT. start) THEN
SET tmp = *
SET n = n + 1
SET n = CENTER(n, +3, "0")
SET ziel = "{präfix}_{n}.xml"
SET status = CREATE($ziel, FDF-O)
ENDIF
- Die neue Zeile der Sternvariable hinzufügen
SET tmp = APPEND(tmp, zeile)
- Wenn das TEI-Dokument endet,
- den Inhalt in die neue Datei schreiben
IF (zeile .CT. ende) THEN
FILE/ERASE/UTF8 ziel = tmp
ENDIF
ENDLOOP
ENDACCESS daten
*eof