[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
L'interface ARexx n'existe que dans la version Amiga de MUIbase.
ARexx est une interface standard pour des programmes Amiga et qui permet d'accéder aux fonctions et données d'autres programmes. MUIbase fournit un port ARexx avec un nombre de commandes restreint mais néanmoins suffisant pour permettre à un programme externe d'effectuer des opérations comme si c'était MUIbase lui-même qui les effectuaient. De plus l'interface Arexx de MUIbase possède un mécanisme de transaction similaire à d'autres bases de données relationnelles.
16.1 Nom du port Arexx Pour accéder au port Arexx. 16.2 Syntaxe des commandes A quoi ressemble les commandes Arexx de MUIbase. 16.3 Codes retour Explication des codes de retour.   Application (MUI)     16.4 Quit Quitter MUIbase. 16.5 Hide Iconifier les fenêtres MUIbase. 16.6 Show Désiconifier les fenêtres MUIbase. 16.7 Info Information sur le programme et l'auteur. 16.8 Help Montrer les commandes disponibles.   Programmation     16.9 Compile Lire & compiler des sources de programme externes.   Base de données     16.10 Connect Ouvrir un projet. 16.11 Disconnect Fermer un projet. 16.12 Connections Afficher toutes les connections. 16.13 Eval Lancer une requête. 16.14 Transaction Démarrer une transaction. 16.15 Commit Sauvegarder les changements d'une transaction. 16.16 Rollback Annuler les changements d'une transaction.
Des exemples de scripts Arexx pour MUIbase sont disponibles dans le tiroir `rexx'.
Le nom du port ARexx dans MUIbase est nommé `MUIbase.n' où n est un compteur qui démarre à 1. Si vous lancez une seule fois MUIbase, le nom du port sera `MUIbase.1'.
Vous devez déclarer le nom du port ARexx via address
avant de lancer l'une
des commandes ARexx de MUIbase. Le bout de programme suivant vous montre comment
vérifier la présence du port ARexx dans MUIbase, comment lancer MUIbase le cas
échéant ainsi que comment interagir avec le port.
if ~show(ports, MUIbase.1) then do address command 'run <nil: >nil: MUIbase:MUIbase -n' address command 'waitforport MUIbase.1' end address MUIbase.1 |
Après avoir contacté le port ARexx de MUIbase, vous pourrez lancer n'importe quelle commande ARexx de MUIbase. La syntaxe est similaire à celle d'autres implémentations :
cmd [arg1 ...] |
Puisque l'interpréteur ARexx évalue la ligne de commande avant de l'envoyer à MUIbase,
il peut être utile de mettre entre guillemets certains, voire tous les arguments. Il
est recommandé d'utiliser des guillemets simples (') pour les arguments qui ne seront
plus utilisés ultérieurement par l'interpréteur ARexx.
Ainsi vous pouvez toujours utiliser des guillemets doubles (") pour des arguments, par
exemple pour des constantes de texte.
De plus, vous pouvez intégrer la valeur des variables ARexx en leur enlevant leurs
guillemets.
Voici un exemple utilisant la commande MUIbase eval
:
search = `' eval handle 'select Name from Person where (like Name "*'search'*")' |
Après avoir lancé l'une des commandes ARexx de MUIbase, plusieurs variables ARexx sont mises à jour avec le résultat de la commande. Pour afficher tous les résultats d'une commande, vous devez activer l'option de résultats ARexx en ajoutant les lignes suivantes au début de votre script ARexx :
options results |
Pour la variable rc il existe les codes de retour suivants :
Code retour Signification
0 Succès. La variable result contient le résultat actuel.
-1 Erreur d'implémentation. Ne devrait jamais se produire.
-2 Manque de mémoire.
-3 Commande ARexx inconnue.
-4 Erreur de syntaxe.
<= -10 Autre erreur. Une description de l'erreur est donnée par lasterror.
-12 Erreur de compilation (uniquement pour la commande |
Voici un bout de code typique qui montre comment évaluer le résultat d'une commande ARexx de MUIbase :
eval handle 'select * from Accounts' if (rc == 0) then say result else if (rc == -1) then say "Erreur d'implémentation" else if (rc == -2) then say "Manque de mémoire" else if (rc == -3) then say "Commande inconnue" else if (rc == -4) then say "Erreur de syntaxe" else if (rc <= -10) then say lasterror else say "Erreur: " rc |
La commande quit
provoque la fermeture du programme MUIbase.
Veuillez également consulter la documentation de MUI.
La commande hide
iconifie toutes les fenêtres ouvertes de MUIbase.
Veuillez également consulter la documentation de MUI.
La commande show
désiconifie MUIbase et rouvre les fenêtres.
Veuillez également consulter la documentation de MUI.
La commande info
retourne les renseignements suivants à propos
de l'application MUI : titre, concepteur, droits de copie, description,
version, port et écran.
Commande Valeur de result info title Titre de l'application info author Concepteur de l'application info copyright Message sur les droits de copie info description Description info version Numéro de version info base Nom du port ARexx info screen Nom de l'écran public |
La commande help
écrit dans un fichier toutes les commandes
ARexx disponibles de l'application MUI.
|
La commande compile
compile le source d'un programme externe.
|
update
est spécifié, le fichier source externe est réécrit.
La mise à jour du fichier source permet la mise en évidence des mots
clefs MUIbase.
Un programme compilé avec succès est considéré comme le programme du
projet et utilisé lors de l'exécution de déclencheurs.
Dans le cas d'un échec lors de la compilation, le code d'erreur -12 est retourné et lasterror est défini sur 4 lignes de texte :
Un projet doit absolument être déjà ouvert avant de lancer la commande
compile
pour compiler son source externe.
Si aucun projet externalisant son source dans le fichier spécifié par
source n'est trouvé, un code d'erreur <= -10 (mais différent de -12)
est retourné et lasterror est défini.
La commande connect
ouvre la communication vers un projet MUIbase.
|
nom-projet
est déjà ouvert et l'ouvre le cas échéant. Un projet n'est lancé qu'une seule
fois et les diverses connections vers le même projet partagent l'accès à la
base de données. Ensuite un handle de communication (ou identifiant unique) est
généré. Un handle de communication est une valeur entière non nulle.
Si le mot-clé GUI
fait parti de la ligne de commande, alors l'interface
graphique du projet MUIbase est également lancée. Sinon aucune interface graphique
n'apparaît ce qui permet d'exécuter des commandes ARexx de MUIbase en tâche de
fond sans l'intervention directe de l'utilisateur.
En cas de succès dans l'exécution d'une commande, la valeur 0 est retournée et result prend la valeur du handle.
Exemple : `connect "MUIbase:Demos/Movies.mb"' établit une connexion vers la base de données d'exemple des films.
Consultez également Disconnect, Connexions, Codes retour.
La commande disconnect
termine une communication existante.
|
Exemple: `disconnect 1' termine la connexion ayant le handle 1.
Consultez également Connect, Connexions, Codes retour.
La commande connections
donne des renseignements sur les connexions existantes.
|
connections
retourne la valeur 0 et
définit result sous forme de texte compréhensible dont chaque ligne est
une connexion avec une valeur de handle et un nom de projet.
Exemple: la variable result après un appel à connections
pourrait
se présenter sous la forme suivante :
3 MUIbase:Demos/Accounts.mb 5 MUIbase:Demos/Movies.mb 6 MUIbase:Demos/Movies.mb 7 MUIbase:Demos/Movies.mb |
L'interface principale du port Arexx de MUIbase permettant la récupération et
la mise à jour des données est gérée par la commande eval
.
|
eval
exécute la commande spécifiée par commande-lisp
(écrite dans le langage lisp de MUIbase) sur le projet correspondant à handle.
Un handle peut être obtenu via la commande connect
. La commande commande-lisp
peut être n'importe quelle expression du langage de programmation de MUIbase.
La parenthèse la plus externe d'une expression est optionnelle et peut éventuellement
être omise.
Il est recommandé d'entourer commande-lisp par des guillemets simples comme
décrit dans Syntaxe des commandes.
En cas de succès, eval
retourne la valeur 0 et définit result comme
une représentation textuelle de la valeur de retour de commande-lisp. La représentation
textuelle est faite de façon à avoir une idée sur le type de donnée retourné, par
exemple un texte est entouré par des guillemets doubles alors qu'une liste est entourée
de parenthèses dont les éléments sont séparés par des espaces ou des caractères retour
chariot. Si vous voulez avoir un format spécifique, utilisez votre propre format dans la
commande lisp spécifiée.
Si vous modifiez la base de données via la commande eval
sans avoir auparavant
lancé une transaction (voir Transaction) les changements
seront alors automatiquement rendus permanents (validation automatique).
A l'inverse si vous avez lancé une transaction avant d'appeler eval
les changements
seront gardés en mémoire jusqu'à ce que la commande commit
les rende permanents
ou que la commande rollback
les annule.
Exemple:
options results address MUIbase.1 connect "MUIbase:Demos/Movie.mb" if (rc == 0) then do handle = result eval handle 'select Titre, Réalisateur from Movies' end if (rc == 0) then say result |
( ( "Titre" "Réalisateur" ) ( "Batman" "Tim Burton" ) ( "Batman Returns" "Tim Burton" ) ( "Chérie, vote pour moi" "Ron Underwood" ) ( "Tequila Sunrise" "Robert Towne" ) ( "Mad Max" "George Miller (II)" ) ( "Braveheart" "Mel Gibson" ) ( "2010 - L'année du premier contact (L'odyssée continue) " "Peter Hyams" ) ) |
Le port ARexx de MUIbase permet d'effectuer des transactions dans la base de données. Une transaction consiste en un ensemble d'opérations appliquées sur la base de données permettant la modification des données. Une transaction peut être soit exécutée et rendue permanente définitivement (validation), soit au contraire annulée à n'importe quel point de la transaction (annulation). On lance une transaction avec la commande suivante :
|
connect
(voir Connect).
Après lancement de la commande transaction
vous pouvez mettre autant de
commandes eval
que vous le désirez sans affecter la base de données. Pourtant
il va vous falloir décider à un moment si vous voulez rendre les modifications
permanentes (voir Commit) ou revenir en arrière, avant le
lancement de la commande transaction
(voir Rollback).
Après lancement de la commande transaction
l'accès au projet correspondant est
rendu exclusif au handle spécifié. Ainsi, les autres programmes voulant accéder à la
base de données (y compris l'utilisateur en passant par l'interface graphique) sont
bloqués (ou différés dans le cas d'une autre connexion ARexx) jusqu'à ce que l'accès
exclusif soit levé, en exécutant la commande commit
ou rollback
.
Habituellement, la commande transaction
retourne la valeur 0. Si une autre
connexion ARexx requiert l'accès exclusif au même projet spécifié par handle,
la demande est bloquée jusqu'à ce que l'autre connexion se termine soit en validant,
soit en annulant la transaction.
Consultez également Eval, Commit, Rollback, Codes retour.
La commande commit
s'utilise à la fin d'une transaction pour valider les
changements de manière définitive.
|
commit
met fin à une transaction (voir Transaction)
en sauvegardant le projet auquel fait référence handle.
La valeur 0 est retournée en cas de succès de la commande commit
. Si aucune transaction
n'a été lancée avant l'appel de la commande commit
ou s'il se produit une erreur, une valeur
différente de 0 est retournée.
Consultez également Rollback, Transaction, Codes retour.
Pour annuler les changements d'une transaction, utilisez la commande rollback
.
|
rollback
.
Consultez également Commit, Transaction, Codes retour.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |