[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