[Allegro] Trick 43: Objekt 2

Bernhard Eversberg ev at biblio.tu-bs.de
Fr Mai 11 08:21:56 CEST 2007


Trick 43: Zwischendurch und nebenbei: Objekt zwei!

Aufgabe: In einem FLEX wird irgendein Satz bearbeitet, und man
          will schnell mal nebenbei einen anderen Satz heranziehen, um
          daraus irgendwas zu entnehmen oder irgendwas damit zu tun,
          dann aber zum ersteren zurück, mit dem man noch nicht fertig
          gewesen war.

Warum: Sowas kommt halt immer öfter mal vor! Z.B. ein Stammsatz, ein
        Lesersatz, ein Auftraggeber-, Kontingent-, Medientypsatz und
        was dergleichen mehr so alles auftritt beim Erwerbungs- und
        Ausleihgeschäft.

Lösung: Zu Fuß macht man es so, und dieses Rezept findet sich auch
in so manchem mitgelieferten FLEX immer noch:

    REZEPT 1
var i          // Nummer des aktuellen Satzes
ins #uaI       //   in der Variablen #uaI sichern
f1nd ...       // einen anderen Satz laden
  ...           // damit irgendwas tun
var "#" #uaI   // den vorherigen Satz zurückholen
find
  ...           // und damit weitermachen

Problem: Wenn es sich um einen neuen, noch nicht gespeicherten Satz
handelt! Dann ist die Variable i nämlich 0 ...

Zum Glück geht es aber auch anders und sicherer: (siehe in  h xset )

    REZEPT 2
switch obj 2   // umschalten auf Satzobjekt 2
f1nd           // anderen Satz holen
  ...           // damit irgendwas tun
switch obj 1   // Satzobj. 1 wieder einschalten

Auf diese Weise bleibt der erste Satz ("Objekt 1") unberührt liegen,
während das, was zwischendurch gemacht wird, an einem getrennten
"Objekt 2" stattfindet.
Bei avanti war das übrigens schon lange so.
M.a.W.: Wenn man "switch obj" nie benutzt, arbeitet man automatisch
immer mit "Objekt 1", und "Objekt 2" liegt ungenutzt herum.

Im Abschnitt "damit irgendwas tun" können durchaus mehrere find-
oder f1nd-Befehle vorkommen, nicht aber weitere "set obj ...", denn
es gibt nur die Objekte 1 und 2, und Nummer 1 ist die ganze Zeit
derjenige Satz, zu dem man letztlich dann zurückgehen will.

Die ältere Methode dagegen würde es gestatten, daß man einfach mehrere
Variablen #u... mit mehreren Satznummern belegt und diese Sätze dann
nach Bedarf wieder aktiviert. Falls man nicht die Übersicht verliert...

Die Umschaltung gilt bis zum nächsten switch, wenn keiner kommt also
bis zum Sitzungsende, d.h. über den konkreten FLEX hinaus. Man arbeitet
also, wurde "switch obj 1" vergessen, anschließend die ganze Zeit mit
dem Objekt 2. Was jedoch keinen Schaden stiftet.

Gewiefte Programmierer bohren sofort nach:
Warum gibt dann nicht gleich ein ganzes Array von Sätzen, zwischen
denen man nach Belieben umschalten kann? Nun, das Array gibt es! Das
ist der Reservespeicher. Was fehlt, ist nur eine FLEX-Methodik,
zwischen diesen nach Belieben herumzuspringen, wie man es ja
manuell schon kann! Es wird ins Auge gefaßt, dies zu realisieren.
(SEHR groß kann der Bedarf wohl nicht sein, er hätte sich dann
längst artikuliert...)







Mehr Informationen über die Mailingliste Allegro