dans ce chapitre nous allons apprendre à définir les types de variables, comprendre leur portée et donc leur cycle de vie et les bases de leur programmation.
Au cours des chapitres précédents, nous avons utilisé ponctuellement des variables (vNbRecords...). Voyons maintenant en quoi elles consistent, comment elles fonctionnent et, suivant leur définition, quelles sont les limites de leur utilisation. Si nous comparons le fonctionnement de 4D à une entreprise, nous pouvons en déduire les points suivants :
Il y a plusieurs services dans l’entreprise qui réalisent chacun une tâche particulière, souvent indépendamment des autres services.
Chaque service est prévu pour réaliser un certain nombre de tâches dans un ordre donné.
Une tâche peut être interrompue car elle dépend du résultat d’un autre traitement.
Ce nouveau traitement utilisera probablement des informations provenant du traitement précédent, mais également des informations qui lui sont propres.
Si on traduit cela avec un exemple pratique :
L’entreprise a une usine de production, un service commercial et un service relations humaines.
Le service Paye centralise les heures réalisées par les autres services et réalise les paies, calcule le nombre de jours de congés, etc.
Le traitement de la paie implique de connaître le taux des heures supplémentaires ainsi que les différents taux de cotisations. Ces informations sont fournies par le service juridique qui tient à jour la documentation.
Et maintenant faisons le parallèle avec 4D :
4D peut gérer plusieurs process simultanément (impression, visualisation du contenu de plusieurs tables, palettes d’outils, imports, serveur Web, réponse à des Web services, etc ...)
La méthode qui s’exécute dans chaque process peut comporter plusieurs phases.
Elle peut faire appel à d’autres méthodes au sein du même process (collègues du même service), ou demander des informations à un autre process (collègue dans un autre service)
Pour chacun des cas nécessaires de communication, nous disposons de variables adaptées :
Pour disposer d’informations accessibles (en lecture écriture) à tous les process, nous utiliserons des variables interprocess. Pour que 4D les considère comme telles, il faut les préfixer par les symboles <> (Ex : <>DateDuJour, <>TableauTaux- Horaires, etc.)
En cours d’exécution dans un process, une méthode peut avoir besoin d’une information pour elle seule. Dans ce cas, ce sera une variable locale, reconnue dans 4D par le symbole $ qui la préfixe (Ex : $Compteur, $ZoneTampon, etc.)
Toutes les autres variables (sans préfixe) sont des variables process, utilisables par plusieurs méthodes dans un même process. (Ex : vNbRecords, ...)
La dernière remarque concernant le besoin d’information provenant du service juridique permet d’introduire la notion de communication entre les process.
Il est en effet possible avec 4D de commander la lecture ou l’écriture de variables d’un process vers un autre (et même d’un poste client vers le serveur). (LIRE VARIABLE PROCESS et ECRIRE VARIABLE PROCESS)
Pour prendre un autre exemple de la vie courante, dans une école :
la variable locale est le cahier de l’élève (ou sa feuille de brouillon) : lui seul la voit, peut écrire dessus et la relire
la variable process est le tableau noir, utilisable et visible par tous les élèves d’une même classe, chacun pouvant lire, écrire, effacer le tableau
la variable interprocess est le panneau d’affichage à l’entrée de l’école sur lequel figureront les résultats des examens (tous les élèves de toutes les classes ainsi que tous les professeurs et le proviseur y auront accès)
La communication interprocess consiste pour un professeur à venir lire ce qui est écrit ou écrire sur le tableau de la classe (variable process) de son collègue ou sur le panneau d’affichage de l’école (variable interprocess).
La portée des variables expliquée, nous pouvons en détailler le mode de fonctionnement.
En mode Unicode, les types Alpha et Texte sont identiques
INSERER LIGNES(TabDates;1)
TabDates{1}:=!06/05/2012!
Croissance = Valorisation
NbJours:=25
OU
AJOUTER A TABLEAU (TabDates;!06/05/2012!)
Compétances au service de la nation
Boucle($i;1;NbJours)
$DateDépart:=TabDates{1}+18
Les variables sont en Lecture/Ecriture
"développement" = Utilisation
Fin de boucle
Mort = Effacement et libération de la mémoire
EFFACER VARIABLE (NbJours)
EFFACER VARIABLE(TabDates)
La variable existe toujours, son contenu est réinitialisé
Voyons ceci avec un exemple :
Pour nommer vos variables, prenez l’habitude de respecter une règle afin de vous y retrouver.
Soit vous utilisez une nomenclature “dure”
soit vous optez pour des noms de variables “parlants” et donc plus faciles à lire.
Pour commencer, je vous conseille des noms clairs et lisibles. Vous pourrez renommer vos variables ultérieurement grâce à la fonction de remplacement global de 4D.
Comme dans tout langage, les variables sont incontournables dans 4D. Vous devrez en user et en abuser.
Attention, l’essence même de certaines variables ne permet pas de les visualiser dans un formulaire :
Dans la vidéo précédente, nous avions utilisé une variable pour afficher le nombre d'enregistrements trouvés en fonction de la table sur laquelle on a effectué la recherche. Il faut savoir qu'une variable est un espace en mémoire qu'on peut représenter par un objet dans un formulaire.
Nous allons donc créer un formulaire projet de test : "test variables" afin de comprendre comment fonctionnent les variable.
Créeons une première variable nommée v1 et que je rends non saisissable. Cette variable n'existe actuellement pas en mémoire, il y a juste une zone à l'écran qui représentera le contenu de la variable si toutefois il existe.
Nous allons donc :
mettre un bouton à côté qui permet de déclarer la variable. Nous typerons cette variable en entier long par exemple
puis un 2è bouton qui va permettre de valoriser la variable v1:=1500.
Par la suite, on peut effectuer un calcul avec cette variable en mémoire et afficher par exemple une ALERTE.
Nous allons afficher une alerte() qui attend un argument de typetexte donc nous allons convertir la variable v1 après l'avoir multipliée par 12.
Testons maintenant le formulaire :
la variable v1 actuellement n'est pas vraiment définie
si nous la déclarons, puisque nous l'avons déclarée de typeentier long, elle prend une valeur par défaut à 0
on peut la valoriser
et ensuite on peut effectuer un calcul avec cette variable.
Voilà une première utilisation de variable simple.