[Tustep-Liste] #KOPIERE mit AK1/EK1

Kuno Sch�lkle Schaelkle at zdv.uni-tuebingen.de
Mi Mär 9 14:27:19 CET 2005


Lieber Herr Stahl,

> ich habe eine Textdatei mit Seiten-, Zeilen- und Unterscheidungsnummern, in der
> zwischen "<k>" und "</k>" Kommentare stehen. Die Tag-Paare können irgendwo in
> einer Zeile stehen; sie können aber auch mehrere Zeilen entfernt sein:
>
>   <p>text <k>kommentar
>   kommentar kommentar
>   kommentar</k> text</p>
>   <p>text <k>kommentar</k> text</p>
>
> Das Problem liegt nun darin, dass die Kommentare entfernt werden sollen, ohne
> dass sich die Zeilenstruktur des Texts selbst ändert.

alle guten Dinge sind drei. Deshalb nach den Loesungen von
Herrn Trauth und Herrn Sappler noch eine alternative Loesung:

Bei dieser Loesung wird der Text portionsweise gelesen.

Eine neue Portion beginnt jeweils
- mit (vor) jeder Anfangskennung
- nach jeder Endekennung
- bei jedem Zeilenwechsel.

Die Anfangskennung wird jeweils in die Variable aken,
der Text wird jeweils in die Variable txt und
die Endekennung wird jeweils in die Variable eken
eingelesen.

Es wird solange alles kopiert, bis eine Anfangskennung
gefunden wird. Dann wird alles solange uebergangen,
bis eine Endekennung gefunden wird. Dann beginn das
Spiel von neuem.

01: $$! quelle, ziel
02: $$=- []
03: MODE VARIABLE

04: SET status = CHECK (quelle, READ, TUSTEP)
05: ERROR/STOP "QUELLE: ", status
06: SET status = CHECK (ziel, WRITE, TUSTEP)
07: ERROR/STOP "ZIEL: ", status

08: BUILD S_TABLE atab = ":<<k>>:"
09: BUILD S_TABLE etab = ":<</k>>:"

10: ACCESS q: READ/STREAM/RECORDS "[quelle]" s.z/u, aken/atab+txt+eken/etab, typ
11: ACCESS z: WRITE/ERASE/STREAM "[ziel]" s.z/u, aken+txt+eken, anz

12: LOOP
13:     READ q
14:     IF (EOF)  EXIT
15:     IF (aken.NE."")  THEN
16:         LOOP
17:             IF (eken.NE."")  EXIT
18:             READ q
19:             IF (EOF)  EXIT, EXIT
20:         ENDLOOP
21:     ELSE
22:         WRITE z
23:     ENDIF
24: ENDLOOP

25: ENDACCESS q
26: ENDACCESS z

04: Quelldatei prüfen
05: Makro ggf. mit Fehlermeldung beenden
06: Zieldatei prüfen
07: Makro ggf. mit Fehlermeldung beenden
08: Tabelle mit der Anfangskennung
09: Tabelle mit der Endekennung
10: Quelldatei öffnen
11: Zieldatei öffnen
13: aken+text+eken einlesen
14: Wenn Dateiende erreicht: fertig
15: Wurde eine Anfangskennung gelesen?
16: Wenn ja, weiterlesen bis Endekennung gefunden
17: Wenn Endekennung gelesen, gehts normal weiter
18: aken+text+eken einlesen
19: Wenn Dateiende erreicht: fix und fertig
22: eken+text+eken ausgeben
25: Quelldatei schließen
26: Zieldatei schließen


Herzliche Gruesse
Ihr Kuno Schaelkle


Mehr Informationen über die Mailingliste Tustep-Liste