Restructured Extended Executor

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Restructured Extended Executor (REXX) est un langage, qui a été inventé par Mike Cowlishaw, chercheur d'IBM. Il s'appelait initialement REX (Revised EXecutor), mais le sigle était déjà déposé. Langage interprété procédural, il est un des seuls héritiers du PL/I, ou du moins de la syntaxe claire du PL/I.

C'est le langage de script le plus utilisé sur les mainframes d'IBM[réf. nécessaire], en particulier VM/ CMS, puis plus tard MVS/ TSO et z/OS.

Il dispose d'une version Open Source, fournie en standard avec certaines distributions Linux. Les interprètes REXX, tant commerciaux qu'open source, sont disponibles sur une vaste gamme de plates-formes et des compilateurs sont disponibles pour toutes les unités centrales IBM.

Sa syntaxe a été conçue dans un but essentiel de faciliter l’apprentissage et la relecture du code.

Voici par exemple un programme REXX :

 do i=1 to 5
    if i=3 then say "Trois"
           else say i
 end

Son exécution donne

1
2
Trois
4
5

un autre exemple de programme REXX :

 liste_mots="un deux trois quatre cinq"     /* liste des 5 premiers chiffres */
 do i=1 to words(liste_mots)                /* boucler pour chacun des mots de liste_mots */ 
   say word(liste_mots,i)                   /* Afficher le "i"eme mot  */ 
 end                                        /* fin de la boucle */ 

qui peut s'écrire également :

 liste_mots="un deux trois quatre cinq";do i=1 to words(liste_mots);say word(liste_mots,i);end

Son exécution donne

un
deux
trois
quatre
cinq

Principes[modifier | modifier le code]

  1. syntaxe très proche du PL/I
  2. usage systématique des minuscules (lecture 30 % plus rapide, selon son créateur Mike Cowlishaw) ;
  3. caractère de fin de ligne inutile (sauf quand on veut séparer plusieurs instructions sur une même ligne) ;
  4. pas de mots réservés ;
  5. pas de {} ni de []. L'indexation se fait par un point qualifiant qui permet l'indexation numérique ou par chaîne de caractères (hash). exemples : service.3095 ou anniversaire.patron ;
  6. pas de pointeurs ;
  7. peu de parenthèses requises ;
  8. grammaire intuitive (voir l'exemple ci-dessus) ;
  9. opérations conditionnelles standards (do i=..., do forever, while / do et do until) ;
  10. système de gestion d'exceptions d'une utilisation très simple grâce à l'activation signal on ....
  11. l'instruction parse permet la décomposition de chaînes structurées en leurs éléments de base de façon plus lisible (mais aussi moins concise) que les expressions rationnelles.

Il existe un compilateur Rexx qui permet d'obtenir à la fois des scripts plus stables dans le cas d'une gestion par version, une exécution plus rapide, et une certaine protection contre le vol ou les modifications intempestives du code source.

Dérivés[modifier | modifier le code]

REXX a donné deux évolutions différentes, mais restées peu utilisées car incompatibles entre elles :

  • NetREXX, orienté réseau
  • Object REXX, orienté objet

Regina a davantage de succès : c'est simplement la version de REXX en logiciel libre.