AW: [Allegro] Nachladen mit |i3
Manecke, Mathias
manecke at dbl.ddb.de
Fr Aug 5 10:53:56 CEST 2005
Lieber Herr Berger,
es funktioniert bestens. Herzlichen Dank!
Mit freundlichen Grüßen
Mathias Manecke
>-----Ursprüngliche Nachricht-----
>Von: allegro-bounces at biblio.tu-bs.de
>[mailto:allegro-bounces at biblio.tu-bs.de] Im Auftrag von Thomas Berger
>Gesendet: Donnerstag, 4. August 2005 20:02
>An: Allegro-C Diskussionsliste
>Betreff: Re: [Allegro] Nachladen mit |i3
>
>
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Lieber Herr Manecke, liebe Liste,
>
>> In der Demo-DB wird mit der Konstruktion:
>>
>> ***** Es koennten noch selbstaendig gespeicherte Baende
>da sein: *******
>> deshalb wird eine Nachladung ueber Index 9 versucht:
>> #00 +#99J e"=" F" " P"+" |92 wenn ja, dann den ersten nachladen
>> ...
>> #-j
>> ...
>> #00 +j e"=" e"" P"+" |93 naechsten Band laden, dasselbe nochmal
>>
>> eine Auflistung der Bände erzeugt.
>>
>> Das geht schief, wenn zwischen der Sprungmarke und dem laden des
>> nächsten Bandes noch ein anderer Nachladebefehl für das gleiche
>> Register
>> steht:
>
>Bekannt, soweit ich weiss jedoch undokumentiert. Hintergrund
>ist, dass fuer solche Nachladekonstruktionen wie |i2, |i3 etc.
>ein sogenannter "Iterator" benoetigt wird, der sich die letzte
>Position merkt. Und diese Iteratoren gibt es nur global, pro
>Register 1-11 jeweils einen.
>
>
>> #-j
>> ...
>> #xx p"quatsch" |93
>> #00 +j e"=" e"" P"+" |93 naechsten Band laden, dasselbe nochmal
>>
>> Sobald #xx eine gültige Kategorie und im aktuellen Satz
>vorhanden ist,
>> wird offensichtlich der Zähler von |i3 um eins hochgezählt.
>Jedenfalls
>> wird bei einer solchen Konstruktion nur noch jeder zweit Band
>> angezeigt. Dabei spielt es keine Rolle, ob #nn P"quatsch" einen
>> gültigen Schlüssel in Index 9 erzeugt oder nicht.
>
>Ob bei "|i3" der Arbeitstext ueberhaupt eine Rolle spielt, ist
>eine Frage, der ich noch nie nachgegangen bin.
>
>> Ich hatte angenommen, dass |im nur wirkt, wenn in i ein dem
>> Arbeitstext und der Bedeutung von m entsprechender Schlüssel
>> existiert.
>
>Das waere die Variante, dass der Arbeitstext jeweils einen
>individuellen Iterator definiert. Sehr interessante Loesung
>des Problems und ausserdem eine Antwort auf die obige Frage.
>Aber leider nicht bei allegro. 640kB sind bekanntlich genug!
>
>
>> Was das eigentliche Nachladen angeht, stimmt das ja auch.
>Was aber das
>> Zählen der Nachladeversuche angeht, offensichtlich nicht.
>Ist das so,
>> oder habe ich irgendwo einen Denkfehler? Wenn dem so ist,
>ist es also
>> unmöglich, alternative Schlüssel für eine Nachladung mit |i3
>> abzufragen?
>
>Seit ca. Version 15 gluecklicherweise nicht mehr: Man kann den
>aktuellen Indexeintrag zwischenspeichern und mit ">" und |92
>an derselben Stelle aufsetzen, vorausgesetzt, die
>Indexeintraege haben nie mehr als einen Treffer. Unumgaenglich
>ist das z.B. in der rekursiven Situation, wo man einen
>Registerbereich mit Exemplarsaetzen durchlaeuft und pro
>gefundenen Satz auf den zugehoerigen Bestellsatz ueber einen
>Schluessel im gleichen Register zugreifen muss.
>
>Ihr Fall ist gluecklicherweise einfacher gelagert:
>
>
>> Hintergrund meiner Frage:
>> Ich verwende für die Bandverknüpfung alternativ die #00 und
>die Pica-Produktionsnummer, die bei uns in #89P gespeichert ist:
>>
>> #00 +#99J e"[=]" F" " P"+" |92 % wenn B"nde vorhanden,
>ersten nachladen
>> #89P +#99J e"[=]" F" " y2 p"ppn" P"+" |92
>> ...
>> #-j
>> ...
>> #89P +j e"[=]" F" " y2 p"ppn" P"+" |93
>> #00 +j e"[=]" F" " P"+" |93 % naechsten Band laden,
>dasselbe nochmal
>>
>> Das geht immer dann schief, wenn #89P vorhanden ist, aber mit #00
>> verknüpft wurde.
>
>Wenn Sie eine zweite Sprungmarke spendieren, koennen Sie sogar
>den Fall abdecken, dass teils ueber #00 und teils ueber #89P
>verknuepft wurde (allerdings wird keine sinnvolle Reihenfolge
>hergestellt, dafuer muesste man ziemlich tricksen: nach der
>Anzeige jeden Bandes erst die Zaehlungen der jeweils naechsten
>Kandidaten aller Identnummerkandidaten ermitteln und
>miteinander vergleichen: Dann geht der Iterator stets kaputt
>und man muss mit der oben angedeuteten Methode vorgehen)
>
>Die folgende Skizze ist etwas komplizierter, denn man koennte
>ja ganz einfach auch #00 |92 #-j #00 +j |93
>
>#89P |92
>#-k
>#89P +j |93
>
>veranstalten, was nicht sonderlich erhellend ist.
>
>
>#nr dpk Z
>#00 P"|" Apk % Identnummernkandidaten einsammeln
>#89P y2 p"ppn" P"|" Apk
>...
>#-k % aeussere Schleife ueber alle Identnummernkandidaten
>#upk +j e"|" e"=" F32 P"+" |92
>#nr +#99k Z
>
>#-j % innere Schleife ueber alle Baende zu einem Schluessel
>...
>#< % rueckstapeln nicht vergessen
>#upk +j e"|" e"=" F32 P"+" |93
>
>#99k % naechster Identnummernkandidat
>#upk +k y0 dpk b"|" F"|" b0 Apk
>
>Alternativ geht es auch mit einer Sprungmarke plus einem
>Unterprogramm...
>
>
>viele Gruesse
>Thomas Berger
>-----BEGIN PGP SIGNATURE-----
>Version: GnuPG v1.2.3-nr1 (Windows XP)
>Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
>
>iD8DBQFC8lgZENVh3bB0lwMRAqntAKC2zUbX1OXFswIirwPVT4mCENtk4wCeNC6f
>9U/jYXHR5A3hdFQOf2BR/i8=
>=8RO3
>-----END PGP SIGNATURE-----
>
Mehr Informationen über die Mailingliste Allegro