Achtung: Vor Anwendung eines dieser Befehle ist es notwendig, den entsprechenden first-Befehl zu geben!
next [Gegenteil: prev ] avanti
Der nächste Satz der Erg.menge, in der vorher eingestellten Sortierfolge, wird geladen.
Mit if yes/no ... kann man checken, ob es einen nächsten Satz gab. Wichtig bei Schleifen!
Mit if del ... prüfen, ob der nächste Satz ein gelöschter (ungültiger) ist. In normalen Erg.Mengen kommt das nicht vor.
Hinweis: Den ersten Satz läßt man mit first laden, den letzten mit last .
next r
next r holt nur die Kurzzeile des Satzes in die iV und lädt nicht den Satz selbst.
next #
Holt den nächsten Satz in interner Nummernfolge. Also normalerweise den Satz n+1, wenn Nummer n der aktuelle Satz ist.
Unbesetzte Satznummern werden übersprungen, gelöschte (intern ungültig gemachte) Sätze jedoch nicht.
Mit if cancel ... (!) kann man prüfen, ob die Datenbank zu Ende ist, also kein nächster mehr da war, und mit
if del ... ob der nächste Satz ein gelöschter (ungültiger) ist. Der aktuelle Satz bleibt in diesem Fall unverändert.
Beispiel 3 (siehe unten) zeigt, wie man damit in einem FLEX die gesamte Datenbank abarbeiten kann, also alle gültigen Datensätze.
next off [Gegenteil: prev off ]
Der nächste Satz der Offline-Datei wird geladen (aber nicht angezeigt). Mit if yes/no ... kann man checken, ob es gelungen ist oder nicht (weil der letzte erreicht war oder die Menge leer ist).
next sub [Gegenteil: prev sub ]
Ein interner Zeiger wird auf den nächsten hierarchischen Untersatz (subrecord) gesetzt. Nachfolgende ins- und var-Befehle beziehen sich dann auf diesen Untersatz, auch Formularanzeigen (Befehl form ).
Mit if no ... kann man checken, ob es keinen mehr gibt, d.h. ob der Zeiger schon auf dem letzten Untersatz stand.
Mit if hier ... prüft man, ob überhaupt solche Sätze vorliegen, d.h. ob der aktuelle Satz ein hierarchischer ist.
Wenn man den Zeiger auf einen ganz bestimmten Untersatz setzen will, von dem man die Eintragung in #01 kennt, benutzt man dafür den Befehl sub #01 nnn
Sonderfälle
next $0 / $1
Die nächste "kleine" bzw. "große" $-Variable wird in die iV geholt, die Form ist $Name Inhalt.
Mit if no ... kann man checken, ob es keine mehr gab.
Die erste Variable holt man mit first $0 / $1
next view
Die nächste Zeile der aktuellen ViewListe wird in die iV kopiert.
Mit if no ... kann man checken, ob es keine nächste mehr gab.
Beispiel 1:
Die Sätze der aktuellen Ergebnismenge sollen in der eingestellten Reihenfolge behandelt werden:
Genauso funktioniert es mit der Offline-Datei, wenn man "off" hinter das Befehlswort "first" bzw. "next" setzt. Angenommen ist hier, daß die Erg.Menge keine gelöschten Sätze und keine unbesetzten Nummern enthält! Dann ist das Strickmuster sehr einfach:
first
:schleife
... irgendeine Behandlung
next
if yes jump schleife
Beispiel 2: (avanti)
Wenn die Erg.Menge bei avanti durch Vorgabe einer Nummernliste entsteht, ist es bei der
Durcharbeitung wichtig, auf gelöschte und ungültige Nummern zu achten. Hier das Schema:
find #nnn,nnn,nnn,...
get first
:loop
if deleted wri "rec deleted " i n;jump nix // gelöschter Satz
if no wri "number is not in use " n;jump nix // unbelegte Satznummer
Verarbeitung des Datensatzes
:nix
get next
if cancel wri "Ende" n;jump ende // Ende der Erg.Menge
jump loop
:ende
weitere Befehle nach Ende der Erg.Menge
Beispiel 3:
Alle Sätze der gesamten Datenbank sollen irgendwie behandelt werden.
Hier ist das Muster, das man dafür übernehmen kann:
(Größeres Beispiel: summe.flx ; schnelleres Unterprogramm: siehe mitgelieferte Datei alldata.inc )
...
first #
falls der erste Satz gelöscht ist: nächster Satz
if del jump weiter
Jeder Satz wird in dieser Schleife verarbeitet:
:schleife
Beliebige Befehle für den momentanen Datensatz
put nicht vergessen, falls er wieder gespeichert werden soll
Nächsten Satz holen (interne Nummernfolge)
:weiter
next #
kein Satz mehr, Ende erreicht
if cancel jump exit
der Satz ist gelöscht
if del jump weiter
es gab noch einen Satz? dann -> :schleife
if yes jump schleife
:exit