★ APPLICATIONS ★ DIVERS ★ TURBO MAKER LE GENERATEUR DEPROGRAMMES ★ |
Turbo Maker (Micro-Systemes) | Applications Divers |
D'habitude, un programme sert à traiter des données : vous lui rentrez quelques valeurs et il vous «crache» des résultats correspondant aux traitements programmés. Imaginez-en un qui, au lieu de donner des résultats, donne un traitement : c'est-à-dire un programme qui fabrique un programme.C'est ce que nous vous proposons avec Turbo-Maker, un logiciel en Turbo-Pascal qui permet de créer des masques d'écran en source... Turbo Pascal! Après tout, un programme n'est jamais qu'un fichier contenant un texte un peu particulier, qui répond à certaines règles du langage dans lequel il est écrit. Ce texte peut être soit compris instruction par instruction par un interpréteur (c'est le cas de la plupart des Basic), soit transformé une fois pour toutes en programme exécutable directement par la machine (c'est le cas des compilateurs comme Turbo-Pascal). De toute façon, si l'on respecte la syntaxe du langage, peu importe au compilateur comment (et par qui) a été écrit le texte source. Un programme Pascal peut donc avoir comme résultat de traitement un texte source Pascal qu'il suffit de compiler. Dans notre cas, Turbo-Maker permet de transformer le dessin d'un masque de saisie, créé sous un éditeur, en une procédure Pascal qui se chargera de la gestion de ce masque. Imaginons qu'un jour de pluie vous ayez envie d'écrire un programme de carnet d'adresse sur votre ordinateur préféré (si, si, ça arrive...). Après avoir défini tous les champs d'un enregistrement type de votre fichier ainsi que la super-méthode permettant de trier les fiches contenant les numéros de téléphone dont l'inverse de la racine carrée est égal à pi sur huit (!), il faudra penser à la saisie des articles du fichier. C'est ici qu'un générateur de masque d'écran peut vous faire gagner du temps. Il vous suffit de dessiner sous un éditeur votre grille de saisie en marquant les zones correspondant aux variables avec nom, type et longueur. Ce sera votre unique travail, le reste (la partie la plus fastidieuse) étant pris entièrement en charge par le programme. Turbo-Maker analysera votre masque d'écran (fig. 1) en reconnaissant une zone de saisie de variable par un crochet ouvert ([) suivi du nom de la variable et d'options. La variable sera enregistrée lorsqu'il aura reconnu le crochet fermant (]). Le nombre de caractères entre ces deux crochets déterminera la longueur de la zone réservée à la saisie de la variable. Les variables sont considérées par défaut comme étant des variables de type chaîne de caractères (STRING(x) où x est le nombre de caractères compté entre le début et la fin de la zone de saisie). Cependant, si vous désirez utiliser des variables de type INTEGER ou REAL, vous pouvez le spécifier en faisant suivre le nom de la variable par « /i » pour un integer, et «/r» pour un réel. Le programme se chargera de la gestion de ces types. Toutefois, il est conseillé de donner une longueur au moins égale à huit caractères pour une variable réelle, de façon à ne perdre aucune information.
Arrivé en fin d'écran (fin de la 24e ligne de votre fichier texte), s'il n'a pas découvert d'erreur, Turbo-Maker vous demandera le nom que vous voulez donner à la procédure. Quelques secondes plus tard, un fichier contenant le texte de la procédure sera créé (fig. 2). La procédure gérera le masque : on ne pourra rentrer des données que là où il y a des zones marquées ; le passage d'une zone à l'autre sera automatique. Impossible de saccager à grands coups de RETURN ou DEL un bel écran bien propre... Il ne vous restera plus qu'à l'intégrer dans votre programme et à faire un appel de la procédure pour que la saisie soit prise en charge proprement et sans contrainte (pour le programmeur...). Turbo-Maker génère un RECORD (enregistrement) correspondant à la totalité des variables que vous avez définies. Un appel du masque se fait donc de la façon suivante : * nom-procédure (variable-type-généré) ; où « nom-procédure » est le nom que vous avez décidé de donner au masque, et « variable-type-généré » est du type contenant toutes les variables du masque. Le nom du RECORD créé par Turbo-Maker est « V » suivi de « nom-procédure ». Maintenant que nous Lors de ce traitement, ANAL-ECRAN peut détecter les erreurs dues à de mauvaises définitions des zones de saisie. Par exemple, si vous ouvrez un crochet sans le refermer, ou s'il n'y a pas de nom entre deux crochets, ces erreurs arrêtent l'analyse de l'écran. L'explication de l'erreur correspondante est affichée. Il faut alors reprendre et modifier le texte source sous éditeur pour le rendre correct, et recommencer le traitement. L'analyse de l'écran achevée, le programme principal commence la génération de la procédure PASCAL. On vous demande alors le nom que vous comptez donner à votre procédure masque ; le nom du fichier de sortie sera le même (avec « .pas » en plus). La procédure Make-Turbo est alors activée, elle est composée de trois procédures spécialisées : - Make-Var qui s'occupe de la définition des types et des variables, d'écrire dans le fichier de sortie l'en-tête de la procédure et certaines instructions constantes à toutes les procédures générées. - Make-Gestion qui crée une procédure Pascal (Ch-Zon) où les informations concernant les variables sont décrites suivant les types, longueur, etc. C'est ce morceau de programme qui contient tous les paramètres nécessaires à la saisie sur votre masque. Il effectue les conversions des caractères qui sont saisis en réels ou en entiers si le type des variables le demande. - Make-Text qui écrit à l'aide de WRITELN le texte de l'écran et qui contient les instructions permettant la saisie des données et les mouvements du curseur. Ici, quelques détails sont nécessaires. Ces instructions sont, à quelques détails près, toujours les mêmes, quels que soient vos écrans. Elles permettent d'enregistrer les caractères qui sont tapés au clavier dans un buffer, le nettoyage des zones de l'écran, le déplacement du curseur et la gestion des touches spéciales (BACKSPACE pour effacer des caractères dans une zone, RETURN pour passer à la zone suivante en mode rouleau, ESCAPE pour signifier que la saisie est terminée). Seules, ces trois touches de fonction sont reconnues par le programme ; toutes les autres n'ont aucune action. Ce bloc d'instructions est valable pour tous les écrans, c'est lui qui permet une génération facile des masques, car quasiment toutes les informations spécifiques à un écran particulier sont regroupées dans la procédure Ch-Zon. Ces trois procédures exécutées, le fichier objet est fermé. Il contient alors votre « morceau de programme » prêt à être intégré dans votre application. Attention, la procédure générée ne peut pas fonctionner toute seule (d'ailleurs ça n'aurait aucun intérêt...), il est nécessaire qu'elle soit appelée dans un programme Pascal. Vous verrez que le compilateur ne fera pas de différence entre le programme que VOUS avez tapé et le programme qui a été fabriqué par Turbo-Maker... N'ayez aucune crainte, l'algorithme utilisé dans la gestion du masque d'écran garantit qu'aucune erreur de compilation ne peut être due à la procédure générée..... Cependant, pour éviter le moindre problème, quelques petites contraintes sont à respecter ; par exemple, il ne faut pas donner de nom réservé par PASCAL à une procédure. Il est également conseillé d'écrire les noms de variables seulement avec des lettres et des chiffres. Deux variables qui auraient le même nom poseraient quelques petits problèmes. Comme en Turbo-Pascal, si vous utilisez une apostrophe ('), neutralisez-la en en mettant deux. En tant que programmeur averti, nous sommes sûrs que vous ne commettrez jamais ce genre d'étourderies ! Le listing du programme, écrit en Turbo-Pascal, est largement commenté. De plus, un nombre restreint de fonctions spécifiques au Turbo sont utilisées (fig. 3). Ceci permet l'écriture sous un autre Pascal sans problème. Il est également possible d'améliorer ce programme en intégrant, par exemple, des messages spécifiques à chaque zone de saisie, ou en décidant de ne pas initialiser les variables à zéro mais à une autre valeur voulue dès le dessin de l'écran. Il est très facile de modifier le nombre de variables autorisées sur un écran en changeant la valeur de ATVar (20 actuellement). Libre cours est donné à votre imagination (le programme est loin d'être parfait) pour améliorer Turbo-Marker et pour le rendre plus performant, sachant qu'écrire un programme fabriquant des programmes n'est pas plus difficile qu'autre chose...
|