Übersicht (Befehl LOOP-END LOOP)

Die Struktur LOOP-END LOOP führt wiederholte Transformationen aus, die von den Befehlen in der Schleife angegeben werden, bis sie eine angegebene Grenze erreichen. Die Grenze kann durch eine Indexierungsklausel im Befehl LOOP , eine Klausel IF im Befehl END LOOP oder einen Befehl BREAK innerhalb der Schleifenstruktur angegeben werden (siehe BREAK). Darüber hinaus kann die maximale Anzahl von Iterationen innerhalb einer Schleife im Unterbefehl MXLOOPS unter SETangegeben werden. Der Standardwert für MXLOOPS ist 40.

Die Klausel IF im Befehl LOOP kann verwendet werden, um wiederholte Transformationen für ein Subset von Fällen auszuführen. Der Effekt ähnelt der Verschachtelung der Struktur LOOP-END LOOP innerhalb einer Struktur DO IF-END IF , aber die Verwendung von IF on LOOP ist einfacher und effizienter. Sie müssen jedoch die DO IF-END IF -Struktur verwenden, wenn Sie verschiedene Transformationen für verschiedene Untergruppen von Fällen durchführen möchten. Sie können auch IF on LOOP verwenden, um den Trennwert anzugeben, insbesondere wenn der Trennwert vor der ersten Iteration erreicht werden kann.

LOOP und END LOOP werden normalerweise in einem Eingabeprogramm oder mit dem Befehl VECTOR verwendet. Da die Schleifenstruktur Transformationen für einen einzelnen Fall oder für einen einzelnen Eingabedatensatz wiederholt, der Informationen zu mehreren Fällen enthält, können Sie komplexe Datendateien lesen oder Daten für ein aktives Dataset generieren. Weitere Informationen finden Sie unter INPUT PROGRAM-END INPUT PROGRAM und VECTOR.

Die Schleifenstruktur wiederholt Transformationen für einzelne Fälle über Variablen hinweg. Sie unterscheidet sich von der Struktur DO REPEAT-END REPEAT , die Transformationen in einer angegebenen Gruppe von Variablen repliziert. Wenn beide zum Ausführen einer Task verwendet werden können, wie z. B. das selektive Transformieren von Daten für einige Variablen, sind LOOP und END LOOP im Allgemeinen effizienter und flexibler, aber DO REPEAT ermöglicht die Auswahl von nicht benachbarten Variablen und die Verwendung von Ersetzungswerten mit unterschiedlichen Intervallen.

Optionen

Fehlende Werte. Sie können verhindern, dass Fälle mit fehlenden Werten für eine der in der Schleifenstruktur verwendeten Variablen in die Schleife eintreten. Weitere Informationen finden Sie im Abschnitt Fehlende Werte (Befehl LOOP-END LOOP) .

Daten erstellen. Zum Generieren von Daten kann eine Schleifenstruktur innerhalb eines Eingabeprogramms verwendet werden. Weitere Informationen finden Sie in Daten erstellen (Befehl LOOP-END LOOP) .

Komplexe Dateistrukturen definieren. Eine Schleifenstruktur innerhalb eines Eingabeprogramms kann verwendet werden, um komplexe Dateien zu definieren, die nicht von Standarddateidefinitionsfunktionen verarbeitet werden können.

Basisspezifikation

Die Basisspezifikation ist LOOP gefolgt von mindestens einem Transformationsbefehl. Die Struktur muss mit dem Befehl END LOOP enden. Befehle innerhalb der Schleife werden ausgeführt, bis die Grenze erreicht ist.

Syntaxregeln

  • Wenn LOOP und END LOOP angegeben werden, bevor ein aktives Dataset vorhanden ist, müssen sie in einem Eingabeprogramm angegeben werden.
  • Wenn sowohl eine Indexierungsklausel als auch eine IF -Klausel in LOOPverwendet werden, muss die Indexierungsklausel zuerst verwendet werden.
  • Schleifenstrukturen können in anderen Schleifenstrukturen oder in DO IF -Strukturen verschachtelt sein und umgekehrt.

Operationen

  • Der Befehl LOOP definiert den Anfang einer Schleifenstruktur und der Befehl END LOOP sein Ende. Der Befehl LOOP gibt die Steuerung an LOOP zurück, sofern die Grenze nicht erreicht wurde. Wenn die Grenze erreicht ist, wird die Steuerung an den Befehl übergeben, der unmittelbar auf END LOOPfolgt.
  • Befehle, die sofort wirksam werden, ohne die Daten zu lesen oder anstehende Befehle auszuführen (z. B. VALUE LABELS, MISSING VALUES, VARIABLE LABEL), Befehle, für die kein aktives Dataset erforderlich ist (z. B. DISPLAY, HOST, INSERT, OMS, SET), und der Befehl GET werden bedingungslos und sofort verarbeitet, wenn sie in einer Schleifenstruktur auftreten. Die angegebene Bedingung wird für diese Befehle ignoriert.
  • Befehle, die einen Datendurchlauf erfordern, wie z. B. Statistik-oder Diagrammprozeduren, können nicht in eine Schleifenstruktur eingeschlossen werden und führen dazu, dass der Befehl LOOP fehlschlägt.
  • Eine Indexierungsklausel (z. B. LOOP #i=1 to 1000) überschreibt den Grenzwert SET MXLOOPS , aber eine Schleife mit einer IF -Bedingung wird beendet, wenn der Grenzwert MXLOOPS erreicht wird, bevor die Bedingung erfüllt ist.