[[tuscript:loesungen:start|Zurück zum Inhaltsverzeichnis - Lösungen und Tipps]]
----
====== Ortsnamenregister (einfach) ======
- {{files_open:benutzericons:schneider-lastin-lg.jpg?nolink&16x16|schneider-lastin}} 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):
\\
\\ {{files_open:daten:regtext.tf|regtext.tf}} (70 KB]
\\
\\ \\ Die Musterdatei enthält Registereinträge zu Ortsnamen, die mit ........ **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 = "::"
BUILD S_TABLE anf = "::"
BUILD S_TABLE end = "::"
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!**\\
----
[[tuscript:loesungen:start|Zurück zum Inhaltsverzeichnis - Lösungen und Tipps]]