4D v16.3

Commandes du thème Compilateur

Accueil

 
4D v16.3
Commandes du thème Compilateur

Commandes du thème Compilateur  


 

 

Le compilateur intégré de 4D vous permet de traduire vos applications de base de données en instructions de niveau assembleur. Les avantages procurés par le compilateur sont les suivants :

  • Vitesse : votre base de données s'exécute de 3 à 1000 fois plus vite.
  • Vérification du code : la cohérence interne du code de votre application de base de données est entièrement contrôlée. Les conflits de logique et de syntaxe sont détectés.
  • Protection : une fois votre base compilée, vous pouvez en supprimer le code interprété. Alors, la base compilée dispose des mêmes fonctionnalités que la base originale, à la différence près que la structure et les méthodes ne peuvent plus être visualisées ni modifiées délibérément ou par inadvertance.
  • Application indépendantes "double-cliquables" : une base compilée peut également être transformée en application indépendante (sous Windows, des fichiers ".EXE") comportant sa propre icône.
  • Exécution en mode préemptif : seul le code compilé peut être exécuté dans un process préemptif.

Pour une description du fonctionnement du compilateur de 4D, reportez-vous au manuel Mode Développement.

Les commandes de ce thème sont liées à l'utilisation du compilateur. Elles vous permettent de normaliser les types de données exploitées dans votre base. La commande APPELER 4D est utilisée spécifiquement dans les bases compilées.

C_BLOBC_REELC_TEXTE
C_BOOLEENC_ENTIER LONGC_DATE
C_POINTEURC_IMAGEC_HEURE
C_OBJETAPPELER 4D

Note de compatibilité : Les commandes obsolètes _o_C_GRAPHE, _o_C_ENTIER et _o_C_ALPHA ne doivent plus être utilisées.

A l'exception d'APPELER 4D, ces commandes déclarent des variables et leur assignent un type. La déclaration des variables permet de lever toute ambiguïté en ce qui concerne leur type. Lorsqu'une variable n'est pas déclarée par l'une de ces commandes, le compilateur déduit son type. Mais il lui est souvent difficile de déduire le type d'une variable utilisée dans les formulaires. Par conséquent, il est particulièrement important d'utiliser ces commandes pour déclarer les variables placées dans les formulaires.

Note : Pour gagner du temps, vous pouvez utiliser l'option de génération et de mise à jour des méthodes de typage (appelées “Méthodes compilateur”), proposée dans la fenêtre du compilateur. Cette option crée automatiquement des méthodes de typage recensant et donnant un type à l'ensemble des variables utilisées dans la base.

Les tableaux sont des variables devant respecter les mêmes règles que les variables standard en vue de la compilation. Les commandes de déclaration des tableaux sont groupées dans le thème Tableaux.

  • Vous ne devez pas donner le même nom à des méthodes ou des variables différentes. Vous ne devez pas avoir une méthode qui aurait le même nom qu’une variable.
  • Vous ne pouvez pas modifier le type d'une variable ou d'un tableau.
  • Vous ne pouvez pas convertir un tableau simple en tableau à deux dimensions, et vice-versa.
  • Vous ne pouvez pas modifier la longueur d'une variable chaîne ni celle des éléments d'un tableau alphanumérique.
  • Bien que le compilateur déduise le type des variables si nécessaire, il est conseillé de déclarer le type des variables à l'aide des directives de compilation lorsque le type de données est ambigu, en particulier dans un formulaire.
  • Une autre raison de déclarer explicitement le type des variables est l'optimisation de votre code. Cela est particulièrement vrai pour les variables utilisées comme compteurs. Dans ce cas, l'utilisation de variables de type Entier long assure un maximum de performances.
  • Pour effacer une variable (c'est-à-dire l'initialiser à une valeur nulle), utilisez la commande EFFACER VARIABLE avec le nom de la variable. N'utilisez pas de chaîne alphanumérique pour désigner le nom de la variable avec la commande EFFACER VARIABLE.
  • La fonction Indefinie retournera toujours Faux. Les variables sont toujours définies.
  • Les opérations numériques effectuées sur des variables de type Entier long ou Entier sont généralement beaucoup plus rapides que celles effectuées sur des valeurs Numérique (réel).
  • Les indirections de variables, utilisées dans la version 3 de 4D, ne sont pas permises. Vous ne pouvez pas utiliser l'indirection alphanumérique, à l'aide du symbole 'paragraphe' (§), pour référencer des variables indirectement. Vous ne pouvez pas non plus utiliser les indirections numériques, à l'aide des accolades ({...}). Les accolades ne peuvent être utilisées que pour accéder à un élément de tableau ayant été déclaré. En revanche, vous pouvez utiliser le passage de paramètres.
  • Si vous avez coché la propriété "Peut être exécutée dans un process préemptif" pour la méthode, le code ne doit pas appeler de commandes thread-unsafe ou d'autres méthodes thread-unsafe.

