<!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>