[Tustep-Liste] Zeilennummer
Thomas Kollatz
kol at steinheim-institut.org
So Jun 7 15:03:15 CEST 2009
Lieber Michael, lieber Herr Meyer
> Eine spontan
> bzw. intuitiv verständlichere (Teil-)Lösung kann ja
> vielleicht Thomas Kollatz beisteuern?! ;o))
Ich kann es ja mal versuchen ... und muss ehrlich zugeben, dass sich
mir die Zeilen 63-99 in zzsatz.p nur schwer und die Sprungtabelle
_1__2__3__4__5__6__7__8
spw 8 32 8 8 8 8 8 8
spn 3 8 8 51 61 71 81 3
sp2 21 41 51 51 61 71 81 3
zu den acht #kopiere Durchläufen - trotz jahrelangem guten Zureden
alter #kopiere Hasen überhaupt nicht erschliesst ... vielleicht muss
ich mich damit abfinden, dass ich einfach kein Hase bin und darum
nicht springen kann?
Hier also eine TUSCRIPT-Lösung, die anstelle des #kopiere in den
Zeilen 63-97 der Datei zzsatz.p treten könnte.
Wer es ausprobieren will, kann das kopiere einmal auskommentieren:
#-ko,au.1,au.2,,+,*
und anschliessend das Makro hinter der Zeile 98 einfügen (z.B. durch
Kopieren des folgenden Abschnittes in den Zwischenspeicher mit ctrl-c
und anschliessendem Einfügen in die Datei zzsatz.p mit der
Editoranweisung ez,98)
#ma
$$ MODE TUSCRIPT
SET quelle="au.1",ziel="au.2"
-*** Ausgangsbedingungen: Zählermodus = aus / Zeilennummer auf 0
SET modus="aus",zeilennr=0
COMPILE
-*** Beim Dateizugriff soll an folgenden Textstellen "reagiert werden":
BUILD S_TABLE ein = ":<<zz>>:"
BUILD S_TABLE reset = ":<<zz/>>:"
BUILD S_TABLE aus = ":<</zz>>:"
-*** Zeilen in au.1 die nicht gezählt werden sollen:
BUILD S_TABLE zeilenohnenr= *
DATA /&!u/
DATA /<|><&&&->/><&&&{/
DATA /<|&>|/
ACCESS q: READ/STREAM/RECORDS "{quelle}" ...
sn.zn/un, aken/ein + text/reset + eken/aus,typ
ACCESS z: WRITE/ERASE/STREAM "{ziel}" ...
sn.zn/un, aken + text + eken
LOOP/999999
READ/NEXT/EXIT q
SELECT typ
CASE "1"
-*** typ 1: Die Variable aken ist belegt mit dem in der S_TABLE ein:
"<zz>" definierten Wert
SET modus="ein"
SET zeilennr=zeilennr+1
CASE "2"
-*** typ 2: Die Variable eken ist belegt mit dem in der S_Table aus:
"</zz>" definierten Wert
SET modus="aus"
SET zeilennr=zeilennr+1
CASE "4"
-*** typ 4: Die Variable Text ist belegt mit dem in der S_TABLE reset
"<zz/>" definierten Wert
SET modus="reset"
SET zeilennr=0
CASE "0"
-*** Alle anderen Fälle abhängig von den in Case 1,2 und 4
eingestellten Werten
IF (modus=="ein","reset".AND.text.nc.zeilenohnenr) THEN
SET zeilennr=zeilennr+1
SET divrest = MOD (zeilennr,5)
-*** Wenn sich die aktuelle Zeilennummer ohne Rest durch 5 Teilen lässt,
-*** wird diese Zeilennummer an den auszugebenden Text angehängt:
IF (divrest==0) SET text = CONCAT (text," @a",zeilennr,"@{")
ENDIF
ENDSELECT
-**** CASE 1,2,4,0 werden in die Zieldatei geschrieben
WRITE z
ENDLOOP
ENDACCESS/PRINT q
ENDACCESS/PRINT z
ENDCOMPILE
MODE DATA
*EOF
einen schönen Sonntag allen Hasen und Nicht-Hasen
wünscht
THOMAS KOLLATZ
drs Thomas Kollatz - wissenschaftlicher Mitarbeiter / research
assistant
* Salomon Ludwig Steinheim-Institut fuer deutsch-juedische Geschichte
D-47057 Duisburg Geibelstr. 41 T 0203-370071 F 0203-373380
* Geschichtszentrum euregio rhein-maas-nord T 02151-5137430
Route <http://maps.google.de/maps?f=q&hl=de&q=Geibelstr.+41,+Du>
Homepage <http://steinheim-institut.de/das_institut/mitarbeiter/
kollatz/index.xml>
Epigraphische Datenbank <http://www.steinheim-institut.de:50580/cgi-
bin/epidat>
Mehr Informationen über die Mailingliste Tustep-Liste