[Tustep-Liste] Zahlenvariablen

Hagen Reinstein hagen.reinstein at uni-trier.de
Mo Mär 17 12:31:20 CET 2008


Liebe Frau Gerstenberg,

Ihre Frage ist ein schönes Beispiel dafür, wie einfach man Tuscript nutzen 
kann - Sie geben selbst schon fast alle Anworten:

> Aus unterschiedlichen Dateien füge ich Zahlenserien wie die folgende -- > zusammen. Sie enthält vier Zahlenwerte, bezeichnet durch M, F, I und P:
> 
> <M>92,672</M><F>102,975</F><I>91,838</I><P>0,583</P> 

Dann lesen wir zunächst diese Zahlenserie mit 

a = file ("QUELLDATEI")

in die Variable a ein. 
Die vier Werte gehören jeweils in eine Variable "Wert_von_...":

loop l1 ="m'f'i'p"
   - was zwischen den Tags steht, wird in x eingelesen:
   x = extract (a,"|<<{l1}>>|"|,"|<</{l1}>>|")
   - beachten Sie dabei das "|" hinter der ersten Suchzeichenfolge, sonst 
wird das öffnende Tag auch mitgenommen!

   - da nur mit ganzen Zahlen gerechnet wird, muss das "," weg:
   wert_von_{l1} = decode (x,decimal3)
endloop 

> dabei errechnet sich Summe 1 wie folgt: -(Wert von M)+(Wert von F)=(Summe1), im Beispiel: -92,672+102,975=10,303
> und Summe 2 errechnet sich wie folgt: -(Wert von F)+(Wert von I)=(Summe2), im Beispiel: -102,975+91,838=-11,137

Ihre Formulierung muss man nur umstellen:

summe1 = -{wert_von_m} + {wert_von_f}
summe2 = -{wert_von_f} + {wert_von_i}  

- das "," wieder einsetzen:
loop l2 = "summe1'summe2'wert_von_p"
   - zunächst einen Dezimalpunkt einsetzen:
   {l2} = encode ({l2},decimal3)
   - diesen tauschen gegen das ",":
   {l2} = exchange ({l2},"|.|,|")
endloop

> Ich hätte gern, dass in der Ausgabedatei steht:
> 
> amp: (Summe1) sat: (Summe2) pau: (Wert P, unverändert)
> 
Auch das fast wörtlich:

file "ZIELDATEI"
data amp: {summe1} sat: {summe2} pau: {wert_von_p}
endfile

Und schon sind Sie fertig.
Viele Grüße ** hr **

Hier nochmal im Zusammenhang:
#makro
mode tuscript

a = file ("QUELLDATEI")
 
loop l1 ="m'f'i'p"
   - was zwischen den Tags steht, wird in x eingelesen:
   x = extract (a,"|<<{l1}>>|"|,"|<</{l1}>>|")
   - beachten Sie dabei das "|" hinter der ersten Suchzeichenfolge, sonst 
wird das öffnenede Tag auch gelesen!

   - da nur mit ganzen Zahlen gerechnet wird, muss das "," weg:
   wert_von_{l1} = decode (x,decimal3)
endloop 

summe1 = -{wert_von_m} + {wert_von_f}
summe2 = -{wert_von_f} + {wert_von_i}  

- das "," wieder einsetzen:
loop l2 = "summe1'summe2'wert_von_p"
   - zunächst einen Dezimalpunkt einsetzen:
   {l2} = encode ({l2},decimal3)
   - diesen tauschen gegen das ",":
   {l2} = exchange ({l2},"|.|,|")
endloop

file "ZIELDATEI"
data amp: {summe1} sat: {summe2} pau: {wert_von_p}
endfile
*eof


---------------------------
Dr. Hagen Reinstein

Fachreferate Aegyptologie,
Archaeologie, Klass. Philologie
Universitaetsbibliothek Trier
54286 Trier

0651/201-4201



Mehr Informationen über die Mailingliste Tustep-Liste