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