Ü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 SET
angegeben 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
undEND 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 inLOOP
verwendet 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 BefehlEND LOOP
sein Ende. Der BefehlLOOP
gibt die Steuerung anLOOP
zurück, sofern die Grenze nicht erreicht wurde. Wenn die Grenze erreicht ist, wird die Steuerung an den Befehl übergeben, der unmittelbar aufEND LOOP
folgt. - 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 BefehlGET
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 GrenzwertSET MXLOOPS
, aber eine Schleife mit einerIF
-Bedingung wird beendet, wenn der GrenzwertMXLOOPS
erreicht wird, bevor die Bedingung erfüllt ist.