[Allegro] das "radeberg-syndrom" -> ALL-register

Thomas Berger ThB at Gymel.com
Do Jan 15 15:17:29 CET 2015


Am 15.01.2015 um 14:24 schrieb Bernhard Eversberg:
> Am 15.01.2015 um 14:00 schrieb Klaus Lehmann:

> Will man z.B. die Variable #uGR (oder welche sonst Sie für den Zweck
> nutzen) am Ende der Abarbeitung eines Satzes (also bevor der nächste
> drankommt) löschen, dann ist das einfachste Rezept:
> 
> 1. Als allerletzten ak-Befehl diesen einfügen:
> 
> ak=#uGR+X
>   und statt X ein sonst noch ungenutzte Sprungmarke!
> 
> 2. Ganz ans Ende der Parameterdatei:
> 
> #-X
> #uGR dGR e0
> #+#

falsch gedacht: In Nicht-Indexierungs-Kontexten kann zwischen
diesem Loeschen und dem naechsten mal, wo die Indexparameter
fuer irgendeinen Satz ausgefuehrt werden, allerhand passieren:
Flexe, Parameterdateien und interaktive Aktionen des Anwenders
selber koennten #uGR wieder belegt haben.

[Ich habe seinerzeit unter PRESTO bei HANS bitteres Lehrgeld
bezahlt: Variablen, die nur ganz kurz in einem Unterprogramm
der Anzeigeparameter belegt wurden und im gleichen Unterprogramm
sofort wieder geloescht wurden, waren (mit extrem langen Inhalten)
in den Indexparametern sichtbar und brachten das Programm wg.
Ueberlauf des Hintergrundspeichers zum Absturz: Der Stop bei
"PgDown" hat die Abarbeitung der Anzeigeparameter ohne
Ruecksicht auf deren Progammierstruktur brutal angehalten und
bei "ESC" dann abgebrochen: Insofern blieb allerhand zurueck,
von dem ich eigentlich sicher war, es besonders gut aufgeraeumt
zu haben...]


Es hilft also wirklich nur, innerhalb der Parameterdatei
die benoetigten Variablen moeglichst fruehzeitig (aber eben
nicht zu frueh) zu loeschen.

Ich helfe mir manchmal (selten) mit folgender Benennungskonvention:

#uxx (alles klein): Variablen werden einem Abschnitt belegt
und benutzt

#uxX (klein gross): Variablen werden ak-Uebergreifend
genutzt (das ist hier der konkrete und ohnehin der
logisch knifflige Fall, seit nicht mehr Karten gedruckt
werden eigentlich nur noch fuer die Indexierung: Je nach
Befund im Datensatz werden Teile der Parameterdatei null,
ein- oder mehrfach durchlaufen, die Reihenfolge wird durch
die ak-Zeilen diktiert, nicht durch "vorne" oder "hinten"
in der Parameterdatei.
Auch: Parameteruebergreifende Nutzung, Export und Parallel-
Export teilen sich so z.B. mit, ob und was zu tun ist.

#uXx Datensatzuebergreifendes (etwa Zaehler, die jedes
Mal inkrementiert werden damit am Exportende eine Statistik
ausgeworfen werden kann)

#uXX Wirklich globales, die Sitzung oder aehnliches betreffendes.
Eher als read-only oder write once aufzufassen.

Man mag diskutieren, ob das wirklich alle wichtigen Faelle sind
(zumindest sind es alle moeglichen gross/klein-Kombinationen),
wirklich durchgehend halte ich mich allerdings daran, mit #uxx
(klein-klein) nur solche (die grosse Mehrheit) der Variablen
zu benennen, die in einem engen Abarbeitungsablauf auftreten.
Ich kann sie hinter #-A vorsichtshalber fuer die kommende
Verarbeitung loeschen, ohne darueber nachdenken zu muessen,
ob sie bei #-B gesetzt wurde und spaeter noch bei #-U gebraucht
wird...

viele Gruesse
Thomas Berger






Mehr Informationen über die Mailingliste Allegro