Ces principes sont détaillés dans les sections suivantes :

Voici quelques déclarations de variables standard pour le compilateur :

 C_BLOB(vxMonBlob// La variable process vxMonBlob est déclarée avec le type BLOB
 C_BOOLEEN(<>SousWindows// La variable interprocess <>SousWindows est déclarée avec le type booléen
 C_DATE($vdCurDate// La variable locale $vdCurDate est déclarée avec le type Date
 C_ENTIER LONG(vg1;vg2;vg3// Les 3 variables process vg1, vg2 et vg3 sont déclarées avec le type entier long

Dans cet exemple, la méthode projet uneMéthodeParmiD'Autres déclare 3 paramètres:

  // Méthode projet uneMéthodeParmiD'Autres
  // uneMéthodeParmiD'Autres ( Numérique ; Date { ; Entier long } )
  // uneMéthodeParmiD'Autres ( Montant ; Date { ; Ratio } )
 
 C_REEL($1// le 1er paramètre est du type Réel (Numérique)
 C_DATE($2// le 2e paramètre est du type Date
 C_ENTIER LONG($3// le 3e paramètre est du type Entier long
 
  // ...

Dans l'exemple suivant, la méthode projet ajoutCapitale accepte un paramètre de type texte et retourne un texte :

  // Méthode projet ajoutCapitale
  // ajoutCapitale ( Texte ) -> Texte
  // ajoutCapitale ( Chaîne source ) -> Chaîne avec la première lettre capitale
 
 C_TEXTE($0;$1)
 $0:=Majusc(Sous chaine($1;1;1))+Minusc(Sous chaine($1;2))

Dans l'exemple suivant, la méthode projet envoyerPaquets accepte un paramètre de type Heure suivi d'un nombre variable de paramètres de type Texte :

  ` Méthode projet envoyerPaquets
  ` envoyerPaquets ( Heure ; Texte { ; Texte2... ; TextN } )
  ` envoyerPaquets ( docRef ; Données { ; Données2... ; DonnéesN } )
 
 C_HEURE($1)
 C_TEXTE(${2})
 C_ENTIER LONG($vlPaquet)
 
 Boucle($vlPaquet;2;Nombre de paramètres)
    ENVOYER PAQUET($1;${$vlPaquet})
 Fin de boucle

Dans l'exemple suivant, la méthode projet compiler_Param_Prédéclare28 pré-déclare la syntaxe d'autres méthodes projet, à l'intention du compilateur :

  ` Méthode projet compiler_Param_Prédéclare28
 
 C_REEL(uneMéthodeParmiDautres;$1` uneMéthodeParmiDautres ( Réel ; Entier { ; Entier long } )
 C_DATE(uneMéthodeParmiDautres;$2` ...
 C_ENTIER LONG(uneMéthodeParmiDautres;$3` ...
 C_TEXTE(ajoutCapitale;$0;$1` ajoutCapitale ( Texte ) -> Texte
 C_HEURE(envoyerPaquets;$1` envoyerPaquets ( Heure ; Texte { ; Texte2... ; TexteN } )
 C_TEXTE(envoyerPaquets;${2}) ` ...



Voir aussi  

_o_C_ALPHA
_o_C_ENTIER
_o_C_GRAPHE
APPELER 4D
C_BLOB
C_BOOLEEN
C_DATE
C_ENTIER LONG
C_HEURE
C_IMAGE
C_POINTEUR
C_REEL
C_TEXTE

 
PROPRIÉTÉS 

Produit : 4D
Thème : Compilateur
Nom intl. : Compiler Commands

 
HISTORIQUE 

Modifié : 4D v15 R5

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v16)
4D - Langage ( 4D v16.1)
4D - Langage ( 4D v16.2)
4D - Langage ( 4D v16.3)