[Allegro] &-Demo : KurzBeispiel zu den PS-Variablen

Bernhard Eversberg ev at biblio.tu-bs.de
Mi Apr 9 13:27:39 CEST 2014


Die Ankündigung der Neuerung "PS-Variablen" war nur ein schwacher
Schatten eines Aprilscherzes, verglichen mit anderen Exempeln dieses
Genres aus der Vergangenheit. Das entspricht dem Kaliber der
Neuerung, welche ja auch nicht recht vergleichbar zu sein scheint in
ihrer die Phantasie nicht eben aufstachelnden Sprödigkeit. Doch in
der Tiefe liegt die Kraft.
Wir wollen deswegen, um das oder die Maß voll zu machen, hier noch als
Beispiel einen neuen FLEX nachreichen, den wir als Demo geschrieben
haben:

   http://ftp.allegro-c.de/aktuelle-version/onerror.flx

Um es gleich zu sagen: Das ist nur eine kleine Demo-Anwendung, mehr
nicht!
Diese Demo-Anwendung ist *nicht* Sinn und Zweck der PS-variablen,
sondern soll *nur* zeigen, wie sie funktionieren. Was man wirklich
draus macht, ist der Phantasie der FLEXenden Anwender überlassen und
muß mit dieser Demo nicht das geringste zu tun haben. Es kann meilenweit
darüber hinausgehen.

Eingebaut ist die Demo in die o.a. neue Variante des  onerror.flx.
Der onerror.flx ist eine Erweiterung des vorher schon existierenden
gleichnamigen FLEXes, der nichts anderes tut, als eine Eingabe im
Schreibfeld zu verarbeiten, die nicht sinnvoll ist, d.h. wenn etwas
eingegeben wurde, was das Programm a99 selber nicht deuten kann, wie
z.B. die Eingabe  "dir".
Kopieren Sie also zuerst den  onerror.flx  in Ihr Demo2-Verzeichnis.
Und V34.1 muß installiert sein.
Und schauen Sie nach, ob dort die Datei  cat.azx  schon liegt, sonst
kopieren Sie die auch noch da hin. Da hinein kommen die &-Variablen.
Ihren eigenen Anwendungen passiert auf diese Weise nichts!

Was macht nun die Demo und wie?
Nehmen wir mal an, Sie wollen sich drei Fakten notieren, die mit
der Datenbank wenig oder nichts zu tun haben müssen:

1. Die Bedeutung der Abkürzung PS
2. Das Kapitel im Handbuch, wo der Export beschrieben ist
3. Ihren Hochzeitstag, sagen wir den 9.11.1989

Dann geben Sie ins Schreibfeld ein (nach jeder Zeile Enter-Taste):

.PS=Persistenz-Speicher (1.4.2014), einfach & statt $
.export=Kapitel 10. Eingabe:  h ac10
.ht=1.4.1982

Wichtig ist der . am Anfang. Den kennt a99 an der Stelle nicht!
Deshalb tritt dann der onerror.flx in Aktion.

Nach Enter passiert scheinbar gar nichts. Das soll uns im Moment
aber nicht stören.

Sind die drei Eingaben erledigt, geben Sie mal nur

.ht

und schon erscheint wieder

.ht=1.4.1982

denn das Programm hat den Inhalt der PS-Variablen &ht aus dem
PS-Speicher hervorgeholt ind zeigt ihn an, mit einem . davor.
Genauso geht das mit den anderen beiden Eingaben und mit jeder anderen,
die Sie sich ausdenken. Machen Sie solche Eingaben soviele Sie wollen.

Und jedesmal könnten Sie, wenn die .-Zeile erschienen ist, den Inhalt
der Variablen ändern, oder auch den Namen, um einen neuen Inhalt zu
speichern. Oder alles hinter dem = löschen und dann Enter, dann ist
der Eintrag weg.

Damit gewinnt man eine Art unbegrenzt langen Notizzettel für Angaben
aller Art, die man parat haben will. Und dieser Zettel geht nicht
verloren beim Ende der Sitzung.

Problem ist natürlich: man muß sich die Namen der Variablen merken,
um den Inhalt herauszukriegen? Nein, die PS-Variablen kommen ja
in eine Indexdatei, da sollte man doch wohl reinschauen können!
Kann man, und das geht so:

.a-    oder   -e-

und Sie kriegen eine aresqa-Liste mit den PS-Zeilen, beginnend bei a
bzw. bei e.

Was ist anders als mit den $-Variablen:

-- Nach Neustart von a99 ist alles noch da
-- Die Anzahl der Einträge ist praktisch unbegrenzt
-- Alle können einen gemeinsamen Speicher nutzen, aber
-- Jeder kann auch seinen eigenen Bereich haben
-- Aber: eine PS-Variable kann nur bis zu 250 Zeichen lang sein
         (Name + Text + 1)

Dasselbe klappt mit Ihrer eigenen Datenbank, wenn Sie die Datei
cat.azx in Ihr DbDir kopieren und den onerror.flx dazu.
Bei Bedarf cat.azx umbenennen entsprechend Ihrer Datenbank, also
z.B. dat.ezx, wenn Sie  e.cfg haben und dat.epi. Schon klappt's.

Ihren Daten passiert dabei absolut nichts. Soll der Spuk wieder
vorbei sein? Dann  cat.azx  löschen und  onerror.flx  auch.

Auch acon soll bald mit den PS-Variablen umgehen können.

Bei entsprechendem Wissensdurst: Im  onerror.flx  studieren, was
unterhalb der Zeile
:PS
steht.

Binnen kurzem wird Ihnen aber ein Problem aufgehen: Wie ist das mit
dem "eigenen Bereich"? Wenn jemand anders im Netz unter .ht sein
eigenes Hochzeitsdatum eingibt, ist meins dann weg? Das kann's ja
wohl nicht sein!
Diese Anwendung macht daher im PS-Index zwei Bereiche auf. Man könnte
auch hochtrabend sagen, zwei Namensräume. Die unterscheiden sich durch
ein vorgesetztes "Präfix", und zwar "ALLG:" für die allen zugänglichen
gemeinsamen Zeilen, und  "op:" für die privaten des jeweiligen
einzelnen a99-Nutzers, wobei für "op" der Operatorcode aus der INI-
Datei steht. (Intern ist das die Sonderkategorie #op)
Und der onerror.flx prüft immer zuerst, ob der eingegebene Name
mit Groß- oder Kleinbuchstabe beginnt. Wenn Groß, dann kommt die
Zeile in den ALLG:-Bereich, wenn klein, dann in den individuellen.
Wird nun etwa  .b-  eingegeben, dann zeigt a99 die Zeilen aus dem
kleinen Bereich, mit  .B-  die aus dem großen.
Grundregel also für die Eingabe:
      .X... für die gemeinsame Liste, .x... für die private.
wie eben z.B. oben .PS=... und .ht=...

Ach ja, man kann auch den PS-Index als Ganzes betrachten, da sieht
man besser, was es mit den "Namensräumen" auf sich hat:

x ind ~z1


Und damit soll's gut sein für heute.

B.E.





Mehr Informationen über die Mailingliste Allegro