Le langage de 4D est constitué de différents éléments, vous permettant d’effectuer de multiples opérations et de gérer vos données.
Types de données : Catégories de données stockées dans une base. Ce point est traité dans le paragraphe suivant. Pour une description détaillée, référez-vous à la section Types de données.
Variables : Adresses de stockage temporaires de données en mémoire. Pour une description détaillée, référez-vous à la section Variables.
Opérateurs : Symboles effectuant un calcul entre deux valeurs. Ce point est traité dans les paragraphes suivants. Pour une description détaillée, référez-vous à la section Opérateurs et à ses sous-sections.
Expressions : Combinaisons d'éléments du langage ayant pour résultat le renvoi d’une valeur. Ce point est traité dans les paragraphes suivants.
Commandes : Instructions intégrées effectuant une opération. Toutes les commandes de 4D (par exemple AJOUTER ENREGISTREMENT) sont décrites dans ce manuel, groupées par thème. Lorsque c'est nécessaire, les thèmes comprennent une section d'introduction. Vous pouvez utiliser des Plug-ins 4D pour ajouter de nouvelles commandes à votre environnement de développement 4D. Par exemple, une fois que vous avez installé le plug-in 4D Write dans votre base de données, vous pouvez utiliser les commandes de 4D Write pour créer et manipuler des fichiers de traitement de texte.
Constantes prédéfinies : Valeurs constantes accessibles par un nom. Par exemple, XML DATA est une constante (valeur 6). Les constantes prédéfinies permettent d'écrire un code plus lisible. Les constantes sont décrites avec les commandes qui les utilisent, et sont intégralement répertoriées dans la section Liste des thèmes de constantes .
Méthodes : Instructions que vous écrivez à l’aide de tous les éléments du langage décrits ci-dessus. Pour une description détaillée, référez-vous à la section Méthodes et à ses sous-sections.
Cette section présente les Types de données, les Opérateurs et les Expressions. Pour une description d'un autre élément, reportez-vous aux sections précédemment citées.
De plus :
Les éléments du langage tels que les variables sont identifiés par leur nom. Pour une description détaillée des règles de définition des noms d'objets, reportez-vous à la section Identifiants.
Pour plus d'informations sur les variables tableaux, reportez-vous à la section Tableaux.
Si vous avez l'intention de compiler votre base, reportez-vous à la section Commandes du thème Compilateur ainsi qu'au manuel Mode Développement de 4D.
A compter de 4D v15, l'éditeur de méthodes de 4D utilise par défaut le mode international "Anglais-US", quelle que soit la langue de l'application 4D ou les paramètres système locaux. Cette fonctionnalité rend le code indépendant de toute variation régionale susceptible de perturber son interprétation lorsque différentes versions de l'application 4D sont utilisées (formats de date par exemple) ; en outre, dans la version française de 4D, les commandes et les constantes sont exprimées en "anglais-US".
Ce paramétrage par défaut apporte plusieurs bénéfices aux développeurs 4D :
Il facilite le partage du code entre les développeurs, quels que soient leur pays, paramètres régionaux, ou version de 4D. Une méthode 4D peut être échangée par simple copier/coller ou enregistrée dans un fichier texte, sans aucun problème de compatibilité.
Il rend également les méthodes 4D compatibles avec l'utilisation d'outils de contrôle des sources, qui requièrent souvent que les exports soient indépendants des paramètres régionaux ou des langues.
Ce paramétrage peut être désactivé via l'option "Utiliser langage français et paramètres régionaux système" de la boîte de dialogue des Préférences de 4D (cf. Page Méthodes).
Le mode de langage utilisé influence la façon d'écrire des méthodes. Cela concerne le code en mode développement ainsi que les formules saisies dans les applications finales. Dans le mode par défaut (Anglais-US), les règles suivantes s'appliquent :
le séparateur décimal pour les nombres réels est le point (".") dans toutes les versions (et non la virgule (",") comme c'est l'usage en français par exemple).
les constantes de type date doivent utiliser le format ISO (!YYYY-MM-DD!) dans toutes les versions.
les noms des commandes et des constantes sont en anglais (cette modification ne concerne que la version française de 4D car le langage est déjà en anglais dans toutes les autres langues de 4D).
Note : L'éditeur de méthodes inclut des mécanismes spécifiques permettant de corriger automatiquement les saisies incorrectes si nécessaire.
Le tableau suivant illustre les différences de code entre 4D v15 (ou suivantes) et les versions précédentes :
Exemples de code dans les méthodes ou formules
4D v15 et suivantes (Mode par défaut, toutes langues)
a:=12.50
b:=!2013-12-31!
Current date
4D v14 ou 4D v15 (préférence cochée, version US par exemple)
a:=12.50
b:=!12/31/2013!
Current date
4D v14 ou 4D v15 (préférence cochée, version française)
a:=12,50
b:=!31/12/2013!
Date du jour
Note : Lorsque la préférence est cochée, les formats de date et de réel sont basés sur les paramètres système.
De nombreux types de données peuvent être stockés dans une base 4D. Le langage distingue huit types de données élémentaires : chaîne, numérique, date, heure, booléen, image, pointeur et objet.
Chaîne : Une suite de caractères, telles que “Bonjour à tous”. Les champs et variables texte ainsi que les champs alpha sont des données de type Chaîne.
Numérique : Nombres, tels que 2 ou 1 000,67. Les champs et variables entier, entier long et numérique (aussi appelé réel) sont des données de type Numérique.
Date : Dates telles que 20/11/2014. Les champs et variables date sont des données de type Date.
Heures : Heures, c’est-à-dire heures, minutes et secondes, telles que 21:00:00 ou 4:35:30 de l'après-midi. Les champs et variables heure sont des données de type Heure.
Booléen : Valeurs logiques de VRAI ou FAUX. Les champs et variables booléens sont des données de type Booléen.
Image : Les champs et variables image sont des données de type Image.
Pointeur : Type spécial de données, utilisé en programmation avancée. Les variables pointeur sont des données de type Pointeur. Il n’y a pas de type de champ correspondant.
Objet : Type de données composite pouvant contenir des ensemble de données de tout type sous forme de paires clés/valeurs. Les champs et variables objet sont des données de type Objet.
Vous constatez que, dans cette liste de types de données, les types chaîne et numérique sont associés à plus d’un type de champ. Lorsque des données sont placées dans un champ, le langage les convertit automatiquement dans le type du champ. Par exemple, si un champ de type entier est utilisé, les valeurs qu’il contient sont automatiquement traitées en tant que numériques. En d’autres termes, vous n’avez pas à vous préoccuper du mélange de champs de types semblables lorsque vous programmez avec 4D ; le langage le gère pour vous.
Cependant, il est important, lorsque vous utilisez le langage, de ne pas mélanger les types de données différents. Tout comme il est absurde de stocker la valeur “ABC” dans un champ de type Date, il est absurde de donner la valeur “ABC” à une variable utilisée pour des dates. Dans la plupart des cas, 4D est très tolérant et tentera d’utiliser de manière logique ce que vous faites. Par exemple, si vous additionnez un nombre x et une date, 4D déduira que vous voulez ajouter x jours à la date, mais si vous tentez d’ajouter une chaîne à une date, 4D vous préviendra que cette opération est impossible.
Certains cas nécessitent que vous stockiez des données dans un type et que vous les utilisiez dans un autre. Le langage contient un ensemble complet de commandes vous permettant de convertir des types de données vers d’autres types. Par exemple, si vous voulez créer un numéro de matricule commençant par des chiffres et se terminant par des lettres, vous pouvez écrire :
[Produits]Matricule:=Chaine(Numéro)+"abc"
où, si Numéro vaut 17, [Produits]Matricule prendra la valeur “17abc”.
Les types de données sont détaillés dans la section Types de données.
Lorsque vous programmez avec 4D, il est rare que vous ayez simplement besoin de données “brutes”. Le plus souvent, il sera nécessaire de traiter ces données d'une manière ou d'une autre. Vous effectuez ces calculs avec des opérateurs. Les opérateurs, en général, prennent deux valeurs et effectuent avec elles une opération dont le résultat est une troisième valeur. Vous connaissez déjà la plupart des opérateurs. Par exemple, 1 + 2 utilise l’opérateur d’addition (ou signe plus) pour faire la somme de deux nombres, et le résultat est 3. Le tableau ci-dessous présente quelques opérateurs courants :
Opérateur
Opération
Exemple
+
Addition
1 + 2 ce qui fait 3
–
Soustraction
3 – 2 ce qui fait 1
*
Multiplication
2 * 3 ce qui fait 6
/
Division
6 / 2 ce qui fait 3
Les opérateurs numériques ne représentent qu’un seul des différents types d’opérateurs disponibles. Comme 4D traite de multiples types de données, tels que des nombres, des dates ou des images, vous disposez d’opérateurs particuliers effectuant des opérations sur ces données.
Souvent, les mêmes symboles sont utilisés pour des opérations différentes, en fonction du type de données traitées. Par exemple, le signe (+) peut effectuer diverses opérations, comme le montre le tableau suivant :
Type de données
Opération
Exemple
Numérique
Addition
1 + 2 ajoute les nombres, le résultat est 3
Chaîne
Concaténation
“Bonjour ” + “à tous” concatène (met bout à bout)
les chaînes, le résultat est “Bonjour à tous”
Date et Numérique
Addition de date
!1997-01-01! + 20 ajoute 20 jours à la date
1 janvier 1997, le résultat est la date 21 janvier 1997
Les opérateurs sont détaillés dans la section Opérateurs et ses sous-sections.
Pour parler simplement, les expressions retournent une valeur. En fait, lorsque vous programmez avec 4D, vous utilisez tout le temps des expressions et vous avez tendance à les manipuler uniquement à travers la valeur qu’elles représentent. Les expressions sont aussi appelées formules.
Les expressions peuvent être constituées de presque tous les éléments du langage : commandes, opérateurs, variables et champs. Vous utilisez des expressions pour écrire des lignes de code, qui sont à leur tour utilisées pour construire des méthodes. Des expressions sont employées à chaque fois que le langage de 4D a besoin de connaître la valeur d’une donnée.
Les expressions sont rarement “indépendantes”. Il n’y a que peu d’endroits dans 4D où une expression peut être utilisée en tant que telle : dans la boîte de dialogue de Recherche par formule, dans la fenêtre du Débogueur où la valeur des expressions peut être évaluée, dans la boîte de dialogue Appliquer une formule, et dans l’éditeur d’états semi-automatiques en tant que formule dans une colonne.
Une expression peut être simplement une constante, telle que le chiffre 4 ou la chaîne “Bonjour”. Comme son nom l’indique, la valeur d’une constante ne change jamais. C’est lorsqu’elles contiennent des opérateurs que les expressions commencent à devenir intéressantes. Dans les paragraphes précédents, vous avez déjà pu voir des expressions utilisant des opérateurs. Par exemple, 4 + 2 est une expression qui utilise l’opérateur d’addition pour additionner deux nombres, et dont le résultat est 6.
Vous vous référez à une expression par le biais du type de données qu’elle retourne. Il existe huit types d’expressions :
Expression chaîne,
Expression numérique (aussi appelée nombre),
Expression date,
Expression heure,
Expression booléenne,
Expression image,
Expression pointeur,
Expression objet.
Le tableau suivant fournit un exemple pour chaque type d’expression.
Expression
Type
Description
“Bonjour”
Chaîne
Le mot Bonjour est une constante chaîne, signalée par les guillemets
“Bonjour ” + “à tous”
Chaîne
Deux chaînes, “Bonjour ” et “à tous”, sont mises bout à bout (concaténées) à l'aide de l'opérateur de concaténation de chaînes (+). La chaîne “Bonjour à tous” est retournée.
“M. ” + [Amis]Nom
Chaîne
Deux chaînes sont concaténées : la chaîne “M. ” et la valeur courante du champ Nom de la table Amis. Si le champ contient “Dupont”, l'expression retourne “M. Dupont”.
C'est une expression de type Date qui utilise la fonction Date du jour pour récupérer la date courante. Elle ajoute 30 jours à la date d'aujourd'hui et retourne la nouvelle date.
?8:05:30?
Heure
C'est une constante heure qui représente 8 heures, 5 minutes, et 30 secondes.
?2:03:04? + ?1:02:03?
Heure
Cette expression ajoute une heure à une autre et retourne l'heure 3:05:07.
C'est une comparaison logique entre deux nombres. Le symbole (#) signifie “est différent de”. Comme 10 “est différent de” 20, l'expression retourne VRAI.
“ABC” = “XYZ”
Booléen
C'est une comparaison logique entre deux chaînes. Elles sont différentes, donc l'expression retourne FAUX.
MonImage + 50
Image
Cette expression considère l'image placée dans MonImage, la déplace de 50 pixels vers la droite, et retourne l'image résultante.
->[Amis]Nom
Pointeur
Cette expression retourne un pointeur vers lechamp [Amis]Nom.
Table (1)
Pointeur
C'est une commande qui retourne un pointeur vers la première table.