Déclarations
Vous pouvez structurer le code FPScript de votre formule en une ou plusieurs déclarations. Normalement, vous écrivez chaque déclaration sur sa propre ligne. Vous pouvez cependant aussi écrire plusieurs déclarations sur la même ligne. Ils doivent être séparés par un point-virgule ';'. Vous pouvez également répartir une déclaration sur plusieurs lignes. Pour les lignes qui doivent être fusionnées avec les lignes suivantes, vous devez saisir une barre oblique inversée '\' ou un caractère de soulignement '_' comme dernier caractère.
Affectation
Vous pouvez utiliser une affectation pour attribuer un contenu différent à une variable. Dans une variable contenant, par exemple, une série de données, vous pouvez écraser spécifiquement des valeurs ou des sections individuelles en utilisant l'assignation indexée. Avec l'instruction Set ou le mot-clé As Object, vous pouvez affecter une référence d'objet à une variable. Vous pouvez ensuite utiliser cette variable pour accéder aux propriétés de l'objet référencé.
Prendre des décisions avec Si...Alors...Autrement
L'instruction If...Then...Else est utilisée pour vérifier si une condition a la valeur TRUE ou FALSE, afin d'exécuter une ou plusieurs instructions de manière conditionnelle. Normalement, la condition est une expression avec un opérateur de comparaison pour comparer deux variables ou valeurs. Vous trouverez des informations sur les opérateurs de comparaison dans la rubrique "Opérateurs de comparaison". Les instructionsIf...Then...Else peuvent être imbriquées à n'importe quelle profondeur.
Exécution d'un bloc lorsqu'une condition donne le résultat VRAI
Dans ce cas, le mot clé Else est omis :
Si la valeur > 2 alors
Valeur = 5
Fin
Exécution d'un bloc lorsqu'une condition est VRAIE et d'un autre lorsque la condition est FAUSSE
Les instructions à exécuter si la condition donne FALSE sont insérées entre les mots-clés Else et End.
Si la valeur > 2 alors
Valeur = 5
Else
Valeur = 0
Fin
Utilisation de boucles pour répéter du code
FPScript offre une multitude d'opérations permettant de rechercher des événements et de traiter des ensembles de données dans leur intégralité. Dans de rares cas, cependant, vous devrez utiliser des boucles pour parcourir les valeurs d'une série de données, par exemple. Avec une boucle, vous définissez généralement une variable de boucle qui énumère les répétitions. Cette variable peut ensuite être utilisée dans une opération d'indexation, par exemple, pour accéder à la valeur correspondante dans un ensemble de données :
// Déclarer une variable
Dim Résultat
// Copier les séries de données à calculer
Résultat = DataSeries
// Exécuter sur toutes les valeurs de la série de données
Pour chaque rangée i dans la série de données faire
// Mettre à zéro les valeurs inférieures à zéro dans le résultat
Si DataSeries < 0 Alors
Résultat = 0
Fin
Fin
Return Result // Passe la série de données du résultat
L'exemple ci-dessus utilise une boucle pour trouver une valeur négative dans une série de données et la mettre à zéro. Toutes les instructions entre Do et End sont exécutées plusieurs fois, la variable i comptant de 0 au nombre de valeurs de la série de données moins 1. L'exemple montre également une instruction conditionnelle. L'instruction Result = 0. n'est exécutée que si la ième valeur de DataSeries est inférieure à zéro. Cet exemple montre également comment les indentations peuvent rendre les programmes FPScript plus faciles à lire. Toutes les déclarations dans la boucle ont été indentées d'une position de tabulation. Il en va de même pour la déclaration conditionnelle.
Note : Vous ne devez utiliser les boucles que s'il n'existe aucune fonction appropriée et si le problème ne peut être décrit par une expression arithmétique. Les fonctions intégrées de FlexPro sont plusieurs fois plus rapides que n'importe quelle boucle programmée à l'aide de FPScript. L'exemple ci-dessus peut, par exemple, être réécrit comme suit :
Dim Result, Idx // Déclarer une variable
Result = DataSeries // Copie de la série de données à calculer
// Déterminer la position de toutes les valeurs < 0
Idx = ValuesAboveLevel(DataSeries, 0, EVENT_INDEX + EVENT_COMPLEMENT)
// Mettre à zéro les valeurs à ces positions dans le résultat
Résultat[Idx] = 0
Return Result // Passe la série de données du résultat
Vous pouvez utiliser l'instruction Break pour interrompre prématurément une boucle :
Dim Result = 0
Pour chaque valeur v dans DataSeries Do
Si v == ? Puis
Pause
Fin
Résultat = Résultat + v
Fin
Résultat du retour
FPScript vous propose les boucles suivantes :
Tandis que... Fin: Exécute une boucle tant que la condition donne la valeur TRUE.
Faire... Pendant: Exécute une boucle jusqu'à ce qu'une condition donne la valeur FALSE.
Pour... Fin: Utilise un compteur pour répéter les déclarations aussi souvent que spécifié par le compteur.
Pour chaque valeur...Fin: Traverse toutes les valeurs d'un ensemble de données. Aucun compteur n'est utilisé.
Pour chaque élément...Fin: Utilise un compteur pour itérer toutes les valeurs d'une série de données ou d'une matrice de données.
Pour chaque rangée...Fin: Utilise un compteur pour compter tous les éléments d'une liste.
Pour chaque colonne...Fin: Utilise un compteur pour itérer toutes les colonnes d'une matrice de données.
Répétition de déclarations pendant qu'une condition est VRAIE
La boucle While...End teste d'abord la condition, puis exécute l'instruction tant que la condition donne le résultat VRAI. L'exemple suivant recherche la position dans le DataSet, où se trouve la première valeur positive.
i = 0
Alors que DataSet < 0 Do
i = i + 1
Fin
Répétition de déclarations jusqu'à ce qu'une condition soit FAUSSE
La boucle Do...While exécute d'abord l'instruction une fois, puis teste la condition. L'exemple suivant calcule des nombres aléatoires jusqu'à ce qu'un nombre supérieur ou égal à zéro soit généré.
Dim Z
Faites
Z = Bruit(0)
Si Z < 0
Utilisation de "For...End"
Vous pouvez utiliser les instructions For...End pour répéter un bloc d'instructions aussi souvent que spécifié. Dans les boucles, utilisez une variable compteur dont la valeur est augmentée à chaque exécution de la boucle.
Dim a = "" # 3
Pouri = 0 To2 Do
a = TextInput("Entrez le texte ici")
Fin
Utilisation de "For Each Row...End" (pour chaque ligne)
Si, comme dans l'exemple ci-dessus, vous souhaitez itérer sur tous les éléments d'un ensemble de données, vous pouvez le faire de manière plus élégante avec la boucle For Each Row...End:
Dim a = "" # Input("Count")
Pour chaque rangée i dans a Faire
a = TextInput("Veuillez entrer du texte")
Fin