Suivez-nous sur X

|
|
|
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,
ALL
|
|
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
|
|
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
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : ARexx - Catalogue d'un disque (troisième partie)
(Article écrit par François Gueugnon et extrait d'Amiga News Tech - décembre 1991)
|
|
Voici déjà le troisième et dernier volet de notre premier programme ARexx : il concerne plus particulièrement
la présentation du répertoire à l'écran.
Nous avons employé la pile pour stocker momentanément trois valeurs : le nom du disque, l'adresse en
mémoire du bloc des fichiers créés dans le programme 2 et sa longueur. Nous avons pour cela utilisé trois fois
l'instruction PUSH. Bien que cette méthode soit tout à fait légale, elle peut présenter un certain danger
dans un système multitâche car la pile est publique.
Chaque programme peut la charger ou la lire à sa guise.
Il serait préférable de l'utiliser ainsi : d'abord créer une chaîne contenant un nom identificateur et
les paramètres à transférer et n'effectuer qu'un seul PUSH. A la réception, on effectue un PULL qui retourne
la ligne courante de la pile. On vérifie alors que le nom identificateur est correct ; si oui on continue,
sinon c'est qu'un autre utilisateur s'en est servi.
On stocke alors momentanément la ligne et on recommence jusqu'à la découverte de la bonne ligne. On
replace ensuite dans la pile - et dans l'ordre ! - tout ce qu'on en a été extrait. Notons que ce n'est
pas spécifique à ARexx mais à tout système partagé.
Particularités du programme
Nous avions laissé les défauts du programme précédent afin d'utiliser dans celui-ci les possibilités du
traitement des chaînes de caractères. Ceci explique les différents traitements, dont l'intérêt est purement
didactique.
Le bloc issu du programme précédent est une suite monolithique de caractères : il n'y a qu'un seul retour
chariot en fin de bloc et bien que ce soient des caractères ASCII, ils représentent valablement tout ou partie
d'un fichier standard dans un langage quelconque. Seule l'acquisition peut être différente (usage de READCH()
par exemple).
L'homogénéisation des séparateurs (début en ligne 30) peut sembler faire double emploi avec la fonction remplaçant
les séparateurs (|||) par des espaces, mise dans les lignes 101 et 102. Il faut se rappeler que dans ARexx,
les espaces sont des séparateurs implicites et que certains titres de répertoires ou de fichiers peuvent en
contenir, ce qui augmenterait la difficulté à les trier sans les tronquer.
La console a ses définitions et ses limitations. Certaines peuvent être outrepassées, d'autres non. Cela limite
la réalisation et attire la critique des esthètes. Nous en sommes conscients et d'accord !
Prochains articles
Notre prochain article traitera du débogage des programmes, car l'environnement ARexx est bien muni en
aides diverses au déverminage et possède des particularités intéressantes. Ensuite, nous verrons comment
utiliser les bibliothèques venant avec la rexxarp.library, qui permet d'accéder aux fonctions d'Intuition
(menus, gadgets, etc.).
Après encore, nous regarderons comment les programmes spécialement prévus pour, fonctionnent de concert
avec ARexx, et en particulier, nous vous suggérons de chercher dès à présent à vous procurer cet excellent
éditeur de texte du domaine public qu'est DME (version 1.35), réalisé par le non moins excellent Matt Dillon,
qui est "Rexxable" à satiété. Il sera bien entendu fourni sur la disquette ANT relative à cet article lors de sa parution.
Listing du programme
Ce programme s'appelle "Présentation" (n'oubliez pas l'accent aigu sur le "é")...
Comme d'habitude, les numéros de ligne sont des repères à ne pas copier.
|