<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#ffffff">
Am 19.04.2011 10:58, schrieb Fischer, Thomas:<br>
<span style="white-space: pre;">> <br>
> 1. Die Indikatorprüfungen ik,x, Ik,x, vk,x und Vk,x testen
die am<br>
> Anfang der Zeile angegebene Variable (z.B. #30 oder #uxy)
darauf, ob<br>
> der Wert an der Stelle k geich/ungleich x bzw. kleiner/größer
als x<br>
> ist. Dieser Vergleich findet mit dem noch unmodifizierten
Wert statt,<br>
> also *vor* Anwendung etwaiger Manipulationen. (Herr
Eversberg: hier<br>
> bin ich mir nicht ganz sicher, was längenverändernde
Umkodierungen<br>
> betrifft.) Mit #cc hat der Test per se nichts zu tun.<br>
> <br>
</span>Umcodierung wirkt sich nicht aus, es wird direkt im
momentanen<br>
Aufnahmespeicher getestet, also nicht im aktuellen Arbeitstext.<br>
Die Positionszählung bezieht sich auf den vollständigen Feldinhalt,<br>
also auf "#20 Titel" und nicht auf den Feldtext "Titel"<br>
<br>
<span style="white-space: pre;">> Beispiel: #uxy p'Auf 5 steht
ein a!' e '!' i5,a gibt 'Auf 5 steht ein<br>
> a!' genau dann aus, wenn auf der fünften Position von #uxy
'a' steht.<br>
> Bei dieser Zählung wird die Kategorienlänge tN aus der
Konfiguration<br>
> +1 für die Mehrfachkennung eingerechnet. Kleinere Ziffern
testen den<br>
> *Namen* der Variablen.<br>
> <br>
> 2. Die Variable #cc speichert den *Namen* der zuletzt
aufgerufenen<br>
> Kategorie.</span><br>
Nicht den Namen, sondern wie unter 1. den vollständigen Feldinhalt,<br>
wie er im Aufnahmespeicher steht.<br>
Außerdem speichert #cc nichts, d.h. es ist keine Kopie von etwas, <br>
sondern #cc ist nur ein Zeiger auf das erste Zeichen des
Feldinhalts,<br>
d.h. auf dessen #. Wenn es dann heißt #i4..., dann wird auf diesen<br>
Zeiger 4 addiert und das Byte an der sich so ergebenden Stelle<br>
wird genommen.<br>
<br>
<span style="white-space: pre;">> Dieser bleibt innerhalb eines
Unterprogramms konstant, der<br>
> *Inhalt* der Variablen kann aber verändert werden. Die<br>
> Indikatoraktionen #ik,x und #Ik,x vergleichen mit dem
*Inhalt* dieser<br>
> Variablen bzw. ihrem Namen, wenn die Ziffer k kleiner als
tN+2 ist.<br>
> <br>
</span>Das hört sich etwas verworren an. Das zuletzt vor dem Aufruf
eines<br>
UP benutzte Feld (letzte Zeile mit #nnn ...) ist die Adresse, auf<br>
die #cc zeigt, und diese bleibt konstant. Wird im UP ein Feld<br>
in den Arb.Speicher VOR das betr. Feld eingefügt, stimmt die<br>
Adresse nicht mehr! Sicherer ist dann, am Beginn des UP so etwas<br>
wie <br>
#cc =xy e0<br>
zu machen, dabei wird das Feld, auf das #cc zeigt, in #uxy kopiert.<br>
<br>
<span style="white-space: pre;">> Beispiel: #uxy P>A e0 #+#
#(A 22='Auf 5 steht ein u!' #uxy p'auf' e3<br>
> =xy #i5,u 22 #)A gibt 'Auf 5 steht ein u!' aus, unabhängig
von der<br>
> Belegung von #uxy vor dem Aufruf des Unterprogramms A.
Natürlich muss<br>
> #uxy vorher definiert sein.<br>
> <br>
</span>Das stimmt.<br>
<br>
B.E.<br>
<br>
</body>
</html>