|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ARexx est l'équivalent Amiga du langage de programmation REXX créé par IBM. Il vous fournit la liberté de configurer sur-mesure votre environnement de travail. Il est particulièrement utile en tant que langage de script car il vous permet de contrôler et modifier des applications et de maîtriser la façon dont elles intéragissent entre elles. Cet article d'introduction vous initiera à ARexx, et vous proposera la création de vos premiers exemples ARexx. Introduction à l'ARexx Le langage de programmation ARexx (Amiga REXX) peut être considéré comme un noeud de communications dans lequel les applications - même celles créées par des développeurs différentes - peuvent échanger des données et commandes. Par exemple, en utilisant ARexx, vous pouvez ordonner à un produit de télécommunication de se connecter à un tableau d'affichage électronique, d'y télécharger des données financières, puis de les transférer automatiquement à un tableur pour des analyses statistiques - et ceci sans intervention de l'utilisateur. ARexx est un langage interprété qui traite des fichiers ASCII. L'interpréteur ARexx est le programme RexxMast, situé dans le répertoire "System" du Workbench sous AmigaOS et dans "MOSSYS:C" sous MorphOS. RexxMast gère l'exécution d'un programme ARexx. Si RexxMast détecte une erreur pendant la traduction ou l'exécution d'une ligne, il s'arrête et affiche un message d'erreur à l'écran. Ce test interactif est la fois un outil d'apprentissage et une aide au débogage de programmes parce qu'il précise où et quand une erreur se produit. A qui est destiné ARexx ? Vous n'avez pas besoin d'une expérience intensive de l'Amiga pour utiliser les programmes et scripts ARexx, mais vous devez tout de même savoir comment :
ARexx sur Amiga ARexx est géré sur toutes les plates-formes matérielles Amiga. ARexx a été intégré dans le système d'exploitation Amiga depuis la version 2.0 du Workbench Amiga. ARexx utilise plus particulièrement deux caractéristiques primordiales du système d'exploitation Amiga : le multitâche et la communication interprocessus. Le multitâche est la faculté à exécuter plus d'un programme simultanément. Par exemple, vous pouvez éditer un fichier, formater une disquette et modifier les couleurs de votre écran en même temps. La communication entre processus (IPC) est réalisée via l'utilisation de ports de messages (liés à des programmes), une adresse contenue dans une application qui peut recevoir et envoyer des messages. Chaque port de message a un nom et l'envoi d'un message vers une application dans un script ARexx nécessite l'utilisation d'un nom de port. Le protocole d'envoi/réception d'un message est :
Les caractéristiques du langage de programmation ARexx sont :
Les programmes ARexx sont habituellement stockés dans le répertoire "REXX:" (qui est souvent assigné au répertoire "SYS:S"). Bien que les programmes puissent être stockés dans n'importe quel répertoire, les placer dans "REXX:" présente plusieurs avantages :
Démarrer ARexx Pour commencer à utiliser ARexx, vous devez exécuter le programme RexxMast. Celui-ci peut être lancé automatiquement ou manuellement. Chaque fois qu'ARexx est démarré ou arrêté, une fenêtre d'information apparaît. Pour démarrer ARexx manuellement, double-cliquez sur l'icône "RexxMast" du répertoire "System" du Workbench. Sous MorphOS, ouvrez un Shell et tapez : "rexxmast >NIL:". Il y a deux méthodes pour démarrer ARexx automatiquement : placez l'icône de RexxMast dans le répertoire "WBStartup" ou éditez le fichier "S:user-startup". Pour placer RexxMast dans le répertoire "WBStartup", ouvrez le répertoire "System" et faites glisser l'icône "RexxMast" dans le répertoire "WBStartup", puis redémarrez votre Amiga. Pour éditer le fichier "S:user-startup" il suffit de :
La commande RX est utilisée pour exécuter un programme ARexx. Si un chemin d'accès complet précède le nom du programme, ce dernier est seulement recherché dans le répertoire mentionné. Si aucun chemin d'accès n'est mentionné, le programme est recherché dans le répertoire courant et dans "REXX:". Tant que les programmes sont stockés dans le répertoire "REXX:", vous n'aurez pas besoin de mentionner l'extension ".rexx" dans le nom du programme. Autrement dit, saisir :
est équivalent à :
Un petit programme peut directement être saisi sur une ligne de commande en encadrant la ligne du programme par des guillemets. Par exemple, le programme suivant enverra cinq fichiers nommés myfile.1, ..., myfile.5 vers l'imprimante.
Quand une application est compatible ARexx, vous pouvez exécuter les programmes ARexx à partir des applications en sélectionnant une option de menu ou en spécifiant une option de commande. Référez-vous à la documentation du logiciel pour des informations supplémentaires. Les programmes ARexx peuvent être exécutés à partir du Workbench en leur créant une icône "projet" ou "outil". Vous devez donc préciser la commande RX comme outil par défaut de votre icône. Dans la fenêtre d'information de l'icône, saisissez : "Default Tool: SYS:Rexxc/RX". Lorsque l'icône est activée, RX lance RexxMast (si celui-ci n'est pas déjà actif). Il exécute le fichier associé à l'icône comme un programme ARexx. ARexx gère deux types d'outils : "Console", qui spécifie une fenêtre et "CMD", qui indique une commande. Vous saisissez ces types d'outils dans la fenêtre d'information de l'icône de la façon suivante : Console=CON:0/0/640/200/Example/Close CMD=rexxprogram Exemples de programmes Les exemples suivants illustrent la façon d'utiliser ARexx pour afficher des chaînes de caractères sur votre écran, effectuer des calculs et activer les fonctionnalités de vérification d'erreur. Les programmes peuvent être saisis dans n'importe quel éditeur de texte ou traitement de texte. Sauvegardez vos programmes commes des fichiers "texte" au format ASCII si vous utilisez un traitement de texte. ARexx gère la table de caractères ASCII étendue (Å, Æ, ß). Ces caractères étendus sont interprétés comme des caractères ordinaires et seront passés de minuscules en majuscules. Les exemples illustrent également l'utilisation des bases de la syntaxe ARexx comme :
Exemple 1 : Amiga.rexx Ce programme vous montre comment utiliser SAY dans un bloc d'instructions pour afficher des chaînes de caractères à l'écran. Les instructions sont des clauses du langage qui indiquent une certaine action à effectuer. Celles-ci commencent toujours par un mot-clé. Dans l'exemple suivant, le mot-clé est SAY (les mots-clé sont toujours passés en majuscules lors de l'exécution du programme). Le SAY suivant est un exemple de chaîne. Une chaîne est une suite de caractères délimitée par des apostrophes (`) ou des guillemets (").
Saisissez le programme ci-dessus et sauvegardez-le en "REXX:Amiga.rexx". Pour lancer ce programme, ouvrez une fenêtre "Shell" et saisissez :
Bien que le chemin d'accès complet et le nom du programme soient "Rexx:Amiga.rexx", vous n'avez pas besoin de saisir le nom du répertoire "REXX:" ou l'extension ".rexx" si le programme a été sauvegardé dans le répertoire "REXX:". Vous devrez voir le texte suivant dans votre fenêtre "Shell" : "Amiga. The Computer for the Creative Mind". Exemple 2 : Age.rexx Ce programme vous invite à saisir du texte et lit ce que vous avez saisi.
Sauvegardez ce programme en "REXX:Age.rexx" et exécutez-le avec la commande :
Le programme commence par une ligne de commentaire qui décrit ce qu'il va faire. Tous les programmes commencent par un commentaire. L'instruction SAY affiche le texte d'invite à l'écran. L'instruction PULL lit la ligne saisie par l'utilisateur, c'est-à-dire dans ce cas, l'âge de l'utilisateur. PULL lit la saisie, la passe en majuscules et la stocke dans une variable. Les variables sont des symboles qui peuvent contenir une valeur. Choisissez des noms de variables parlants. Cet exemple utilise le nom de variable "age" pour mémoriser le nombre saisi. La dernière ligne multiplie la variable "age" par 365 et utilise l'instruction SAY pour afficher le résultat. La variable "age" ne doit pas être déclarée comme un nombre car sa valeur a été vérifiée quand elle a été utilisée dans l'expression. c'est un exemple de donnée non typée. Pour voir ce qui peut se passer si "age" n'est pas un nombre, essayez de lancer le programme avec une saisie non numérique pour l'âge. Le message d'erreur résultant vous affiche le numéro de ligne et le type d'erreur qui est survenu. Exemple 3 : Calc.rexx Ce programme vous présente l'instruction DO, qui répète l'exécution de lignes d'un programme. Il illustre également l'opérateur exponentiel ( **). Saisissez ce programme et sauvegardez-le comme "REXX:Calc.rexx". Pour exécuter ce programme, utilisez la commande "RX calc".
La commande DO répète l'exécution des lignes de commande placées entre les instructions DO et END. La variable "i" est un indice pour la boucle qui est augmenté d'1 à chaque itération. Le nombre suivant, le symbole TO est la limite pour l'instruction DO et pourrait être une variable ou une expression complexe plutôt que la simple constante 10. Généralement, les programmes ARexx utilisent un seul espace entre les chaînes de caractères alphanumériques. Dans le programme 3, cependant, l'espacement n'est pas mentionné entre les caractères d'exponention ( **) et les variables (i et 2, i et 3). Les lignes d'instructions à l'intérieur de la boucle ont été indentées (décalées). Ce n'est pas requis par le langage, mais cela améliore la lisibilité du programme, parce que vous pouvez facilement visualiser où la boucle commence et où elle prend fin. Exemple 4 : Even.rexx L'instruction IF permet à des lignes de commande d'être exécutées conditionnellement. Dans cet exemple, les nombres de 1 à 10 sont classés comme paires ou impaires en les divisant par 2 et en analysant le reste. L'opérateur arithmétique // calcule le reste après une division.
La ligne IF indique que si le reste de la division de la variable "i" par 2 est égal à 0, alors on initialise la variable "type" à paire. Sinon, le programme n'exécutera pas la clause THEN et traitera la clause ELSE, initialisant la variable "type" à impaire. Exemple 5 : Square.rexx Cet exemple introduit le concept de fonction, un ensemble d'instructions exécutées dans un environnement adéquat en mentionnant le nom de la fonction. Les fonctions vous permettent de créer de grands programmes complexes à paritr de modules plus petits. Les fonctions permettent aussi d'utiliser le même code pour des opérations similaires dans différents programmes. Les fonctions sont spécifiées dans une expression, un nom suivi d'une parenthèse ouvrante (il n'y a pas d'espace entre le nom et la parenthèse). Une ou plusieurs expressions, appelées paramètres, peuvent suivre la parenthèse. Le dernier paramètre doit être suivi d'une parenthèse fermante. Ces arguments passent des informations nécessaires à la fonction pour le traitement.
Démarrant avec DO et finissant avec END, une boucle est initialisée avec un index "i", qui sera augmenté d'1. La boucle sera répétée cinq fois. Elle contient une instruction qui appelle la fonction "square" quand l'expression est évaluée. Le résultat de la fonction est affiché en utilisant l'instruction SAY. La fonction "square", définie par les instructions ARG et RETURN , calcule le carré du paramètre. ARG charge la valeur du paramètre "i" et RETURN renvoie le résultat de la fonction à l'instruction SAY. Une fois que le programme est appelé par la boucle, il recherche le nom de la fonction "square", charge le paramètre "i", réalise le calcul et retourne à la ligne suivante de la boucle DO/END. L'instruction EXIT arrête le programme après la dernière itération de la boucle. Exemple 6 : Results.rexx L'instruction TRACE active les caractéristiques de vérification d'erreur d'ARexx.
L'écran affiche les lignes du source exécutées, chaque passage dans la boucle DO/END, et le résultat final de l'expression. En enlevant l'instruction TRACE vous afficherez seulement le résultat final : sum = 15 sumsq = 55. Exemple 7 : Grades.rexx Ce programme calcule la note finale d'un étudiant donné en se basant sur quatre essais et une participation en classe. La moyenne des essais 1 et 2 compte pour 30% de l'évaluation, la moyenne des essais 3 et 4 pour 45% et la participation pour 25%. Une fois que la note est affichée, une option permettant de continuer avec un autre calcul est affichée. La réponse est "Chargée" (PULL) : si elle est différente de Q (quitter), la boucle continue. Si la réponse est égale à Q, le programme quitte la boucle et se termine.
Sources d'informations supplémentaires
|