[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