Obligement - L'Amiga au maximum

Jeudi 21 mars 2019 - 00:21  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : ARexx - Installation et premiers pas
(Article écrit par François Gueugnon et extrait d'Amiga News Tech - juin 1991)


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.
  • Bibliothèques spécifiques à ARexx dans le répertoire "Libs" : rexxarplib.lïbrary (47 228 octets), rexxmathlib.library (7076 octets), screenshare.library (1796 octets), rexxsupport.library (2528 octets) et rexxsyslib.library (33 300 octets). Soit un total de 91 928 octets.
  • Programmes spécifiques à ARexx dans le répertoire "C" : Rexxmast (2348 octets), Hi (304 octets), Loadlib (712 octets), Rx (968 octets), Rxc (440 octets), Rxset (640 octets), Tco (332 octets), Tcc (332 octets), Te (268 octets), Ts (268 octets) et WaitForPort (356 octets). Soit un total de 6968 octets.
Les bibliothèques n'ont pas besoin d'être toutes résidentes et peuvent être chargées sélectivement, selon les nécessités du programme.

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 :

IF j>5 THEN a=3

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 :

AHS(-5*3)

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 l'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 :

'delete df1:monprogramme'

...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 :
  • Les instructions de programmation : boucles, tests, etc.
  • Les instructions d'exécution : echo, parse, queue, etc.
Les fonctions peuvent être classées en deux catégories :
  • Les fonctions système : ADDLIB(), ADDRESS(), etc.
  • Les fonctions effectuant une opération : ARG(), DATATYPE(), etc.
Méthode

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 :

/* Ceci est la méthode pour calculer ARGtgR(87) */

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 :

SAY 'Ceci est la méthode pour élever A au carré : A**A'

...écrira texto à l'écran :

Ceci est la méthode pour élever A au carré : A**A

On peut aussi demander la résolution d'une opération :

SAY 5**3

...qui devrait donner "125".

SAY 'le résultat de 5**3 est:' 5**3

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 :

SAY 'ceci est le résultat'||'du calcul'

C'est l'opérateur de concaténation || qui provoquera la sortie à l'écran de :

ceci est le résultat du calcul

...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 UPPER source variable_1 variable_2 variable_3 ... variable_N

"Parse", en anglais, signifie analyser. Cette instruction analyse donc ce qui suit le mot réservé PARSE.
  • "UPPER" est une instruction qui met toute chaîne de caractères à laquelle elle est appliquée, en majuscules (en anglais : "uppercase"). Elle doit suivre immédiatement PARSE lorsqu'elle est utilisée.
  • "source" fournit la chaîne de caractères à analyser.
  • "variable_1 variable_2", etc. sont les variables qui reçoivent les "morceaux" de la chaîne d'entrée disséqués par PARSE.
Par exemple, en considérant que la variable "essai" contient la chaîne suivante :

essai = 'a= 3 + 5'

...à la suite de la commande :

PARSE UPPER essai toto chiffre1 signe deuxièmechiffre

...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
  • Un programme commence toujours par un commentaire, entouré de "/*" et "*/" en nombre apparié.
  • L'exécution d'un programme se termine par EXIT, quel que soit l'endroit où se trouve cette instruction. En particulier c'est la dernière ligne d'un programme, mais on peut la trouver fréquemment dans une boucle de test du genre "IF THEN EXIT".
  • Le point-virgule (;) termine une instruction.
  • La virgule (,) indique que l'instruction se continue à la ligne suivante.
Où se procurer ARexx ?

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.


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]