[[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]]