Anweisungen

07.02.2018
 Daten mathematisch analysieren > Formel > FPScript > Anweisungen

Anweisungen

Den FPScript-Code Ihrer Formel strukturieren Sie in Form von einer oder mehreren Anweisungen. Sie schreiben jede Anweisung normalerweise in eine eigene Zeile. Sie können jedoch auch mehrere Anweisungen in die gleiche Zeile schreiben. Diese müssen Sie dann mit einem Semikolon ';' trennen. Auch das Splitten einer Anweisung in mehrere Zeilen ist möglich. Für Zeilen, die mit ihren Folgezeilen zusammengefasst werden sollen, müssen Sie als letztes Zeichen einen Backslash '\' oder ein Unterstreichungszeichen '_' eingeben.

Zuweisung

Durch eine Zuweisung können Sie einer Variablen einen anderen Inhalt zuweisen. In einer Variablen, die z. B. eine Datenreihe enthält, können Sie mit der indizierten Zuweisung gezielt einzelne Werte oder Ausschnitte überschreiben. Mit der Set-Anweisung oder dem As Object-Schlüsselwort können Sie einer Variablen eine Objektreferenz zuweisen. Anschließend können Sie diese Variable dann verwenden, um auf Eigenschaften des referenzierten Objektes zuzugreifen.

Treffen von Entscheidungen mit If...Then...Else

Die If...Then...Else-Anweisung wird verwendet, um zu überprüfen, ob eine Bedingung den Wert TRUE oder FALSE hat, um abhängig davon eine oder mehrere Anweisungen auszuführen. Normalerweise ist die Bedingung ein Ausdruck mit einem Vergleichsoperator zum Vergleich von zwei Variablen oder Werten. Informationen über Vergleichsoperatoren finden Sie unter Vergleichsoperatoren. If...Then...Else-Anweisungen können in beliebiger Tiefe verschachtelt werden.

Ausführung eines Blockes, wenn eine Bedingung TRUE ergibt

In diesem Fall entfällt das Schlüsselwort Else:

If Wert > 2 Then
    Wert = 5
End

Ausführung eines Blockes, wenn eine Bedingung TRUE ergibt und eines anderen, wenn die Bedingung FALSE ergibt

Die Anweisungen, die auszuführen sind, wenn die Bedingung FALSE ergibt, werden zwischen die Schlüsselworte Else und End eingefügt.

If Wert > 2 Then
    Wert = 5
Else
    Wert = 0
End

Verwenden von Schleifen zum Wiederholen von Code

FPScript bietet Ihnen eine Vielzahl von Operationen zum Suchen von Ereignissen und zum Verarbeiten von Datensätzen als Ganzes. In seltenen Fällen werden Sie jedoch Schleifen benötigen, um z. B. über die Werte einer Datenreihe zu laufen. Bei einer Schleife definieren Sie in der Regel eine Schleifenvariable, die die Wiederholungen aufzählt. Diese Variable können Sie dann z. B. in einer Indexoperation verwenden, um auf den entsprechenden Wert eines Datensatzes zuzugreifen:

// Variable deklarieren

Dim Ergebnis, i

// Zu verrechnende Datenreihe kopieren
Ergebnis = Datenreihe

// Über alle Werte der Datenreihe laufen
For Each Value i In Datenreihe Do

// Werte die kleiner als Null sind im Ergebnis auf null setzen
    If Datenreihe < 0 Then
        Ergebnis = 0
    End
End
Return Ergebnis  // die Ergebnis-Datenreihe übergeben

Obiges Beispiel verwendet eine Schleife um negative Werte in einer Datenreihe aufzusuchen und auf den Wert Null zu setzen. Alle Anweisungen, die zwischen Do und End stehen werden mehrfach ausgeführt wobei die Variable i von 0 bis zur Werteanzahl von Datenreihe minus 1 zählt. Das Beispiel zeigt auch eine bedingte Anweisung. Die Anweisung Ergebnis = 0. wird nur ausgeführt, wenn der i-te Wert in Datenreihe kleiner als Null ist. Sie können am Beispiel auch sehen, wie FPScript-Programme durch Einrückungen lesbarer gestaltet werden können. Alle Anweisungen innerhalb der Schleife wurden um eine Tabulator-Position eingerückt. Das Gleiche gilt für die bedingte Anweisung.

Hinweis   Sie sollten Schleifen nur in den Fällen verwenden, in denen keine passende Funktion existiert und das Problem auch nicht als arithmetischer Ausdruck beschrieben werden kann. Die eingebauten Funktionen von FlexPro sind um ein Vielfaches schneller als die Schleifen, die Sie mit FPScript programmieren. Obiges Beispiel kann z. B. wie folgt umgeschrieben werden:

Dim Ergebnis, Idx        // Variable deklarieren
Ergebnis = Datenreihe    // Zu verrechnende Datenreihe kopieren
// Positionen aller Werte < 0 ermitteln
Idx = ValuesAboveLevel(Datenreihe, 0, EVENT_INDEX + EVENT_COMPLEMENT)
// Werte an diesen Positionen im Ergebnis auf null setzen
Ergebnis[Idx] = 0
Return Ergebnis          // die Ergebnis-Datenreihe übergeben

FPScript stellt Ihnen die folgenden Schleifen zur Verfügung:

While...End: Führt eine Schleife aus, solange eine Bedingung den Wert TRUE ergibt.

Do...While: Führt eine Schleife aus, bis eine Bedingung den Wert FALSE ergibt.

For...End: Verwendet einen Zähler, um die Anweisungen so oft zu wiederholen, wie durch den Zähler angegeben.

For Each Value...End: Traversiert alle Werte eines Datensatzes. Es wird kein Zähler verwendet.

For Each Element...End: Verwendet einen Zähler, um alle Elemente einer Liste abzuzählen.

For Each Row...End: Verwendet einen Zähler, um alle Zeilen einer Datenreihe oder einer Datenmatrix abzuzählen.

For Each Column...End: Verwendet einen Zähler, um alle Spalten einer Datenmatrix abzuzählen.

Wiederholen von Anweisungen, solange eine Bedingung den Wert TRUE hat

Die While...End-Schleife testet zuerst die Bedingung und führt die Anweisungen dann aus, solange die Bedingung TRUE ergibt. Folgendes Beispiel sucht die Position in Datensatz, ab dem der erste positive Wert auftritt.

i = 0
While Datensatz < 0 Do
   i = i + 1
End

Wiederholen von Anweisungen, bis eine Bedingung den Wert FALSE hat

Die Do...While-Schleife führt die Anweisung zunächst ein erstes Mal aus, und testet dann die Bedingung. Folgendes Beispiel berechnet solange Zufallszahlen, bis eine Zahl größer oder gleich Null erzeugt wurde.

Do
   Z = Noise(0)
While Z < 0

Verwenden von "For...End"

Mit For...End-Anweisungen können Sie einen Block von Anweisungen so oft wie angegeben wiederholen. Verwenden Sie für Schleifen eine Zählervariable, deren Wert bei jedem Schleifendurchlauf erhöht wird.

a = "" # 3
For i = 0 To 2 Do
   a = TextInput("Geben Sie einen Text ein")
End

Verwenden von "For Each Row...End"

Wenn, wie in obigem Beispiel, über alle Elemente eines Datensatzes iteriert werden soll, kann dies mit der For Each Row...End-Schleife eleganter implementiert werden:

a = "" # Input("Anzahl")
For Each Row i In a Do
   a = TextInput("Geben Sie einen Text ein")
End

Share article or send as email:

You might be interested in these articles