Eine Kontrollstruktur ist eine Komponente innerhalb eines Skripts, die entscheidet, welche Richtung in Abhängigkeit von vorgegebenen Parametern eingeschlagen wird. ACLScript stellt sowohl eine bedingte IF-Logik als auch Schleifenstrukturen zur Verfügung.

ACLScript implementiert bedingte Logik über einen IF-Befehl und als optionaler Parameter für viele Befehle in der Sprache:

  • Befehl kontrolliert, ob ein Befehl ausgeführt wird
  • Parameter entscheidet, für welche Datensätze einer Tabelle der Befehl ausgeführt wird

Der IF-Befehl

Bei der Verwendung des IF-Befehls geben Sie einen bedingten Ausdruck fest, auf den der Befehl folgt, der auszuführen ist, falls der Ausdruck wahr ist:

IF v_Zähler > 10 CLASSIFY ON Kundennummer

Diese bedingte Struktur kontrolliert, welcher Code ausgeführt wird, damit Sie den IF-Befehl nutzen können, falls Sie eine gesamte Tabelle auf Basis eines Testausdrucks verarbeiten möchten. Falls der Ausdruck als wahr ausgewertet wird, wird der Befehl für alle Datensätze der Tabelle ausgeführt. Weitere Informationen über den IF-Befehl finden Sie unter IF-Befehl.

IF-Parameter

Viele Befehle akzeptieren einen optionalen IF-Parameter, den Sie verwenden können, um die Datensätze zu filtern, für die der Befehl ausgeführt wird:

CLASSIFY ON Kundennummer IF Staat = 'NY'

Sobald diese Anweisung ausgeführt wird, wird das Skript alle Datensätze der Tabelle klassifizieren, deren Wert im Feld Staat 'NY' ist.

Der LOOP-Befehl

Der Befehl LOOP ist in ACLScript die Schleifenkontrollstruktur.

Hinweis

Der LOOP-Befehl musst innerhalb des GROUP-Befehls ausgeführt werden. Er kann nicht allein auftreten.

Dieser Befehl verarbeitet die Anweisungen innerhalb der Schleife, solange der angegebene WHILE-Ausdruck wahr ist:

ASSIGN v_Zähler = 10
GROUP
  LOOP WHILE v_Zähler > 0
    v_Summe = v_Summe + Betrag
    v_Zähler = v_Zähler - 1
  END
END

Diese Struktur wird zehnmal durchlaufen und addiert den Wert des Felds Betrag zu der Variablen v_Summe. Am Ende jeder Iteration wird die Variable v_Zählerum 1 verringert und dann in dem Ausdruck WHILEgetestet. Sobald der Ausdruck als „falsch“ ausgewertet wird, ist die Schleife abgeschlossen und das Skript fährt fort.

Wenn die Schleife abgeschlossen ist, beinhaltet v_Summe die Summe der zehn Datensätze des Felds Betrag.

Weitere Informationen über Schleifen finden Sie unter LOOP-Befehl.

LOOPING mit einem Unterskript

Manchmal stellt der LOOP-Befehl nicht genau die Looping -Funktionalität zur Verfügung, die Sie benötigen. In einem solchen Fall können Sie ein getrenntes Analytics-Skript mit dem DO SCRIPT-Befehl erstellen, um einen Loop auszuführen: DO SCRIPT SkriptName WHILE Bedingungstest.

Sie können eine der folgenden gebräuchlichen Methoden einsetzen, um das Ende des Loops festzulegen:

  • Flag Der Loop wird durchlaufen, bis eine logische Flag-Variable auf FALSE gesetzt wird
  • Zähler Der Loop wird durchlaufen, eine sich verringernde oder steigernde Varible einen bestimmten Wert über- bzw. unterschreitet

Weitere Informationen über das Aufrufen von Unterskripts finden Sie unter DO SCRIPT-Befehl.

Beispiel

Sie möchten alle CSV-Dateien aus dem Ordner C:\data in Ihr Projekt importieren. Sie können zwar den DIRECTORY-Befehl verwenden, um eine liste der Dateien in dem Ordner zu erhalten, der IMPORT-Befehl kann jedoch nicht innerhalb der GROUP-Struktur eingesetzt werden. Sie benötigen einen alternative Vorgehensweise, um durch die Tabelle zu gehen, die der DIRECTORY-Befehl erstellt.

Um dies zu erreichen, können Sie ein Haupt-Skript erstellen, dass:

  1. Den DIRECTORY-Befehl ausführt und die Ergebnisse in einer Tabelle speichert.
  2. Die Anzahl der Datensätze in der Tabelle anhand eines Zählers angibt.
  3. Ein Unterskript für jeden Datensatz in der Tabelle aufruft und den IMPORT-Befehl für den aktuellen Datensatz ausführt.

Hauptskript

COMMENT Hauptskript

DIRECTORY "C:\Daten\*.csv" TO T_Schleifentabelle
OPEN T_Schleifentabelle
COUNT
v_Anz_Datensätze = COUNT1
v_Zähler = 1
DO SCRIPT Unterskript_importieren WHILE v_Zähler <= v_Anz_Datensätze

Unterskript importieren

COMMENT Unterskript_importieren

OPEN T_Schleifentabelle
LOCATE RECORD v_Zähler

COMMENT Code für den Import der CSV-Datei wird hier eingefügt...

ASSIGN v_Zähler = v_Zähler + 1

Die Variablen werden von allen Skripts verwendet, die in dem Projekt ausgeführt werden, was zur Folge hat, dass das Haupt-Skript das Unterskript sooft aufruft, bis der v_Zähler den Wert für v_Anz_Datensätze übersteigt. Jedes Mal, wenn das Unterskript ausgeführt wird, erhöht sich der v_Zähler.

Diese Struktur ermöglicht Ihnen, den IMPORT-Befehl für jeden Datensatz auszuführen, während die Schleife die Tabelle durchläuft. Wenn das Haupt-Skript abgeschlossen ist, haben Sie alle CSV-Dateien aus dem Ordner C:\data importiert.