Commandes du thème Compilateur

4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 2003 (Modifiée)


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.

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_ENTIERC_REELAPPELER 4D
C_BOOLEENC_ENTIER LONGC_ALPHA
C_DATEC_IMAGEC_TEXTE
C_GRAPHEC_POINTEURC_HEURE

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".

Principes généraux d'écriture de code destiné à être compilé

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.

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

Utilisation des directives de compilation, expliquant quand et où écrire des directives de compilation

Guide du typage, décrivant les différents types de conflits pouvant se produire lors de la compilation des bases 4D,

Précisions de syntaxe, fournissant des informations supplémentaires concernant plusieurs commandes 4D,

Conseils d'optimisation, proposant des conseils permettant d'accélérer l'exécution des applications en mode compilé.

Exemples

(1) 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_GRAPHE(vg1;vg2;vg3)  ` Les 3 variables process vg1, vg2 et vg3 sont déclarées avec le type Graphe

(2) 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 ; Entier { ; Entier long } )
      ` uneMéthodeParmiD'Autres ( Montant ; Pourcentage { ; Ratio } )

   C_REEL($1)   ` le 1er paramètre est du type Réel (Numérique)
   C_ENTIER($2)   ` le 2e paramètre est du type Entier
   C_ENTIER LONG($3)   ` le 3e paramètre est du type Entier long

      ` ...

(3) Dans l'exemple suivant, la méthode projet ajoutCapitale accepte un paramètre de type Chaîne et retourne une chaîne :

      ` Méthode projet ajoutCapitale
      ` ajoutCapitale ( Alpha ) -> Alpha
      ` ajoutCapitale ( Chaîne source ) -> Chaîne avec la première lettre capitale

   C_ALPHA(255;$0;$1)
   $0:=Majusc(Sous chaine($1;1;1))+Minusc(Sous chaine($1;2))

(4) 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 parametres)
      ENVOYER PAQUET ($1;${$vlPaquet})
   Fin de boucle

(5) 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_ENTIER(uneMéthodeParmiDautres;$2)   ` ...
   C_ENTIER LONG(uneMéthodeParmiDautres;$3)   ` ...
   C_ALPHA(ajoutCapitale;255;$0;$1)   ` ajoutCapitale ( Alpha ) -> Alpha
   C_HEURE(envoyerPaquets;$1)   ` envoyerPaquets ( Heure ; Texte { ; Texte2... ; TexteN } )
   C_TEXTE(envoyerPaquets;${2})   ` ...

Référence

APPELER 4D, C_ALPHA, C_BLOB, C_BOOLEEN, C_DATE, C_ENTIER, C_ENTIER LONG, C_GRAPHE, C_HEURE, C_IMAGE, C_POINTEUR, C_REEL, C_TEXTE.


4D - Documentation   Français   English   German   Español   Japanese   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant