Nommer les objets du langage 4D

4D - Documentation   Français   English   German   4e Dimension, Commandes par thèmes   4e Dimension, Liste alphabétique des commandes   4e Dimension, Constantes par thèmes   Retour   Précédent   Suivant

version 6.0


Cette section décrit les conventions d'écriture employées pour les nombreux objets du langage de 4e Dimension. Le nom de chaque objet doit respecter les règles suivantes :

Un nom doit commencer par un caractère alphabétique (une lettre).

Le nom peut ensuite contenir des caractères alphabétiques, des caractères numériques, des espaces et des tirets bas (_).

Les virgules, barres de fraction et deux points (:) sont interdits.

Les caractères réservés car utilisés comme opérateurs, comme l'astérisque (*) ou le +, sont interdits.

4e Dimension ignore les espaces superflus.

Tables


Vous indiquez qu'un objet est une table en plaçant son nom entre crochets : [...]. Un nom de table peut contenir jusqu'à 31 caractères.

Exemples

   TABLE PAR DEFAUT ([Commandes])
   FORMULAIRE ENTREE ([Clients]; "Entrée")
   AJOUTER ENREGISTREMENT ([Lettres])

Champs


Vous indiquez qu'un objet est un champ en spécifiant d'abord la table à laquelle il appartient. Le nom du champ se place immédiatement derrière celui de la table. Un nom de champ peut contenir jusqu'à 31 caractères.

Ne faites pas commencer un nom de champ par le tiret bas (_). Ce caractère est réservé pour l'utilisation des plug-ins. Lorsque 4e Dimension rencontre dans l'éditeur de méthodes un nom de champ débutant par le tiret bas, le caractère est supprimé.

Exemples

   [Commandes]Total:=Somme([Ligne]Montant)
   CHERCHER([Clients];[Clients]Nom="Dupont")
   [Lettres]Texte:=Capitaliser texte ([Lettres]Texte)

Il n'est pas obligatoire, dans les méthodes, de faire figurer systématiquement le nom de la table à laquelle le champ appartient avant le nom du champ. Nous vous conseillons cependant de prendre l'habitude de le faire car c'est une technique de programmation efficace.

Sous-tables


Vous indiquez qu'un objet est une sous-table en spécifiant d'abord le nom de la table parente à laquelle elle appartient. Le nom de la sous-table se place immédiatement derrière celui de la table. Un nom de sous-table peut contenir jusqu'à 31 caractères.

Exemples

   TOUS LES SOUS ENREGISTREMENTS ([Personnes]Enfants)
   AJOUTER SOUS ENREGISTREMENT ([Clients]Tél;"Ajout")
   SOUS ENREGISTREMENT SUIVANT ([Letters]Keywords)

Une sous-table est considérée comme un type de champ ; par conséquent, les mêmes règles que pour les champs lui sont appliquées lorsqu'elle est placée dans un formulaire.

Il n'est pas obligatoire, dans les méthodes, de faire figurer systématiquement le nom de la table parente devant celui de la sous-table. Nous vous conseillons cependant de prendre l'habitude de le faire car c'est une bonne technique de programmation.

Sous-champs


Vous indiquez qu'un objet est un sous-champ de la même manière que pour un champ. Vous spécifiez d'abord le nom de la sous-table à laquelle il appartient, puis placez le nom du sous-champ immédiatement derrière. Les deux noms sont séparés par une apostrophe ('). Un nom de sous-champ peut contenir jusqu'à 31 caractères.

Exemples

   [Personnes]Enfants'Prénom:=Majusc([Personnes]Enfants'Prénom)
   [Clients]Tél'Numéro:="408 555 1212"
   [Lettres]Mots-clés'Mot:=Capitaliser texte ([Lettres]Mots-clés'Mot)

Il n'est pas obligatoire, dans les méthodes objet ou formulaire de la sous-table, de faire figurer systématiquement les noms de la table parente et de la sous-table devant celui du sous-champ. Nous vous conseillons cependant de prendre l'habitude de le faire, car c'est une bonne technique de programmation.

Variables interprocess


Vous indiquez qu'un objet est une variable interprocess en faisant précéder son nom des symboles (<>), formés des caractères "inférieur à" suivi de "supérieur à".

