Zurück zum Inhaltsverzeichnis - Lösungen und Tipps
- schneider-lastin - [ schaelkle | schaelkle ]
Musterdatei (kurzer Ausschnitt aus: Regine Schindler, Die Memorabilien der Meta Heusser-Schweizer [1797-1876] [Pfarrherren, Dicherinnen, Forscher, Bd. 1], Zürich 2007):
regtext.tf (70 KB]
Die Musterdatei enthält Registereinträge zu Ortsnamen, die mit <ort>……..</ort> markiert sind.
Ziel ist die Erstellung eines alphabetisch sortierten Registers der Ortsnamen; Referenzen sind die Satznummern der Quelldatei.
Ergebnis in der Datei 'regziel.tf':
Hausen am Albis 1.14 Hombrechtikon 1.5 Kappel am Albis 1.14 Schönenberg 1.3 1.8 Ufenau 1.7
Zentral sind im folgenden Skript die Zeilen mit der Makroanweisung „DICTIONARY“ (abgek.: „DICT“):
$$ DICTIONARY name CREATE
für die Einrichtung eines „Wörterbuchs“ mit dem Namen „name“ und für weitere Aktionen (hier „APPEND“ und „UNLOAD“ - siehe dazu im Handbuch).
$$ DICTIONARY name action/option key, num, cnt, value1, value2
Skript:
#makro $$ MODE TUSCRIPT, {} SET quelle = "regtext.tf" ERROR/STOP OPEN (quelle, READ, -STD-) SET ziel = "regziel.tf" ERROR/STOP CREATE (ziel, SEQ-O, -STD-) ERROR/STOP ERASE (ziel) BUILD R_TABLE ort = ":<ort>:" BUILD S_TABLE anf = ":<ort>:" BUILD S_TABLE end = ":</ort>:" DICTIONARY register CREATE COMPILE ACCESS q: READ/RECORDS "{quelle}" sn.zn/un, text LOOP/999999 FIND/NEXT/EXIT q (-; ort; -; -) SET orte = EXTRACT (text, anf|, |end, 1, 0, "~~") SET orte = SPLIT (orte, ":~~:") SET ref = CONCAT (sn, ".", zn) LOOP ort = orte DICT register APPEND/QUIET ort, num, cnt, ref; " " ENDLOOP ENDLOOP ENDACCESS/PRINT q ENDCOMPILE DICT register UNLOAD ort, num, cnt, ref SET register = CONCAT (ort, " ", ref) BUILD X_TABLE xs1 = "/ä/ae/ö/oe/ü/ue/ß/ss/%{1--2}{%}//" BUILD X_TABLE xs2 = "/ä/az/ö/oz/ü/uz/ß/sz/" SET sort = EXCHANGE (register, xs2) SET index = ALPHA_INDEX (sort) SET register = INDEX_SORT (register, index) SET sort = EXCHANGE (register, xs1) SET index = ALPHA_INDEX (sort) SET register = INDEX_SORT (register, index) FILE/ERASE "{ziel}" = register *eof
→ Das Skript verlangt die TUSTEP-Version 2015!