[Tustep-Liste] Problem: sämtliche Zahlen um festen Betrag erhöhen
Kuno Schälkle
schaelkle at zdv.uni-tuebingen.de
Di Jul 6 16:43:17 CEST 2010
Sehr geehrter Herr Henrich,
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
bei der Arbeit an einem umfangreichen, manuell mit TUSTEP erstellten
Index stehe ich vor folgendem Problem: Weil die zwei Halbbände entgegen
der ursprünglichen Planung durchpaginiert werden, müssen im (separat
gehaltenen) Register zum zweiten Halbband sämtliche Zahlen um 604 erhöht
werden (S. 1 wird S. 605 usw.).
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
fuer den Fall, dass im Index ausser den Seitenzahlen keine Ziffern
vorkommen, sollte das nachfolgende Makro die Arbeit erledigen.
Sollten im Index noch andere Ziffern vorkommen, braeuchte man
noch ein Trennzeichen zwischen Text (mit den anderen Ziffern)
und Referenz.
Wenn dieses Trennzeichen z.B. @@ waere muessten zwei Zeilen
geaendert werden:
SET zahlen_alt = STRINGS (text, ":<>>/:", ":@@:", 0)
und
SET text = SUBSTITUTE (text, ":<>>/:", ":@@:", 0, zahlen_neu)
Mit freundlichen Grüßen
Kuno Schaelkle
----------------------------------------------------------------------
$$! quelle, ziel
$$-
$$ MODE TUSCRIPT
SET status = CHECK (quelle, READ, TUSTEP)
ERROR/STOP "QUELLE: ", status
SET status = CHECK (ziel, WRITE, TUSTEP)
ERROR/STOP "ZIEL: ", status
SET status = UNIQUE (quelle, ziel)
ERROR/STOP "Datei ", status, " ist mehrfach angegeben"
COMPILE
ACCESS q: READ /RECORDS "{quelle}" sn.zn/un, text
ACCESS z: WRITE/ERASE/RECORDS "{ziel}" sn.zn/un, text
LOOP/999999
READ/IGNORE/EXIT q
- Zahlen aus dem Text extrahieren
SET zahlen_alt = STRINGS (text, ":<>>/:", 0, 0)
SET zahlen_neu = ""
- Alle Zahlen um 604 erhöhen
LOOP zahl = zahlen_alt
SET zahl = zahl + 604
SET zahlen_neu = APPEND (zahlen_neu, zahl)
ENDLOOP
- Zahlen im Text ersetzen
SET text = SUBSTITUTE (text, ":<>>/:", 0, 0, zahlen_neu)
WRITE/ADJUST z
ENDLOOP
ENDACCESS/PRINT q
ENDACCESS/PRINT z
ENDCOMPILE
Mehr Informationen über die Mailingliste Tustep-Liste