[Allegro] Cstring-Modifier Indikatorposition

Thomas Berger ThB at Gymel.com
Di Nov 5 15:17:57 CET 2013


Lieber Herr Eversberg,

aus der cstring-Hilfeseite:

>>>
Sonderfall: Wenn i der Buchstabe 'i' ist statt einer Zahl, wird der Feldinhalt
ab der Indikatorposition genommen. Das ist die Position hinter dem Mehrfachcode.
Beim Standardschema macht das keinen Unterschied, bei MARC jedoch gibt es vor
dem Textbeginn noch 2 Indikatoren. Siehe dazu die Beschreibung im Anhang A des
Handbuchs. Wenn man also schreibt:
var #nnn(i,1) , dann ergibt sich genau der Indikator des Feldes #nnn.
<<<

Es liefert leider den kompletten Feldinhalt ab der Indikatorposition.

Die fragliche Stelle ist in a99.cpp und avjob.cpp identisch durch
"$$051201 indicator!" markiert

if(tsk[j]=='i') { strcpy(Awx,adr-(Cfg->skt-Cfg->tgl-2)); ++j; }  // $$051201
indicator!

und mir ist nicht klar, wie das zu reparieren waere:

Anscheinend ist ja der Inhalt viel weiter oben bereits kopiert
worden, nachtraeglich wird bemerkt, dass es der falsche war
und ein korrigierter Inhalt wird kopiert (das kann gewaltig
schiefgehen, wenn "(i,n)" nicht unmittelbar hinter dem Zugriff
#kkf auf eine echte Kategorie steht)

Das Problem ist nun wohl, dass nun versucht wird, das Komma zwecks
Resynchronisation zu treffen, weil da aber a) gar keine Ziffer stand
und b) das ++j auch schon das "i" uebersprungen hat, wird die
zweite Zahl ignoriert und erst ab der Position des ")" wird
sie gesucht...

viele Gruesse
Thomas Berger



Mehr Informationen über die Mailingliste Allegro