Alle unsere Aktionen setzen Entscheidungen voraus. Bei der Skripterstellung ist das nicht anders. Manchmal möchten Sie einen Befehl nur ausführen, falls einige andere Bedingungen wahr sind. Oder Sie möchten nur einige Datensätze einer Tabelle in Abhängigkeit von deren Daten verarbeiten. ACLScript stellt für Entscheidungen innerhalb von Skripts mehrere Methoden zur Verfügung. Sie alle nutzen bedingte Ausdrücke.
Was ist ein bedingter Ausdruck?
Ein bedingter Ausdruck ist ein beliebiger Ausdruck, der als wahr oder falsch ausgewertet wird. Bedingte Ausdrücke bestimmen, welche Aktionen in einem Skript ausgeführt werden. Der Skriptautor legt sie fest.
Das ist eine recht technische Definition. Ein einfaches Beispiel aus der echten Welt kann jedoch veranschaulichen, was wir meinen:
Beispiel
Sie laufen die Straße entlang und sehen jemanden, den Sie kennen. Höflicherweise möchten Sie diese Person grüßen. Sagen Sie aber „Guten Morgen“ oder lieber „Guten Tag“?
Die Antwort könnte von einer einfachen Bedingung abhängen: Ist es bereits 12 Uhr mittags oder später? Wenn die Antwort Ja lautet, sagen Sie „Guten Tag“, ansonsten sagen Sie „Guten Morgen“.
In diesem Beispiel bestimmt der bedingte Ausdruck die von Ihnen eingeschlagene Aktion (welcher Gruß verwendet wird) in Abhängigkeit davon, ob er mit „wahr“ (ja) ausgewertet wird.
Der Ausdruck aus dem soeben erläuterten Beispiel könnte wie folgt in ACLScript umgesetzt werden:
COMMENT Überprüft, ob die aktuelle Zeit 12.00 Uhr mittags oder später ist
NOW() >= `t120000`
Sie können dieses Beispiel ausführen, indem Sie die folgende Zeile kopieren und dann in die Befehlszeile von Analytics einfügen. In Abhängigkeit von der Tageszeit, zu der Sie dies tun, wird der Ausdruck entweder als wahr oder als falsch ausgewertet:
DISPLAY NOW() >= `t120000`
Tipp
Wenn die Befehlszeile nicht sichtbar ist, wählen Sie Fenster > Befehlszeile.
Sobald Sie das Beispiel ausführen, können Sie versuchen, den digitalen Zeitwert von 12.00 Uhr mittags innerhalb des Ausdrucks zu ändern, damit die gegenteilige Auswertung erfolgt.
Entscheidung, ob ein Befehl ausgeführt werden soll
Analytics enthält den IF-Befehl, damit Sie entscheiden können, ob ein Befehl ausgeführt werden soll oder nicht. Der Befehl benötigt zwei Eingaben:
- einen bedingten Ausdruck
- einen auszuführenden Befehl, falls der Ausdruck wahr ist
Wenn der bedingte Ausdruck als falsch ausgewertet wird, wird der Befehl nicht ausgeführt.
„Guten Tag“ sagen
Wir setzen das oben begonnene Beispiel fort. Versuchen Sie den folgenden Code in die Befehlszeile einzufügen:
IF NOW() >= `t120000` DISPLAY "Guten Tag"
Wenn es nach 12.00 Uhr ist, wird der Befehl DISPLAY in der Registerkarte „Ausgabe“ den Text „Guten Tag“ ausgeben. Wenn es aber an Ihrem gegenwärtigen Standort noch Morgen ist, erfolgt keine Ausgabe. Das Skript führt dann den Befehl DISPLAY nicht aus.
„Guten Morgen“ sagen
Wenn Ihr Ausdruck als falsch ausgewertet wird, könnten Sie sich fragen, wie Sie eine Ausgabe von „Guten Morgen“ bewerkstelligen könnten. Einige Skriptsprachen stellen ein „ELSE“-Konstrukt zur Verfügung, um sowohl wahre als auch falsche Fälle zu handhaben, ACLScript jedoch nicht. Stattdessen verwenden Sie einfach einen zweiten IF-Befehl mit dem gegenteiligen Ausdruck.
Versuchen Sie, diesen Ausdruck in die Befehlszeile einzufügen:
IF NOW() >= `t120000` DISPLAY "Guten Morgen"
Das Beispiel funktioniert wie zuvor. Wenn es nun jedoch vor 12.00 Uhr ist, wird der Befehl DISPLAY den Text „Guten Morgen“ ausgeben.
Wie sieht dies in einem Skript aus?
Bisher waren die Beispiele auf den Befehl DISPLAY beschränkt, der lediglich in der Befehlszeile zur Verfügung steht. In einem Skript gelten jedoch dieselben Prinzipien. Anstatt den Gruß in der Registerkarte „Anzeige“ auszugeben, speichert das Skript in diesem Beispiel den Gruß in einer Variable namens v_Gruß:
COMMENT Speichert den korrekten Gruß in Abhängigkeit von der Tageszeit
IF NOW() >= `t120000` ASSIGN v_Gruß = "Guten Tag"
IF NOW() < `t120000` ASSIGN v_Gruß = "Guten Morgen"
Wenn das Skript vor 12.00 Uhr ausgeführt wird, lautet der in der Variable gespeicherte Wert „Guten Morgen“. Wenn Sie es ab 12.00 Uhr ausführen, wird der Wert „Guten Tag“ in der Variablen gespeichert. Versuchen Sie, diesen Quellcode in Ihren Skript-Editor einzufügen und führen Sie das Skript aus. Sie können den Wert der Variablen nach der Ausführung in der Registerkarte Variablen überprüfen.
Entscheidung, welche Datensätze verarbeitet werden
Manchmal möchten Sie entsprechend den obigen Ausführungen entscheiden, ob das Skript einen Befehl ausführt. In anderen Fällen möchten Sie jedoch, dass der Befehl nur für bestimmte Datensätze in einer Tabelle ausgeführt wird. Hierbei handelt es sich um ein anderes Entscheidungsszenario, das sich von der Verwendung des IF-Befehls unterscheidet.
Wenn Sie Datensätze selektiv verarbeiten möchten, bietet ACLScript für viele Befehle den IF-Parameter. Wenn Sie diesen Ansatz verwenden, setzt der Befehl voraus, dass Sie einen bedingten Ausdruck als Eingabe festlegen. Der Ausdruck wird für jeden Datensatz in der Tabelle getestet. Wenn er als wahr ausgewertet wird, wird der Datensatz verarbeitet:
COMMENT Summiert das Feld „Betrag“ für Datensätze, deren Menge über 5 liegt
TOTAL Betrag IF Menge > 5
Transaktionen berechnen, die am Nachmittag erfolgten
Sie können denselben bedingten Ausdruck NOW( ) >= `t120000` verwenden, um die Summe aller am Nachmittag erfolgten Transaktionen in einer Tabelle zu berechnen. Betrachten Sie dazu die folgende Tabelle mit Transaktionsdaten:
Transaktionsbetrag | Stückkosten | Produktnr | Transaktionsdatum | Menge |
---|---|---|---|---|
618,3 | 6,87 | 070104397 | 2000-11-17 12:00 | 90 |
6.705,12 | 6,87 | 070104677 | 2000-11-17 9:30 | 976 |
7.955,46 | 6,87 | 070104657 | 2000-11-17 14:45 | 1.158 |
4.870,83 | 6,87 | 070104327 | 2000-11-17 15:00 | 709 |
10.531,71 | 6,87 | 070104377 | 2000-11-17 9:57 | 1.533 |
5734 | 47 | 030414313 | 2000-10-30 1:00 | 122 |
2.196 | 18 | 030414283 | 2000-10-30 18:25 | 122 |
Um die Summe des Felds Transaktionsbetrag zu berechnen, verwenden Sie den Befehl TOTAL:
COMMENT Summiert das Feld „Transaktionsbetrag“
TOTAL Transaktionsbetrag
Dieser Befehl verarbeitet jeden Datensatz in der Tabelle und berechnet die Summe 38.611,42, wobei es sich um die Summe aller Transaktionen handelt.
Um den Befehl um Entscheidungen zu erweitern und lediglich Transaktionen zu verarbeiten, die ab 12.00 Uhr auftraten, können Sie TOTAL den Parameter IF hinzufügen. Sie verwenden denselben bedingten Ausdruck aus dem Beispiel am Anfang, ersetzen jedoch NOW durch den Zeitbestandteil des Transaktionsdatums:
COMMENT Summiert das Feld „Transaktionsbetrag“ für alle Transaktionen am Nachmittag
COMMENT Verwendet Funktionen, um den Zeitbestandteil des Datums im Feld „Transaktionsdatum“ zu extrahieren
TOTAL Transaktionsbetrag IF CTOT(TIME(Transaktionsdatum)) >= `t120000`
Im Befehl müssen Sie Funktionen zur Isolierung des Zeitbestandteils des Transaktionsdatums verwenden. Danach ist die Entscheidung jedoch derselbe bedingte Ausdruck aus dem Beispiel am Anfang: Ist es 12.00 Uhr oder später? Wenn die Antwort Ja lautet, wird der Betrag in der Summe aufgenommen.
Dieser Befehl berechnet eine Summe von 15.640,59, wobei es sich um die Summe aller Transaktionen innerhalb der Tabelle vom Nachmittag handelt.