[Inhalt] [Zurück] [Weiter] [Thema] [Index]

FORALL


FORALL Element IN Liste
    Anweisungen
ENDFOR

oder

FORALL Element IN Liste WHILE (Bedingung)
    Anweisungen
ENDFOR

Dem Element werden nacheinander alle Elemente der Liste zugewiesen. In AZUR können Listen vom Typ ZRList, QuantList, Polygon, Layer, Karte, Array, Tupel, Relation, Datenbank, Baum und Intervall durchlaufen werden. Die Elemente von Polygonen sind GeoPoints, die Elemente von Layern sind Polygone und die Elemente von Karten sind Layer. Die Elemente von Baum sind Baum (dessen Kinder). Die Elemente von Tupel sind Strings (dessen Feldnamen). Die Elemente von Intervallen sind Zeitpunkte in einem vorzugebenen Zeitschritt

Wird, wie oben in der zweiten Form, ein WHILE benutzt, dann bricht die Schleife ab, wenn die Bedingung nicht erfüllt ist. Die Bedingung wird jeweils nach der Zuweisung an Element getestet, sodass Element auch in der Bedingung benutzt werden kann.

Arrays werden sortiert durchlaufen. Siehe dazu Abschnitt Arbeiten mit Arrays

Falls die Liste eine Relation ist (aber keine dBase-Relation), kann diese auch nach einem bestimmten Schlüssel sortiert durchlaufen werden. Die Syntax hierfür ist

FORALL Element IN Relation (sortindex)
    Anweisungen
ENDFOR
sortindex ist ein String oder ein Ausdruck vom Typ String. Er enthält den Feldnamen (oder die mit + verketteten Feldnamen) für den Index. Wenn sortindex mit einem - beginnt, wird die Relation in umgekehrter Reihenfolge (Große zuerst) durchlaufen. Soll der Hauptindex rückwärts durchlaufen werden, wird nur ein - übergeben. Beispiel:
FORALL Element IN Relation ("-")
    Anweisungen
ENDFOR
WHILE und Sortierung können auch kombiniert werden.

Die Syntax von FORALL-Schleifen über Intervalle ist:

FORALL Element IN Intervall (dist)
    Anweisungen
ENDFOR


Beispiele:
   zr_liste := OrtQuery ("12345")
   FORALL zr IN zr_liste
      Print (Parameter (zr))
   ENDFOR

   bereich := [11.11.77, 11.11.88]
   quant_liste := QuantenFolge (zr, bereich)
   FORALL q IN quant_liste
      Print (YLinks (q))
   ENDFOR

   lay := ReadLayer ("orte.geo")
   FORALL poly IN lay WHILE (Name(poly)#"Aix")
   ENDFOR
   IF (Name(poly)="Aix")
   	print ("gefunden")
   ENDIF

   fokus := [@"1.1.1990 0:00", @"1.1.2020 0:00"]
   FORALL zp IN fokus (~"1a")
      print (zp)
   ENDFOR


toposoft GmbH 31. März 2021