[Tustep-Liste] Editor - Zahlenwerte suchen

Kuno Schälkle schaelkle at zdv.uni-tuebingen.de
Fr Apr 1 08:37:13 CEST 2011


Lieber Herr Carls,

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ich möchte einheitlich alle Bereichsangaben, die sich lediglich um den
Wert eins unterscheiden, finden. Gibt es eine Möglichkeit, im Editor
nach direkt aufeinander folgenden Zahlenwerten zu suchen - also: 1-2,
37-38, 1001-1002 - nicht aber 1-3, 36-40, 1000-1002.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

im Editor ließe sich das nur sehr umständlich realisieren.

Möglicher Ausweg: Mit TUSCRIPT  die betroffenen Zahlenpaare
kennzeichnen und dann im Editor diese Kennzeichnung suchen:


$$! 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

BUILD S_TABLE ttab = ":<>>/-<>>/:"

ACCESS q: READ/STREAM/RECORDS "{quelle}" ...
                sn.zn/un, aken + text/ttab + eken, typ
ACCESS z: WRITE/ERASE/STREAM   "{ziel}"  ...
                sn.zn/un, aken + text      + eken

LOOP/999999
   READ/NEXT/EXIT q
   IF (typ.EQ.4)  THEN
      SET egal = SPLIT (text, ":-:", z1, z2)
      SET zz = z1 + 1
      IF (zz.EQ.z2)  SET text = CONCAT ("[[", text, "]]")
   ENDIF
   WRITE z
ENDLOOP

ENDACCESS/PRINT q
ENDACCESS/PRINT z

ENDCOMPILE

Damit werden alle betroffenen Zahlenpaare in [[ und ]] eingeschlossen.

Mit der Tabelle ttab werden Zahlenpaare als "Trennzeichen" definiert.
Immer wenn ein solches Trennzeichen auftritt (typ=4), werden die
beiden Zahlen auf z1 und z2 aufgeteilt und dann abgefragt, ob die
beiden Werte unmittelbar aufeinander folgen.

Herzliche Grüße
Ihr Kuno Schaelkle



Mehr Informationen über die Mailingliste Tustep-Liste