Fragen zu 'read file ...', first off, next off ...
Heinrich Allers
allers at t-online.de
Mi Jan 16 07:38:07 CET 2002
Ich möchte eine 6 Datensätze umfassende Grunddatei (sechs.alg) in
eine Datenbank (und zwar in Datei <dbn>_11.ald) unbesehen (d.h.
ohne Primärschlüsselvergleich) einbringen und benutze dazu
folgende (zu diagnostischen Zwecken erweiterte) Flexdatei:
erase off
read file sechs.alg
first off
if no jump ende
var "Erster: " #00
mes
dow
input 11
put new
:naechst
next off
if no jump ende
var "Nächster: " #00
ansi
mes
dow
input 11
put new
jump naechst
:ende
mes FERTIG!!!
close
erase off
end
Das, was parallel zum Ablauf der Flexdatei geschieht, vermag ich
ihrer Gestaltung (der eingestreuten 'mes') wegen Schritt für Schritt
zu beobachten, und zwar beobachte ich sowohl das Wachsen der
anfangs nicht vorhandenen Datei output.adt als auch (im Register
der Datenbank) den Erfolg des satzweisen Einbringens der
Grunddatei.
Folgende seltsame Beobachtungen mache ich:
1.
Da die Grunddatei 6 Sätze umfaßt, müßte die Abarbeitung der
Flexdatei in _sechs_ Schritten erfolgen. Das tut sie aber nicht - es
sind _acht_ Schritte!
2.
Der erste der Schritte folgt dem 'first off', das ist richtig. Die
folgenden 7 Schritte (von denen es eigentlich nur 5 geben dürfte)
folgen dem 'next off'.
3.
Schritt 1 (dem 'first off') folgend, schreibt den ersten Satz der
Grunddatei in die Datenbank. Schritt 2 (dem 'next off') folgend,
schreibt den zweiten Satz der Grunddatei in die Datenbank. Bis
dahin richtig, aber ab dann, bei den folgenden (sechs) Schritten,
wird _nichts_ mehr in die Datenbank geschrieben! Warum nicht?
4.
output.adt wird (mittels 'dow') Schritt für Schritt mit den
Datensätzen gefüllt, die nacheinander aus sechs.alg gelesen
werden - richtig, was die ersten 6 Schritte bzw. die insgesamt 6
Sätze von sechs.alg betrifft. Aber anschließend wird die Schleife
':naechst' ... 'jump naechst' noch weitere zwei Male (der 7. und 8.
Schritt halt) durchlaufen, und dabei wird noch einmal der erste und
der zweite Satz aus der Grunddatei sechs.alg in output.adt
hineingeschrieben, derart, daß in output.adt am Ende 8 Sätze
stehen! Frage Warum dieser Nachklapp von 2 Schleifendurchläufen?
Kann mir jemand weiterhelfen?
Rat- und hilflos grüßt:
Heinrich Allers
allers at t-online.de * http://home.t-online.de/home/allers
Die Angriffstruppen in Afghanistan erbomben sich mit Streubomben
(http://www.iwif.de/wf399-23.htm) den Status von Friedenstruppen.
Mehr Informationen über die Mailingliste Allegro