Zurück zum Inhaltsverzeichnis - Lösungen und Tipps
Ortsnamenregister (einfach)
-
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!