Note : Cette syntaxe peut être utilisée sous Windows et Mac OS. De plus, sous Mac OS, vous pouvez également utiliser le caractère "diamant" (Option + v sur un clavier français).

Le nom d'une variable interprocess peut contenir jusqu'à 31 caractères, symbole <> non compris.

Exemples

   <>vlProcessID:=Numero du process courant
   <>vsKey:=Caractere(KeyCode)
   Si (<>vtNom#"")

Variables process


Vous indiquez qu'un objet est une variable process en écrivant simplement son nom (qui ne doit pas commencer par les symboles $ ou <>). Ce nom peut contenir jusqu'à 31 caractères.

Exemples

   vrGrandTotal:=Somme([Comptes]Montant)
   Si (bValider=1)
   vsNomCourant:=""

Variables locales


Vous indiquez qu'un objet est une variable locale en faisant précéder son nom du symbole dollar ($). Le nom d'une variable locale peut contenir jusqu'à 31 caractères, signe dollar non compris.

Exemples

   Boucle ($vlEnregistrement; 1; 100)
   Si ($vsTempVar="No")
   $vsMaChaîne:="Bonjour à tous"

Tableaux


Vous indiquez qu'un objet est un tableau en écrivant simplement son nom, qui est celui que vous passez à une commande de déclaration de tableau (par exemple TABLEAU ENTIER LONG) lorsque vous créez le tableau. Les tableaux sont des variables, et comme pour les variables, il existe trois types de tableaux qui se différencient par leur portée :

 Tableaux interprocess,

 Tableaux process,

Tableaux locaux.

Tableaux interprocess

Le nom d'un tableau interprocess est précédé du symbole (<>), formé des caractères "inférieur à" suivi de "supérieur à".

Note : Cette syntaxe peut être utilisée sous Windows et Mac OS. De plus, sous Mac OS, vous pouvez également utiliser le caractère "diamant" (Option + v sur un clavier français).

Le nom d'un tableau interprocess peut contenir jusqu'à 31 caractères, symbole <> non compris.

Exemples

   TABLEAU TEXTE(<>atSujets;Enregistrements dans table([Topics]))
   TRIER TABLEAU (<>asMotsClés; >)
   TABLEAU ENTIER(<>aiGrosTableau;10000)

Tableaux process

Vous indiquez qu'un objet est un tableau process en écrivant simplement son nom (qui ne doit pas commencer par les symboles $ ou <>). Ce nom peut contenir jusqu'à 31 caractères.

Exemples

   TABLEAU TEXTE(atSujets;Enregistrements dans table([Topics]))
   TRIER TABLEAU (asMotsClés; >)
   TABLEAU ENTIER(aiGrosTableau;10000)

Tableaux locaux

Un tableau est déclaré local lorsque son nom est précédé du signe dollar ($). Le nom d'un tableau local peut contenir jusqu'à 31 caractères, signe dollar non compris.

Exemples

   TABLEAU TEXTE($atSujets;Enregistrements dans table([Topics]))
   TRIER TABLEAU ($asMotsClés; >)
   TABLEAU ENTIER($aiGrosTableau;10000)

Eléments de tableaux

Vous désignez un élément d'un tableau local, process ou interprocess à l'aide d'accolades ({…}). L'élément référencé (l'indice) est indiqué par une expression numérique.

Exemples

      ` Adresser un élément d'un tableau interprocess   
   Si (<>asMotsClés{1}="Stop")
   <>atSujets{$vlElem}:=[Topics]Sujet
   $viValeurSuivante:=<>aiGrosTableau{Taille tableau(<>aiGrosTableau)}

      ` Adresser un élément d'un tableau process   
   Si (asMotsClés{1}="Stop")
   atSujets{$vlElem}:=[Topics]Sujet
   $viValeurSuivante:=aiGrosTableau{Taille tableau(aiGrosTableau)}

      ` Adresser un élément d'un tableau local   
   Si ($asMotsClés{1}="Stop")
   $atSujets{$vlElem}:=[Topics]Sujet
   $viValeurSuivante:=$aiGrosTableau{Taille tableau($aiGrosTableau)}

Eléments de tableaux à deux dimensions

Vous désignez un élément d'un tableau à deux dimensions à l'aide d'une double paire d'accolades ({…}). L'élément référencé (l'indice) est indiqué par deux expressions numériques dans deux paires d'accolades.

Exemples

      ` Adresser un élément d'un tableau interprocess à deux dimensions   
   Si (<>asMotsClés{$vlLigneSuivante}{1}="Stop")
   <>atSujets{10}{$vlElem}:=[Topics]Sujet
   $viValeurSuivante:=<>aiGrosTableau{$vlSet}{Taille tableau(<>aiGrosTableau{$vlSet})}

      ` Adresser un élément d'un tableau process à deux dimensions   
   Si (asMotsClés{$vlLigneSuivante}{1}="Stop")
   atSujets{10}{$vlElem}:=[Topics]Sujet
   $viValeurSuivante:=aiGrosTableau{$vlSet}{Taille tableau(aiGrosTableau{$vlSet})}

      ` Adresser un élément d'un tableau interprocess à deux dimensions   
   Si ($asMotsClés{$vlLigneSuivante}{1}="Stop")
   $atSujets{10}{$vlElem}:=[Topics]Sujet
   $viValeurSuivante:=$aiGrosTableau{$vlSet}{Taille tableau($aiGrosTableau{$vlSet})}

Formulaires


Vous indiquez qu'un objet est un formulaire en utilisant une expression de type chaîne alphanumérique qui représente son nom. Le nom d'un formulaire peut contenir jusqu'à 31 caractères.

Exemples

   FORMULAIRE ENTREE([Personnes];"Entrée")
   FORMULAIRE SORTIE([Personnes]; "Sortie")
   DIALOGUE([Stock];"Boîte de note"+Chaine($vlStage))

Méthodes


Vous indiquez qu'un objet est une méthode (sous-routine ou fonction utilisateur) en saisissant son nom. Ce nom peut contenir jusqu'à 31 caractères.

Note : Une méthode qui ne retourne pas de résultat est appelée une procédure. Une méthode qui retourne un résultat est appelée une fonction utilisateur.

Exemples

   Si (Nouveau client)
   EFFACER VALEURS DUPLIQUEES
   APPLIQUER A SELECTION ([Employés];AUGMENTER SALARIES)

Conseil : Nous vous recommandons d'adopter, pour nommer vos méthodes, la même convention que celle utilisée dans le langage de 4D : écrivez les noms de vos procédures en caractères majuscules, et vos fonctions en minuscules avec la première lettre en majuscule. Ainsi, lorsque vous réouvrirez une base au bout de plusieurs mois, vous identifierez immédiatement si une méthode retourne ou non un résultat, en regardant son nom dans la fenêtre de l'Explorateur.

Note : Lorsque vous souhaitez appeler une méthode, vous saisissez simplement son nom. Toutefois, certaines commandes intégrées telles que APPELER SUR ERREUR, ainsi que les commandes des plug-ins, nécessitent que vous passiez le nom d'une méthode en tant que chaîne lorsqu'un paramètre de type méthode est requis (cf. exemples ci-dessous).

Exemples

      ` Cette commande attend une méthode (fonction) ou une formule
   CHERCHER PAR FORMULE ([aTable];Recherche Spéciale)
      ` Cette commande attend une méthode (procédure) ou une formule
   APPLIQUER A SELECTION ([Employés];AUGMENTER SALARIES)
      ` Mais cette commande attend un nom de méthode
   APPELER SUR EVENEMENT ("GERER EVENEMENTS")
      ` Et cette commande de plug-in attend un nom de méthode
   wr_Erreur ("WR GERER ERREURS")

Les méthodes peuvent accepter des paramètres (ou arguments). Le paramètres sont passés à la méthode entre parenthèses, à la suite du nom de la méthode. Les paramètres sont séparés par des points virgule (;). Les paramètres sont passés à la méthode appelée en tant que variables locales numérotées séquentiellement : $1, $2,…, $n. De plus, plusieurs paramètres consécutifs (s'ils sont les derniers) peuvent être adressés à l'aide de la syntaxe ${n}où n, expression numérique, est le numéro du paramètre.

A l'intérieur d'une fonction, la variable locale $0 contient la valeur à retourner.

Exemples

      ` Dans ELIMINER ESPACES, $1 est pointeur sur le champ [Personnes]Nom
   ELIMINER ESPACES (->[Personnes]Nom)

      ` Dans Créateur tableau :
      ` - $1 est un numérique qui vaut 1
      ` - $2 est un numérique qui vaut 5
      ` - $3 est un texte ou un alpha qui vaut "Super"
      ` - La valeur résultante est assignée à $0
   $vsRésultat:=Créateur tableau (1; 5; "Super")

      ` Dans Poubelle :
      ` - Les trois paramètres sont de type Texte ou Alpha
      ` - Vous pouvez y accéder par $1, $2 ou $3
      ` - Vous pouvez y accéder en écrivant, par exemple, ${$vlParam} où $vlParam vaut 1, 2 ou 3
      ` - La valeur résultante est assignée à $0
   vtClone:=Poubelle ("est"; "le"; "il")

Commandes de plug-ins (procédures, fonctions et zones externes)


Vous indiquez qu'un objet est une commande de plug-in en écrivant son nom tel qu'il est défini dans le plug-in. Le nom d'une commande de plug-in peut contenir jusqu'à 31 caractères.

Exemples

   WR SUPPRIMER SELECTION (wrZone)
   $pvNouvelleZone:=PV Creer zone hors ecran  

Ensembles


Dans 4e Dimension, il existe deux types d'ensembles qui se distinguent par leur portée :

Ensembles interprocess,

Ensembles process.

On peut également distinguer un troisième type d'ensemble, spécifique à 4D Server:

Ensembles clients.

Ensembles interprocess

Un ensemble est déclaré interprocess lorsque son nom, qui est une expression de type chaîne alphanumérique, est précédé du symbole (<>), formé des caractères "inférieur à" suivi de "supérieur à".

Note : Cette syntaxe peut être utilisée sous Windows et Mac OS. De plus, sous Mac OS, vous pouvez également utiliser le caractère "diamant" (Option + v sur un clavier français).

Le nom d'un ensemble interprocess peut comporter jusqu'à 80 caractères, symbole <> non compris.

Ensembles process

Vous déclarez un ensemble process en passant simplement une expression de type chaîne qui représente son nom (et qui ne doit pas débuter par les symboles <> ou $). Le nom d'un ensemble process peut comporter jusqu'à 80 caractères.

Ensembles client

Le nom d'un ensemble client doit être précédé du symbole dollar ($). Ce nom peut comporter jusqu'à 80 caractères, symbole dollar non compris.

Note : Dans les versions précédentes de 4D Server, les ensembles étaient gérés par les postes clients sur lesquels ils avaient été créés. A partir de la version 6, les ensembles sont gérés par le serveur. Dans certains cas, pour des raisons particulières ou d'optimisation, vous pourrez avoir besoin d'utiliser des ensembles localement, sur les postes clients. Pour cela, il vous suffit de créer des ensembles client.

Exemples

      ` Ensembles interprocess
   UTILISER ENSEMBLE("<>Enregistrements supprimés")
   NOMMER ENSEMBLE([Clients];"<>Commandes clients")
   Si (Enregistrements dans ensemble("<>Sélection"+Chaine($i))>0)
      ` Ensembles process
   UTILISER ENSEMBLE("Enregistrements supprimés")
   NOMMER ENSEMBLE([Clients];"Commandes clients")
   Si (Enregistrements dans ensemble("Sélection"+Chaine($i))>0)
      ` Ensembles client
   UTILISER ENSEMBLE("$Enregistrements supprimés")
   NOMMER ENSEMBLE([Clients];"$Commandes clients")
   Si (Enregistrements dans ensemble("$Sélection"+Chaine($i))>0)

Sélections temporaires


Dans 4e Dimension, il existe deux types de sélections temporaires, qui se distinguent par leur portée :

Sélections temporaires interprocess,

Sélections temporaires process.

Sélections temporaires interprocess

Vous désignez une sélection temporaire interprocess en utilisant une expression de type chaîne débutant par le symbole (<>), formé des caractères "inférieur à" suivi de "supérieur à".

Note : Cette syntaxe peut être utilisée sous Windows et Mac OS. De plus, sous Mac OS, vous pouvez également utiliser le caractère "diamant" (Option + v sur un clavier français).

Le nom d'une sélection temporaire interprocess peut contenir jusqu'à 80 caractères, symbole <> non compris.

Sélections temporaires process

Vous déclarez une sélection temporaire process en passant simplement une expression de type chaîne qui représente son nom (et qui ne doit pas débuter par les symboles <> ou $). Le nom d'une sélection temporaire process peut comporter jusqu'à 80 caractères.

Exemples

      ` Sélection temporaire interprocess
   UTILISER SELECTION([Clients];"<>ParCodePostal")
      ` Sélection temporaire process
   UTILISER SELECTION([Clients];"ParCodePostal")

Process


En mode mono-utilisateur, ou sur le poste client en mode client/serveur, il existe deux types de process :

Process globaux,

Process locaux.

Process globaux

Vous déclarez un process global en passant une expression de type chaîne de caractères qui représente son nom (qui ne doit pas commencer par le symbole $). Le nom d'un process peut comporter jusqu'à 30 caractères.

Process locaux

Vous déclarez un process local lorsque son nom est précédé du symbole dollar ($). Le nom d'un process peut comporter jusqu'à 30 caractères, symbole dollar non compris.

Exemple

      ` Lancer le process global "Ajouter Clients"
   $vlProcessID:=Nouveau process("P_AJOUT_CLIENTS";48*1024;"Ajouter Clients")
      ` Lancer le process local "$Suivre Souris"
   $vlProcessID:=Nouveau process("P_SUIVRE_SOURIS";16*1024;"$Suivre Souris")

Résumé des conventions d'écriture dans 4D


Le tableau suivant résume les conventions utilisées par 4e Dimension pour nommer les objets dans les méthodes.

ObjetLong. max.Exemple
Table31[Factures]
Champ31[Employés]Nom
Sous-table31[Amis]Enfants
Sous-champ 31[Documents]Mots-clés'Mot-clé
Variable interprocess<> + 31<>vlProcessSuivantID
Variable process31vsNomCourant
Variable locale$ + 31$vlCompteurLocal
Formulaire31"Formulaire Web perso"
Tableau interprocess<> + 31<>apTableaux
Tableau process31asGenre
Tableau local$ + 31$atValeurs
Méthode 31M_AJOUTER_CLIENTS
Commande de plug-in31WR INSERER TEXTE
Ensemble interprocess<> + 80"<>Enregistrements à archiver"
Ensemble process80"Enregistrements actuels"
Ensemble client$ + 80"$Sujets précédents"
Sélection temporaire80"Employés de A à Z"
Sélection temporaire interprocess<> + 80"<>Employés de Z à A"
Process local$ + 30"$SuivreEvénements"
Process global30"P_MODULE_FACTURES"

Résoudre les conflits de noms


Si un objet d'un certain type a le même nom qu'un autre objet d'un autre type (par exemple, si un champ est baptisé Personnes et qu'une variable est également nommée Personnes), 4e Dimension utilise un système de priorités pour identifier l'objet. Veillez à utiliser des noms uniques pour les différents éléments de votre base.

4e Dimension identifie les noms utilisés dans les méthodes en fonction de l'ordre de priorité suivant :

1. Champs

2. Commandes

3. Méthodes

4. Routines de plug-ins

5. Constantes prédéfinies

6. Variables

Par exemple, 4e Dimension dispose d'une fonction interne appelée Date. Si vous appelez Date une de vos méthodes, 4e Dimension considérera "Date" comme étant la fonction interne et non votre méthode. Vous ne pourrez pas appeler votre méthode. En revanche, si vous nommez un champ "Date", 4e Dimension considérera que vous souhaitez appeler votre champ et non la fonction intégrée.

Référence

Constantes, Méthodes, Opérateurs, Pointeurs, Présentation des tableaux, Types de données, Variables.


4D - Documentation   Français   English   German   4e Dimension, Commandes par thèmes   4e Dimension, Liste alphabétique des commandes   4e Dimension, Constantes par thèmes   Retour   Précédent   Suivant