[Allegro] Upload
Fischer, Thomas
fischer at sub.uni-goettingen.de
Mo Okt 5 15:41:54 CEST 2015
Hallo Herr Eversberg,
> Am 05.10.2015 um 08:26 schrieb Bernhard Eversberg <b.eversberg at tu-braunschweig.de>:
>
> Am 04.10.2015 15:14, schrieb Fischer, Thomas:
>>
>> 1. Ich habe in einem Job den Befehl
>> upload test.txt
>>
>> Die Ausgabe von acon ist darauf
>>
>> Uploading test.txt...M: Satz 66 gespeichert (_a)
>> M: Satz 66 gespeichert (_a)
>> M: Satz 67 gespeichert (_a)
>> M: Satz 67 gespeichert (_a)
>> M: Satz 64 gespeichert (_a)
>> M: Satz 64 gespeichert (_a)
>>
>> Abgesehen von dem fehlenden Zeilenumbruch hinter "Uploading test.txt…" irritiert mich der Rest der Anzeige:
>> – Was bedeutet das (_a)?
> Nichts Besonderes, einfach ignorieren. Wird aber noch geändert.
>> – Wieso wird jeder Satz zwei mal gespeichert?
> Wird er verdoppelt?
> Ist das Ergebnis der Aktion in Ordnung?
es sollen einfach neun Sätze neu hinzugefügt werden, verdoppelt wird da nichts (wie könnte das bei upload auch geschehen?).
Das Ergebnis scheint aber korrekt zu sein.
>> 2. In dieser Situation passiert außerdem etwas seltsames: Der letzte Satz aus test.txt wird nicht vollständig gespeichert, sondern bricht mitten in einer Zeile (der 373., nach dem 12287. Zeichen) ab, konkret in der Zeile
>> #3010 Sartorius, Carl!078281474!Sartorius, Carl *1865-1945* ; ID: gnd/116809396
>> hinter "Sartorius, Carl" und vor "*1865".
>> Der weitgehend identische Satz, nur mit einem leicht verschiedenem Untersatz, wird vorher korrekt übernommen.
>> Ein anschließend in A99 eingegebenes
>> x upload test.txt
>> übernimmt alle Sätze erneut, inklusive des letzten (vollständig!).
Dazu ist mein derzeitiger Erkenntnisstand, dass
close x
im JOB nicht die gewünschte Wirkung hat. Ich habe jetzt ein
exp f toast.txt
eingefügt, damit wird test.txt vollständig eingelesen.
Übrigens wird damit auch eine leere Datei toast.txt erzeugt, obwohl nichts hineingeschrieben wird. Das widerspricht der Aussage in der Doku (h xexport):
Übrigens: Die Datei wird erst dann neu angelegt, wenn etwas hineingeschrieben wird. Es kann also nicht passieren, daß eine leere Datei zurückbleibt, wenn gar nichts geschrieben wurde.
>> 3. Der Befehl
>> new
>> scheint in einem JOB keinen neuen Datensatz zu erzeugen, stattdessen wird anscheinend der bestehende überschrieben.
>>
> In acon gibt es im Arbeitsspeicher stets nur einen Satz!
> Wenn der bestehende noch gespeichert werden soll, muß man
> das vor einem "new" explizit tun.
Das ist mir völlig unklar.
Wieso soll ein "new" ein vorheriges Speichern (put?) erfordern? Das kommt als Verlauf mir extrem umplausibel vor, da würde ich mir keinen Hinweis in der Doku sondern eine andere Implementierung von "new" wünschen.
Allerdings funktionierte bei einem Test das "new" und das "put new" wie erwartet, das hat mich darauf gebracht, dass ich einen klassischen Programmierfehler begangen hatte: Den Index der Schleife innerhalb der Schleife verändert.
Konkret erfolgte der "new"-Befehl innerhalb einer Schleife der Art
first #
if del jump weiter
:mainloop
…
new
…
:weiter
next #
if cancel jump fertig
if del jump weiter
if yes jump mainloop
Da ist (zumindest mir) nicht klar, was denn passiert wenn innerhalb der Schleife neue Sätze erzeugt werden.
Ich hatte erwartet, sie würden ans Ende angehängt (das wäre auch nicht ganz das Gewünschte), das passiert aber offenbar nicht.
Ich habe mir jetzt mit einer Ergebnismenge geholfen, das sieht korrekt aus.
Allerdings frage ich mich jetzt, ob die Satznummer nicht auch anderweitig in einer solchen Schleife verändert werden kann.
Mit freundlichen Grüßen
Thomas Fischer
Mehr Informationen über die Mailingliste Allegro