|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Dans le précédent article, nous avons vu deux types d'utilisation d'ARexx. La plus simple consiste en un programme indépendant effectuant des opérations telles que la formalisation personnelle d'un répertoire. Un peu plus compliquée est la suivante, qui traite des éléments d'un programme, éventuellement totalement étranger, d'une manière indépendante de la fonction et de l'utilisation prévue de ce programme. Aujourd'hui, nous terminerons la revue élémentaire des possibilités d'ARexx, en évoquant sa capacité de communication entre des programmes écrits en ARexx par vous-même ou par d'autres auteurs, écrits en quelque langage que ce soit mais prévus pour émettre ou recevoir des commandes ARexx à partir de scripts écrits par vous ou quelqu'un d'autre, ou bien conçus de telle façon que l'usage d'ARexx soit totalement transparent pour l'utilisateur. Toutes les combinaisons des trois possibilités précédentes étant réalisables. Cette capacité de communication, réalisée au moyen de "ports", sortes de boîtes aux lettres, permet d'étendre le concept de sous-programme couramment utilisé à l'intérieur d'un programme, et de le généraliser à tout programme capable de gérer des ports en autorisant non seulement le lancement de programmes externes, mais encore en leur "passant" les arguments nécessaires à leur fonctionnement et en recevant de ceux-ci, par le même moyen, les valeurs qu'ils ont pu élaborer. Installation d'ARexx L'installation d'ARexx ne présente pas de difficulté. La disquette fournie contient tous les éléments nécessaires à l'installation tant sur disquette que sur disque dur, avec lancement automatique ou manuel selon le désir de chacun. Plusieurs programmes doivent être installés dans différents répertoires.
Dans le répertoire C, la commande principale est RexxMast, qui lance le fonctionnement d'ARexx. Cette commande peut être lancée à partir d'un CLI ou d'un Shell pour le lancement manuel, ou bien être placée dans votre startup-sequence pour un lancement automatique. L'arrêt du processus résident d'ARexx s'effectue de la même façon avec la commande Rxc. Il est également utile d'installer un certain nombre d'utilitaires, non indispensables au fonctionnement d'ARexx, mais dont l'emploi facilite la mise en oeuvre, la réalisation et la mise au point des programmes. Il s'agit principalement d'un Shell, qui évite beaucoup de frappe et qui est préférable au CLI standard, et d'un bon éditeur de texte. Un traitement de texte peut aussi être utilisé, pourvu qu'il ait une sauvegarde en ASCII lisible par n'importe qui. A moins qu'ED, l'éditeur indigène de l'Amiga, n'ait beaucoup changé, il est prudent d'éviter son emploi, à cause de sa fâcheuse tendance à "rater" la "validation" de la disquette, ce qui conduit à la requête d'utilisation de DiskDoctor - auquel d'ailleurs nous préférons DiskSalv du domaine public (collection Fish). L'installation de ces programmes, spécifiques à ARexx ou autres, ne présente aucune difficulté. Cependant, pour vérifier que tout fonctionne correctement, nous vous suggérons de lancer le test suivant : Si votre installation est du type "manuelle", à partir du CLI/Shell, lancez la commande RexxMast. Si le programme n'est pas déjà installé, une courte présentation (à effacement automatique) vous prévient de sa mise en action. Sinon, une autre présentation disant "ARexx server already active" vous prévient que tout est déjà en place. Vous pouvez essayer ici la manoeuvre consistant à mettre ARexx en action, puis à le désactiver en utilisant la commande Rxc. Cette dernière commande est muette, mais la commande suivante RexxMast remet l'ensemble en activité. Recherchez ensuite sur la disquette ARexx, le programme nommé "Calc.rexx". Lorsque vous l'avez trouvé, placez-vous dans le répertoire le contenant, puis envoyez la commande "Rx Calc 5+3" et attendez le résultat (qui doit apparaître sous forme de "8"). Explications : Calc.rexx est un programme qui effectue l'opération que vous lui proposez et retourne le résultat. Il n est pas nécessaire de donner explicitement le suffixe ".rexx". Ensuite, pour lancer le programme, il a fallu lancer Rx, qui est un programme que nous avons placé dans le répertoire "C" au moment de l'installation. Nous lui avons passé les arguments nécessaires pour que Calc puisse effectuer son travail, à savoir les valeurs numériques ainsi que l'opération à effectuer. Nous reverrons cela en détails plus loin. Essayez si vous voulez d'autres opérations. Il n'est bien sûr pas nécessaire de se placer dans le répertoire où se trouve le programme. On aurait très bien pu écrire "Rx df1:rexx/calc (3+2)/4" et le résultat aurait été "1.25". Notons en passant que le programme Calc contient moins de 100 octets, commentaires y compris ! Les essais terminés nous pouvons passer à ARexx lui-même. ARexx, le langage Comme pour tout langage, l'écriture de programmes en ARexx doit respecter une orthographe et une syntaxe précises. L'orthographe est réservée à l'écriture des mots spécifiques, que ce soient des instructions ou des fonctions. Les instructions sont composées d'au moins un mot-clé placé en tête et de paramètres qui le suivent dans un ordre défini pour cette instruction. D'autres mots-clés peuvent être trouvés dans le corps de l'instruction. Par exemple :
Les fonctions sont composées d'un mot-clé suivi de parenthèses dans lesquelles on écrit les arguments qui doivent être envoyés à la fonction, laquelle retournera, ou non, un résultat selon le mode d'appel direct ou par l'emploi de CALL. Par exemple :
Enfin, les commandes sont des ordres donnés dans le corps d'un programme ARexx et qui ne peuvent pas être classées dans l'une des deux catégories précédentes. La commande n'est pas évaluée par l'interpréteur ARexx mais est envoyée telle quelle à un "hôte" extérieur. Pour que l'interpréteur n'effectue pas une tentative qui conduirait immédiatement à une erreur, la commande est entourée d'apostrophes ('). L'hôte le plus courant est AmigaDOS, mais il n'est pas le seul possible. Pour envoyer une commande DOS, il suffit d'écrire la commande DOS dans son écriture habituelle, entourée d'apostrophes :
...provoquera l'effacement du fichier "monprogramme" de la disquette présente dans le lecteur DF1: sans autre participation d'ARexx que celle d'avoir envoyé la commande. Autres spécificités Comme dans tout langage, l'interpréteur ARexx évalue les expressions selon une hiérarchie et un ordre allant de la gauche vers la droite lors de la lecture d'une ligie de programme. Les opérations mathématiques sont interprétées selon les règles usuelles de l'algèbre. Les mots spécifiques à ARexx peuvent être indifféremment écrits en majuscules ou en minuscules, mais l'interpréteur les passera obligatoirement en majuscules. Il peut y avoir plus d'une instruction par ligne si elles sont séparées par un point-virgule. La fin de ligne est une condition implicite de fin d'instruction. Lorsqu'une instruction est plus longue qu'une ligne, le symbole de concaténation est la virgule, qui indique à l'interpréteur que la fin de ligne n'est pas la fin de l'instruction. Classification Les instructions peuvent être classées en deux catégories :
Nous ne présenterons pas le langage instruction par instruction, fonction par fonction car cela fait partie du livret fourni avec ARexx. Mais par le biais d'exemples choisis, nous montrerons l'utilisation et l'intérêt de celles qui sont originales par rapport à d'autres langages ou l'usage d'une des autres dont l'emploi est original. Premiers pas en ARexx Lors de l'écriture d'un programme ARexx, la première instruction en tout début de programme doit être un commentaire. Un commentaire, que ce soit le premier ou un autre dans le corps du programme, est constitué de ce que l'on veut pourvu qu'il soit entouré des symboles "/*" en tête et "*/" en fin (tout comme en C). Par exemple :
Les symboles "/*" et "*/" peuvent être imbriqués, pourvu qu'ils aillent par paire. Cette pratique permet de mettre un titre au programme que l'on écrit. Un peu d'ordre ne nuit pas ! En fin de programme, pour retourner au système hôte ou à l'appelant, il faut placer l'instruction EXIT. Notons que cette instruction est valable partout dans le programme et qu'elle peut apparaître au milieu d'une boucle ou d'un test, par exemple. Entrées-sorties En général, l'exécution d'un programme produit à partir d'entrées, un résultat (sorties) qu'on souhaite connaître. Il faut donc communiquer avec le programme et que celui-ci communique avec l'utilisateur. Pour afficher un résultat quelconque sur l'écran, il suffit d'écrire l'instruction suivante SAY. Lorsque l'on veut écrire une chaîne de caractères non interprétables à l'écran, on utilise à nouveau les apostrophes :
...écrira texto à l'écran :
On peut aussi demander la résolution d'une opération :
...qui devrait donner "125".
Dans ce dernier exemple, on voit apparaître le mélange de chaînes de caractères dont certaines seront écrites telles quelles et d'autres seront interprétées. L'espace blanc entre les deux chaînes est nommé opérateur de concaténation. Dans ce cas, il est implicite, mais il y en a d'autres selon que l'on veut un espace entre les chaînes (cas présent) ou pas, par exemple :
C'est l'opérateur de concaténation || qui provoquera la sortie à l'écran de :
...sans espace entre "résultat" et "du". L'instruction SAY a pour synonyme ECHO, qui lui est interchangeable. L'utilisation des apostrophes peut être remplacée par celle des guillemets. Nous avons vu lors du test de l'installation d'ARexx, que nous avons invoqué le programme Calc.rexx au moyen de "Rx", qui est la commande de mise en fonctionnement d'ARexx, et en écrivant derrière le nom du programme invoqué, la liste des arguments que l'on veut lui passer. Il existe deux méthodes pour passer des arguments à un programme. La première, celle que nous avons vue, consiste à invoquer le programme en lui donnant immédiatement les arguments dont il a besoin. La deuxième consiste à invoquer le programme seulement et à attendre que celui-ci pose la question. Bien entendu, il ne le fera que si les instructions correspondantes sont présentes dans le programme. Dans les deux cas on utilisera à l'intérieur du programme appelé, une instruction paramétrée selon le besoin. L'instruction PARSE Cette instruction est aussi puissante qu'intéressante. Elle s'écrit :
"Parse", en anglais, signifie analyser. Cette instruction analyse donc ce qui suit le mot réservé PARSE.
...à la suite de la commande :
...la variable toto contiendra la sous-chaine "A=", chiffre1, "3", signe, "+" et deuxièmechiffre, "5". La source est ici la variable essai. Nous détaillerons dans le prochain article cette instruction PARSE, aux nombreuses possibilités. A retenir
Ceux qui n'ont pas la chance de posséder le Workbench 2.0, sur lequel ARexx est fourni en standard, désirent sans doute connaître le moyen de se procurer ce langage... Il est l'oeuvre de l'américan Bill Hawes. Vous pouvez lui commander directement à l'adresse ci-dessous, pour un prix d'environ 50 dollars ou de convaincre votre revendeur habituel de se le procurer. Bill Hawes Whishful Thinking Development Corp. P.O. Box 308 Maynard MA, 01754 USA Une politique de remise à jour est soutenue, sous réserve que vous renvoyiez votre carte d'enregistrement. La dernière version d'ARexx est la 1.15, qui fonctionne aussi bien avec les Workbench 1.2, 1.3 et 2.0.
|