[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