Jaap's Psion II Page

This is the French manual for the French language version of the CM/XP.


Psion Organiser II
Guide d'utilisation


SECTION 1

TABLE DES MATIÈRES

Introduction 1 Description de l'Organiseur 2 Prise de contact 3 L'horloge 4 Comment éteindre l'appareil 5 Sauvegarde et recherche de données 6 Effacement des données 7 Datapaks 8 Calculatrice 9 Agenda 10 Alarmes 11 Prog 12 Info 13 Copie 14 Remise à zéro 15 Conseils sur les enregistrements 16 Personnalisation du menu

SECTION 2

TABLE DES MATIÈRES

17 Introduction au langage OPL 18 Création d'une procédure 19 Exécution d'une procédure 20 Variables 21 Variables chaînes 22 Variables tableaux 23 Opérateurs 24 Procédures 25 Manipulation des fichiers de données 26 Boucles, labels, sauts et branchements 27 Traitement des erreurs 28 Impression des procédures 29 Répertoire des procédures 30 Effacement des procédures 31 Copie des procédures 32 Exemples de programme 33 Commandes de l'OPL 34 Fonctions de l'OPL Annexes Index


 

© 1986 copyright Psion PLC

Tous droits réservés. Le présent manuel ainsi que les programmes correspondant à celui-ci sont déposés par Psion PLC. Aucune partie de la présente documentation ne peut être copiée, distribuée, transmise, transcrite, stockée dans un système de recherche documentaire, ni traduite dans une langue naturelle ou dans un langage informatique, sous quelque forme que ce soit, par quelque moyen que ce soit - électronique, mécanique, magnétique, manuel ou autre - sans la permission expresse par écrit de Psion PLC. Les informations décrites dans ce manuel sont susceptibles d'être modifiées sans préavis.

Les demandes de dépôt et modèles sont enregistrées sous les numéros 1019736 & 1019737.

Pour éviter d'endommager l'Organiseur, ne pas l'exposer à des températures ou humidités excessives. Ne pas le heurter trop fortement ou le traiter brutalement. Ne pas nettoyer le boîtier avec un liquide volatile.

GARANTIE DU FABRICANT ET LIMITATION DE SA RESPONSABILITÉ

Si, dans les 12 mois de l'achat, il peut être démontré au vendeur que l'ordinateur comporte un vice, et qu'il ne fonctionne pas de manière satisfaisante conformément à la description du manuel de l'utilisateur, le vendeur procédera, suivant le choix de l'acheteur, au remboursement de l'ordinateur ou à son remplacement. Le vendeur ne pourra en aucun cas être tenu responsable pour toute perte, ou conséquence de perte, causée par une quelconque erreur, défaut ou défaillance de l'ordinateur, ou tout autre événement comprenant de manière non limitative, la perte de jouissance, la perte de données enregistrées, la perte de profits ou la perte de contrats.

 

Écrit par Barry Thomas
Traduit par LinguaSoft
Imprimé par Premier Metropolis

Adapté en Français par Yves Lebrec - Aware


INTRODUCTION

L'Organiseur II de Psion que vous venez d'acheter est un puissant ordinateur de poche - un système que vous pourrez adapter en fonction de vos besoins. Il est équipé d'un microprocesseur bien plus perfectionné que ceux des modèles encombrants.

Vous pouvez commencer à vous servir immédiatement de votre 'Organiseur'. Sa mémoire interne conserve les informations saisies même lorsque vous éteignez l'appareil.

L'Organiseur contient également deux 'unités à semi-conducteurs' exclusives et versatiles cachées par un couvercle protecteur encastrable. Ces périphériques miniatures vous permettront d'accéder à la puissance illimitée de votre ordinateur.

La mémoire interne de l'Organiseur XP peut contenir environ 32.000 caractères de données, tandis que le modèle CM est limité à 8.000. Cependant, vous avez la possibilité de rajouter un ou plusieurs 'Datapaks' (cartouches de données) pour faire passer la capacité de stockage de la machine a 64.000 caractères par Datapak sur le modèle CM, ou à 128.000 caractères par Datapak sur le modèle XP.

Ces 'Datapaks' vous permettront de créer des bases de données personnel es sûres d'une longueur illimitée qui, utilisées avec les cartouches programmes de la bibliothèque de logiciels, mettront à votre disposition une puissance de traitement incomparable dans un format de poche.

L'Organiseur comprend un agenda qui vous aide à vous rappeler de vos rendez-vous et de vos engagements personnels. Pour être sûr de ne rien oublier, il vous suffit de programmer une alarme à chaque fois que vous notez quelque chose d'important sur votre agenda qui pourra, par la même occasion, vous servir de réveil-matin !

L'Organiseur est aussi une calculatrice très sophistiquée vous permettant de réaliser des calculs compliqués, quelle que soit la quantité de parenthèses nécessaires pour y parvenir. Vous avez à votre disposition tout un choix de fonctions mathématiques et scientifiques, sans oublier la possibilité d'utiliser jusqu'à dix mémoires. Pour saisir vos formules et données, vous procédez de la même façon qu'en les écrivant sur une feuille de papier.

L'Organiseur possède également son propre langage de programmation, l'OPL, qui a été étudié spécialement pour manipuler les applications de base de données et vous permettre d'exploiter toutes les fonctions que vous offre cette machine.

Il existe toute une variété de périphériques et de programmes destinés, par exemple, à imprimer les informations enregistrées en mémoire, ou à raccorder l'Organiseur à un autre ordinateur. Vous pouvez même transmettre les données de cette machine à une autre par ligne téléphonique.

L'Organiseur va remplacer à la fois votre carnet de notes, votre agenda, votre horloge et votre calculatrice, tout en vous donnant accès à une puissance de traitement de base de données incomparable dans un format de poche.

Parmi les périphériques et programmes de l'Organiseur, citons l'adaptateur secteur, l'interface série Comms-Link RS232 avec son programme de communication pour PC ou Macintosh, le lecteur de codes à barres, et le lecteur de cartes magnétiques, FilePak pour les fichiers, le Tableur compatible Lotus 1-2-3, le Formulateur pour créer vos propres formules sans programmer, Top Finance pour les calculs bancaires et le Maths Pack pour les calculs scientifiques.

N'hésitez surtout pas à expérimenter les puissantes fonctions de votre Organiseur en apprenant a vous en servir ! Ne vous préoccupez pas des erreurs - vous ne risquez pas d'endommager la machine en appuyant sur quelques touches. Alors mettez-vous au travail sans plus attendre pour découvrir de quoi est capable votre Organiseur.


CHAPITRE 1

DESCRIPTION DE L'ORGANISEUR

Figure 1. Vue arrière, étui protecteur retiré

  1. Première unité et couvercle protégeant l'emplacement prévu pour un Datapak ou une cartouche programme.
  2. Deuxième unité, identique à la première.
  3. Molette de réglage du contraste.
  4. Couvercle du compartiment pile.
  5. Languette pour enlever le couvercle de la pile.

Figure 2. Vue avant, clavier découvert

  1. Écran d'affichage
  2. Clavier.
  3. Étui protecteur.
  4. L'étui protecteur s'enlève à partir de ce niveau pour découvrir le clavier.

Figure 3a. L'Organiseur vu du dessus

  1. Écran d'affichage,
  2. Accès au port d'extension.

Figure 3b. Mise en place de la pile


CHAPITRE 2

PRISE DE CONTACT

MISE EN PLACE DE LA PILE

Vous pouvez utiliser n'importe quelle pile de 9 Volts, format PP3, pour faire fonctionner votre Organiseur. En revanche, si vous avez l'intention de vous en servir pendant de longues périodes, il vaut mieux choisir des piles alcalines, particulièrement si vous équipez la machine de Datapaks.

Saisissez l'étui protecteur (fig. 2.3) juste au-dessous de la ligne de séparation (fig. 2.4) et tirez-le vers le bas jusqu'à ce qu'il se dégage complètement du reste de l'Organiseur. A l'arrière de la machine figure une languette que vous devez tirer vers vous pour retirer le couvercle de la pile. Enlevez-le pour découvrir le connecteur de la pile sur le côté gauche du compartiment.

Pour mettre la pile en place, glissez-la dans l'ouverture en vérifiant que les deux connecteurs au sommet de la pile s'encastrent bien complètement dans celui de la machine. Si la pile n'entre qu'à moitié, c'est que vous la mettez dans le mauvais sens. Changez-lui de côté de façon à ce que l'autre contact métallique s'engage en premier dans le connecteur, et réessayez.

Pour remettre le couvercle en place, introduisez le rebord dans la rainure prévue à cet effet au bas du compartiment, puis poussez-le jusqu'à qu'il s'encastre parfaitement. Votre Organiseur est maintenant prêt à fonctionner.

CHANGEMENT DE LA PILE

Lorsque la pile s'affaiblit, le message PILE FAIBLE s'affiche sur l'écran de l'Organiseur pour vous en avertir. Il reste à l'écran pendant quatre secondes puis la machine s'éteint automatiquement. Vous devez remplacer la pile avant de pouvoir vous en resservir.

Si vous avez commencé à sauvegarder des données dans un Datapak et que la pile s'affaiblit, la machine finit de sauvegarder l'enregistrement en cours avant d'afficher le message PILE FAIBLE et de s'éteindre.

Pour sauvegarder vos données en toute sécurité dans l'agenda ou dans le fichier de données principal de l'Organiseur par exemple, vous devez vous assurer que l'appareil est équipe d'une pile en bonne condition.

Avant de changer la pile, vérifiez tout d'abord que l'ordinateur est bien éteint. Si ce n'est pas le cas, toutes les données conservées en mémoire interne seront irrémédiablement perdues dès que vous enlèverez la pile. Pour ouvrir le compartiment de la pile situé en bas de la machine, procédez comme nous l'avons vu plus haut. Pour remplacer la pile usée par une neuve, vous disposez d'un certain délai au terme duquel les données commencent à s'effacer en mémoire de l'Organiseur. Par contre, vous ne risquez pas de perdre les informations enregistrées sur les Datapaks.

Si vous ne remplacez pas la pile usée par une neuve au bout de 30 secondes, l'horloge système que vous avez mise à l'heure au moyen de la fonction DATE du menu principal se remet à zéro. Vous pourrez la remettre à l'heure une fois la pile en place et vous ne perdrez pas de données.

En revanche, vous perdez tout le contenu de la mémoire si vous n'installez pas de pile neuve 90 secondes après avoir retiré l'ancienne.

Vous pouvez aussi brancher la machine sur secteur par l'intermédiaire de l'adaptateur Psion jusqu'à ce que vous changiez la pile, afin de ne pas interrompre l'alimentation de l'Organiseur et de pouvoir mettre une pile neuve en place à un moment plus opportun, sans perdre quoi que ce soit.

MISE EN MARCHE

Appuyez sur la touche ON (marche/effacement) située en haut et à gauche du clavier. Le MENU, c'est-a-dire la liste des options dont vous disposez, doit s'afficher sur l'écran. Si ce n'est pas le cas, ou si l'écran est difficile à lire, réglez le contraste à l'aide de la molette qui se trouve sur le côté droit du boîtier de l'appareil. Essayez plusieurs réglages pour trouver celui qui vous convient le mieux.

CLAVIER

Avant de poursuivre, consacrez quelques instants a l'étude du clavier. La plupart des touches comportent deux annotations : une située directement sur le dessus de la touche et l'autre, au-dessus.

Les touches alphabétiques affichent normalement la lettre majuscule qui leur est associée sur l'écran. Un curseur clignotant signale l'endroit où la lettre va apparaître.

Lorsque l'Organiseur fonctionne, le curseur clignote continuellement se présentant tantôt sous forme de bloc, tantôt sous forme de trait positionné au- dessous d'une lettre.

Pour accéder aux symboles et numéros situés au-dessus des touches, il vous suffit d'appuyer sur la touche SHIFT (majuscule) tout en frappant le caractère choisi. Remarquez que lorsque vous enfoncez la touche SHIFT, le curseur cesse de clignoter et se présente sous forme de trait plein positionné au- dessous d'une lettre.

Vous pouvez 'verrouiller le clavier pour n'obtenir que des chiffres et des symboles en maintenant la touche SHIFT enfoncée tout en pressant (num), ce qui vous évite de devoir appuyer constamment sur la touche SHIFT. Cette fonction est particulièrement utile pour les longues séries de chiffres. Pour repasser en mode majuscules normal, il suffit de répéter cette opération.

Pour obtenir des minuscules, maintenez la touche SHIFT enfoncée et frappez la touche curseur . Pour en revenir au mode majuscules, répétez la même opération.

Toutes les touches de la rangée supérieure du clavier, et certaines touches de la dernière rangée, sont différentes des autres dans la mesure où elles n'affichent pas de caractères lorsqu'elles sont actionnées. Elles sont toutes décrites en détail ci-dessous.

Touche ON

Cette touche est située au coin supérieur gauche du clavier. Elle sert à allumer l'ordinateur et à sortir des différentes fonctions sélectionnées.

Touche EXE

Cette touche est située au coin inférieur droit du clavier. Elle sert à confirmer une sélection ou à terminer une ligne de saisie sur l'Organiseur.

Touches du curseur

Ces quatre touches fléchées sont situées dans la première rangée du clavier. Elles servent a positionner le curseur sur les différents enregistrements mémorisés dans l'Organiseur. Elles jouent également d'autres rôles dans les diverses fonctions de la machine.

Touche SHIFT

Elle correspond à la touche majuscule des claviers de taille normale et permet d'accéder aux caractères représentés au- dessus des différentes touches (chiffres, opérateurs arithmétiques et autres caractères spéciaux).

Touche DEL

Il s'agit de la touche d'effacement qui sert à supprimer les caractères tapés au clavier. Certaines fonctions de l'Organiseur y font également appel.

MENU PRINCIPAL

Au départ, l'écran se présente comme suit :

RECH SAUV AGENDA CALC PROG EFFACE

Sur la première lettre du premier mot affiché figure un bloc clignotant appelé le curseur. Vous pouvez le déplacer en appuyant sur les quatre touches fléchées de la première rangée du clavier. Elles sont appelées les touches du curseur.

EXPLORATION DU MENU

Lorsque vous appuyez sur la touche ou du curseur, le curseur clignotant se positionne sur la première lettre e option suivante (ou précédente) du menu. Continuez à appuyer sur la même touche et vous verrez que le curseur se déplace sur toute la largeur de l'écran puis passe à la ligne suivante. Positionnez-le sur la dernière option disponible sur l'écran et frappez la touche du curseur. La ligne suivante du menu apparat alors à l'écran.

Les touches et du curseur vous permettent d'explorer le menu ligne par ligne, au lieu d'option par option. Lorsque vous arrivez à la dernière option du menu, FIN, il vous suffit de frapper une fois de plus sur la touche ou pour réafficher la première ligne du menu, c'est-à-dire la ligne de départ.

Lorsque vous allumez votre Organiseur, vous avez accès aux options suivantes :

RECH RECHERCHE - Cette option vous permet de retrouver un enregistrement que vous avez sauvegardé précédemment et/ou de l'éditer en indiquant tout simplement un aspect de son contenu.
SAUV SAUVEGARDE - Cette option enregistre les informations dans la mémoire interne de l'Organiseur ou sur un 'Datapak' amovible.
AGENDA Cette option assure toutes les fonctions habituelles d'un agenda, et peut aussi déclencher une alarme pour les rendez-vous qui y sont mémorisés ; listage des rendez-vous mémorisés ; recherche des rendez-vous mémorisés.
CALC CALCULATRICE - Option de calcul de permettant d'exploiter les fonctions numériques de l'OPL (voir ci-dessous) et comprenant dix mémoires.
PROG PROGRAMME - Ce langage de programmation complet appelé OPL (abréviation d'Organiseur Programming Language ou, en français, langage de programmation de l'Organiseur) vous servira à composer des programmes pour vos applications spécialisées.
EFFACE Cette option vous permet d'effacer des enregistrements en mémoire de l'Organiseur ou sur un Datapak.
ALARME Grâce à cette option, vous pourrez programmer jusqu'à huit alarmes qui se déclencheront une seule fois, toutes les heures, une fois par jour ou une fois par semaine selon votre choix.
DATE HORLOGE - Il s'agit d'une horloge en temps réel (heure, jour, date, mois et année) restant constamment en mémoire. Elle sert aussi à programmer les alarmes et est nécessaire aux fonctions du langage de programmation.
INFO INFORMATION - Cette option vous donne une description complète du volume de mémoire utilisé par l'agenda, de l'espace disponible sur les Datapaks et de la quantité de mémoire interne inutilisée.
COPIE Cette fonction sert à recopier les informations en mémoire sur Datapak, ou d'un Datapak à un autre, ou encore de charger en mémoire des données enregistrées sur Datapak.
RAZ REMISE A ZERO - il s'agit, en quelque sorte, d'un 'démarrage à froid' qui efface toutes es informations stockées en mémoire interne.
FIN ARRÊT - Pour éteindre votre Organiseur.

SÉLECTION D'UNE OPTION

Maintenant que nous avons fait le tour des options disponibles dans le menu principal, il nous reste à savoir comment les sélectionner. Il existe deux méthodes pour y parvenir. Au bas du clavier figure une touche portant l'annotation EXE (abréviation d'EXEcute). C'est cette touche qui va indiquer a l'Organiseur que vous avez terminé votre saisie ou que vous souhaitez sélectionner une des options qui vous sont offertes.

Pour sélectionner une option du menu, il suffit de positionner le curseur sur la première lettre de cette dernière à l'aide des touches du curseur et d'appuyer ensuite sur EXE. La seconde méthode consiste à frapper la touche correspondant à la première lettre de l'option choisie. Pour sélectionner l'horloge par exemple, c'est-à-dire l'option DATE du menu, appuyez sur la touche D. Le curseur se place automatiquement sur cette option et l'Organiseur l'exécute directement.

Il arrive parfois que plusieurs options du menu commencent par la même lettre. Dans ce cas, le curseur passe au mot suivant commençant par cette lettre à chaque fois que vous frappez la touche correspondante.

Si vous réappuyez sur cette même touche alors que vous avez atteint la dernière option commençant par la lettre qui lui est associée, la première option se réaffiche.

Une fois le curseur positionné sur l'option choisie, frappez EXE pour afficher le menu qui lui est associé.

Note: Si vous remarquez que l'une des options, comme "RECH", a disparu du menu principal, vous l'avez sans doute supprimée en pressant la touche DEL. Cette caractéristique, ainsi que la méthode pour replacer les options du menu, est décrite dans le Chapitre 16.


CHAPITRE 3

L'HORLOGE

Sélectionnez l'option DATE du menu en procédant comme indiqué dans le chapitre de Prise de contact, en appuyant sur la touche D ou en positionnant le curseur sur le 'D' de DATE à l'aide des touches du curseur avant de frapper EXE.

La date, le jour et l'heure s'affichent alors sur l'écran dans le format suivant :

MER 1 JAN 1986  00:03:06

POUR METTRE L'HORLOGE A L'HEURE

Lorsque vous introduisez pour la première fois une pile dans l'ordinateur. l'horloge n'est naturellement pas a l'heure et indique 00:00:00 le 1er janvier 1986. Pour régler l'heure et la date, appuyez sur la touche MODE qui positionne le curseur sur le jour du mois. Vous pouvez ensuite le rectifier en appuyant sur la touche du curseur. Vous voyez que le chiffre indiqué augmente d'une unité. Continuez à appuyez sur cette touche jusqu'à ce que vous obteniez la date correcte.

Il est à noter que le jour de la semaine change automatiquement en fonction de la date choisie.

Pour régler le mois, l'année et l'heure, positionnez le curseur à l'endroit voulu avec les touches et , puis pressez les touches et pour augmenter le chiffre indiqué pour l'heure ou la date. L'heure est affichée en format de 24 heures, secondes y comprises, par conséquent 4h30 de l'après- midi correspondra à 16:30:00.

Lorsque vous avez obtenu l'heure et la date correctes, appuyez sur EXE pour supprimer le curseur, suivi de ON pour repasser au menu principal.

Maintenant que vous avez réglé la date et l'heure, vous pouvez les consulter en sélectionnant DATE sur le menu principal en procédant comme d'habitude. L'horloge et le calendrier s'affichent automatiquement. Pour repasser au menu principal, il suffit d'appuyer sur la touche ON.


CHAPITRE 4

COMMENT ÉTEINDRE L'APPAREIL

Sélectionnez l'option d'arrêt FIN du menu principal en appuyant sur la touche F ou à l'aide des touches du curseur et de EXE. L'affichage s'efface et la machine s'éteint. Pour la remettre en marche, il vous suffit de frapper ON. L'Organiseur affiche alors le menu principal dont vous pouvez ensuite sélectionner les options.

ARRÊT AUTOMATIQUE

Si vous laissez l'Organiseur en marche pendant plus de cinq minutes sans appuyer sur aucune des touches, il s'éteint automatiquement pour économiser les piles.

Ne vous inquiétez pas si cela vous arrive ! Vos données ne disparaîtront pas, même si vous étiez en train d'éditer un enregistrement ou, pire encore, de taper un enregistrement particulièrement long. Il vous suffit d'appuyer une seule fois sur ON pour que l'Organiseur se rallume et affiche exactement la même chose qu'au moment où il s'est éteint. Toutes vos données sont intactes et vous pouvez reprendre les opérations là où vous les avez laissées.


CHAPITRE 5

SAUVEGARDE ET RECHERCHE DE DONNÉES

Une des principales fonctions de l'Organiseur est de sauvegarder et de rechercher de larges volumes de données dans le format que vous avez choisi. Vous pouvez exécuter ces procédures à partir du menu principal ou d'un programme enregistré en mémoire. La deuxième méthode est traité en Section deux qui décrit en détail le langage de programmation de l'Organiseur, l'OPL.

SAUVEGARDE DE DONNEES

Supposons que vous souhaitiez sauvegarder les noms, adresses et numéros de téléphone qui vous sont les plus utiles. Voici un exemple de rubrique ou d'enregistrement :

Napoleon Bonaparte, Empereur Tel 16 (1) 00 00 00 00 Hotel des Invalides Paris

Si le menu principal n'est pas affiché, appuyez une ou deux fois sur la touche ON l'obtenir. Sélectionnez ensuite l'option SAUV de ce menu à l'aide de la touche du curseur et de EXE, ou en frappant la touche S. Le message suivant apparaît alors à l'écran :

SAUVE A:  

Vous pouvez ensuite taper les informations sur Napoléon Bonaparte. Lorsque vous tapez le prénom, les lettres s'affichent à droite du message SAUVE A: sur l'écran. Si le nom est trop long pour tenir sur une seuls ligne, la ligne entière défile vers la gauche pour vous permettre de terminer votre saisie.

SAUVE A:NAPOLEON BONA_    

Après avoir tapé et le nom et la profession, vous souhaiterez probablement indiquer le numéro de téléphone sur une autre ligne. Appuyez donc sur la touche du curseur pour positionner ce dernier sur la ligne suivante et tapez ensuite le numéro de téléphone. En changeant de ligne, vous pouvez disposer les informations de la façon qui vous convient le mieux.

Il est également préférable de diviser les informations en un certain nombre de lignes relativement courtes plutôt que de taper une longue ligne. Lorsque vous consultez ces informations par la suite, vous pouvez ainsi lire deux lignes à la fois. Dans notre exemple, vous pouvez voir simultanément le nom de Napoleon Bonaparte et son numéro de téléphone.

Répétez cette procédure jusqu'à ce que vous ayiez tapé toute l'adresse. Si le résultat vous convient, appuyez sur EXE pour sauvegarder les informations en mémoire. Vous pourrez les consulter au moment voulu au moyen de l'option de recherche RECH (voir ci-dessous).

Il est parfois nécessaire d'éditer les informations avant de les sauvegarder. Vous y parviendrez en utilisant les touches du curseur et la touche d'effacement DEL.

Remarque. La touche DEL efface le caractère situé à gauche du curseur. Vous pouvez toutefois supprimer le caractère sur lequel est positionne le curseur en maintenant la touche SHIFT enfoncée tout en appuyant sur DEL. Le reste du texte à droite se déplace a une position pour combler l'espace laissé par le caractère effacé.

Pour raccorder deux lignes en une seule, il vous suffit de relier la seconde à la première en plaçant le curseur sur le premier caractère de la seconde ligne et en appuyant une seule fois sur la touche DEL. En revanche, la réciproque n'est pas vraie. Il n'est pas possible de diviser une ligne en deux lignes séparées, ni d'insérer une nouvelle ligne au milieu d'un enregistrement Une fois votre enregistrement terminé, assurez-vous que vous n'avez pas commis de faute et qu'il contient bien ce que vous souhaitiez y mettre, puis appuyez sur la touche EXE. L'enregistrement est alors sauvegardé en mémoire de l'Organiseur et le menu principal s'affiche.

Si vous souhaitez abandonner l'enregistrement que vous avez commencé sans le sauvegarder en mémoire ou sur un Datapak, il vous suffit de frapper la touche ON. Le menu principal s'affiche sur l'écran et l'enregistrement est supprimé.

Chaque enregistrement peut contenir jusqu'à 16 lignes de texte, ou 254 caractères. Il n'existe aucune restriction quant au nombre de caractères par ligne, à condition bien sûr qu'il n'excède pas la limite générale que nous venons de voir.

Si vous avez enfiché un Datapak dans une des fentes prévues à cet effet au dos du boîtier, vous avez possibilité de sauvegarder l'enregistrement sur ce dernier. La touche MODE vous permet de sélectionner le Datapak voulu avant de commencer à taper les informations, ou à n'importe quel moment au cours de la saisie.

Par exemple, après avoir termine de taper les informations composant votre enregistrement, mais avant d'appuyer sur EXE, frappez la touche MODE pour afficher la liste des périphériques disponibles.

La mémoire interne de l'Organiseur est traitée de la même façon que les Datapaks (si la machine en est équipée) et est appelée unité A: (par opposition aux Datapaks qui sont eux représentés par B: et C:). Comme la mémoire interne est disponible en permanence, vous disposez toujours d'au moins une unité de destination pour vos données, ou d'une unité de source si vous recherchez des informations. Par conséquent, si l'unité en vigueur est A:, l'écran doit se présenter de la manière suivante une fois que vous avez terminé d'entrer vos informations :

SAUVE A:NAPOLEON Tel (1) 45 74 29

Si vous appuyez sur la touche MODE l'écran change légèrement à condition bien sûr que votre Organiseur soit équipé d'un Datapak.

SAUVE B:NAPOLEON Tel (1) 45 74 29

Par contre, si votre Datapak est installé dans la seconde tente (cette du bas), l'affichage vous indique que vous sauvegardez votre enregistrement sur C: au lieu de B:.

RECHERCHE DE DONNEES

Si le menu principal n'est pas affiché, appuyez sur ON une ou deux fois pour l'obtenir. Sélectionnez ensuite RECH avec la touche du curseur pour que ce dernier se positionne sur le R de RECH puis frappez EXE, ou commentez-vous d'appuyer sur la touche R. L'écran s'efface et le message suivant s'affiche :

RECH A:  

Pour rechercher une rubrique, il vous suffit de taper trois ou quatre caractères qui permettront à l'Organiseur d'identifier l'enregistrement voulu. Par exemple, si vous avez sauvegardé l'enregistrement sur Napoleon Bonaparte et que vais souhaitez maintenant le consulter, tapez BONA. Sur l'écran s'affiche alors :

NAPOLEON BONAPAR Tel (1) 45 74 29

L'Organiseur est bien plus souple d'emploi qu'un fichier ou un répertoire téléphonique, car il peut toujours accéder à l'enregistrement voulu à condition que vous en spécifiez une section, quelle qu'elle soit. A titre d'exemple, les quatre méthodes suivantes vous permettront de retrouver l'enregistrement sur Napoléon Bonaparte.

RECH A:BONA RECH A:EMPE RECH A:NAPO RECH A:PARI

En d'autres termes, vous pouvez accéder à tout un enregistrement en tapant uniquement une partie du prénom, du nom de famille, de la profession ou n'importe quelle partie de l'adresse.

Pour afficher une à une les autres lignes de l'enregistrement appuyez à chaque fois sur la touche du curseur, jusqu'à ce que vous arriviez à la dernière. Il arrive parfois qu'un enregistrement contienne une ligne de plus de 16 caractères qui ne peut donc être affichée dans sa totalité.

Si un tel enregistrement ne contient qu'une seule ligne, cette dernière défile automatiquement de droite à gauche sans arrêt pour vous permettre de lire progressivement son contenu. Vous pouvez la faire défiler plus rapidement en appuyant sur la touche du curseur et atteindre ainsi plus vite la fin de la ligne.

En revanche, lorsque l'enregistrement contient deux lignes ou plus, vous pouvez lire les lignes contenant plus de 16 caractères à l'aide des touches et du curseur. Les lignes dépassant 16 caractères défilent toujours automatiquement sur l'affichage. En général, de telles lignes défilent toujours sur la seconde ligne de l'affichage, excepté lorsqu'il s'agit de la première ligne de l'enregistrement qui défile naturellement sur la première ligne de l'écran.

Vous pouvez faire défiler les lignes en sens inverse si vous le souhaitez en vous servant des touches du curseur. Par exemple, si la ligne défile de droite à gauche, appuyez sur la touche une première fois pour la figer, puis une seconde pour la faire défiler en direction opposée. La touche vous permettra ensuite d'inverser le procédé.

Si l'enregistrement que vous présente l'ordinateur n'est pas celui que vous recherchez, pressez EXE pour afficher l'enregistrement suivant.

Lorsqu'il n'existe aucun enregistrement correspondant aux caractères spécifiés, ou lorsque vous arrivez au dernier enregistrement correspondant, le message suivant s'affiche :

**************** ** FIN DU PACK *

pour vous en prévenir. Si vous appuyez sur EXE à ce niveau, le premier enregistrement trouve se réaffiche. Pour repasser au menu principal, il vous suffit de frapper une seule fois ON.

Vous n'avez pas à vous préoccuper des majuscules et des minuscules dans les opérations de recherche. L'Organiseur retrouve vos enregistrements même si la chaîne spécifiée à la suite du message RECH est en majuscules et l'enregistrement en minuscules, et vice versa. En fait, vous pouvez adopter n'importe quelle combinaison de majuscules et de minuscules dans vos enregistrements. L'ordinateur les retrouve quand même en quelques instants.

Par exemple, ANN à la suite de RECH vous permettra de retrouver Anne tout comme Marianne.

Pour parcourir tous les enregistrements que vous avez sauvegardés, il vous suffit de sélectionner RECH à partir du menu principal en procédant comme d'habitude, avant d'appuyer sur EXE sans préciser quoi que ce soit. Le premier enregistrement du fichier principal s'affiche alors, suivi des autres enregistrement successifs à chaque fois que vous pressez EXE.

Le message FIN DU PACK s'affiche après le dernier enregistrement et vous pouvez revenir au début en appuyant alors sur EXE.

Comme toujours, la touche ON vous ramène au menu principal

EDITION D'ENREGISTREMENTS

Vous avez parfois besoin de modifier vos enregistrements, par exemple lorsque quelqu'un change d'adresse ou de numéro de téléphone. Les mises à jour ne posent aucun problème sur l'Organiseur.

Lorsque vous trouvez un enregistrement, il se présente de la manière suivante aux l'écran :

NAPOLEON BONAPAR Tel (1) 45 74 29

Pour l'éditer, appuyez sur la touche MODE. L'écran affiche alors :

SAUVE A:NAPOLEON Tel (1) 45 74 29

Les touches du curseur vous permettent ensuite d'ajouter et d'effacer du texte dans l'enregistrement pour le modifier de la façon dont vous le souhaitez. Vous pouvez modifier n'importe quelle ligne, et même en rajouter de nouvelles à la fin. Il n'est cependant pas possible d'insérer de nouvelles lignes entre deux anciennes.

Si l'enregistrement dans lequel vous vous trouvez ne vous sert plus à rien, vous n'avez qu'à frapper ON pour le supprimer. L'enregistrement disparaît entièrement et l'écran se présente de la manière suivante :

SAUVE A:  

En éditant un enregistrement particulièrement long, il peut vous arriver d'appuyer sur cette touche par accident. Ne vous en inquiétez pas. Vous pourrez le récupérer tel qu'il se présentait avant que vous n'appuyiez sur ON en pressant une deuxième fois cette même touche. Vous repassez alors au menu principal et, pour retrouver votre enregistrement intact, il vous suffit de relancer la fonction de recherche. Mais si vous souhaitez véritablement effacer tout un enregistrement, appuyez sur ON puis sur EXE pour le supprimer de la mémoire.

Le reste du temps, frappez EXE dès que vous êtes satisfait de votre travail d'édition pour sauvegarder l'enregistrement complet dans la mémoire en vigueur. L'Organiseur efface alors l'ancien enregistrement et réaffiche le menu principal.

COPIER DES ENREGISTREMENTS SUR DES UNITÉS DIFFÉRENTES

Pour copier un enregistrement d'une unité sur une autre, trouvez-le tout d'abord à l'aide de l'option RECH, puis pressez la touche MODE pour activer l'option SAUV. Vous pouvez à ce moment, si vous le désirez, modifier l'enregistrement. Pressez alors à nouveau la touche MODE, et vous verrez le nom e l'unité changer à l'écran, comme par exemple de A: à B:. Lorsque vous avez sélectionné l'unité sur laquelle vous voulez sauver, pressez EXE, et les données seront alors enregistrées sur la nouvelle unité. L'enregistrement se trouvant sur l'unité d'origine ne sera pas modifié.


CHAPITRE 6

EFFACEMENT DES DONNÉES

Il est parfois nécessaire d'effacer un ou plusieurs enregistrements dans un fichier. Pour y parvenir, sélectionnez l'option d'effacement EFFACE du menu principal en procédant comme d'habitude. Le message suivant s'affiche alors sur l'écran :

EFFACE A:  

Si vous frappez ensuite EXE, l'Organiseur recherche le premier enregistrement du fichier en vigueur et l'affiche dans sa totalité. Vous pouvez alors l'examiner à l'aide des touches du curseur.

Pour effacer l'enregistrement affiché sur l'écran, appuyez sur la touche d'effacement DEL. La première ligne de l'écran reste la même mais la seconde change :

EFFACER O/N

En appuyant sur la touche O, vous confirmez l'effacement et l'enregistrement suivant apparaît à l'écran. En revanche, si vous ne souhaitez pas supprimer l'enregistrement affiché, pressez N. L'enregistrement suivant s'affiche alors. Vous pouvez parcourir les différents enregistrements en appuyant à chaque fois sur EXE.

Vous pouvez également spécifier une chaîne de caractères à la suite du message EFFACE pour effacer tous les enregistrements contenant cette dernière. Si l'ordinateur ne trouve aucun enregistrement contenant cette chaîne, il affiche le message FIN DU PACK.

Pour repasser au menu principal, une seule pression sur la touche ON suffit.


CHAPITRE 7

DATAPAKS

UNITÉS

A l'arrière de l'Organiseur figurent deux unités à semi-conducteurs (c.f. chapitre 1). Si vous venez d'acheter votre appareil, ces deux unités sont recouvertes de couvercles protégeant les connections électriques internes. C'est pour cette même raison qu'il doit toujours y avoir un 'Datapak' (ou une cartouche programme) dans chaque unité. Si ce n'est pas le cas, vous devez remettre en place les couvercles protecteurs.

CHANGEMENT DE DATAPAK

Les Datapaks sont faciles à enficher et à débrancher grâce à leur revêtement externe spécial. Faites bien attention de ne pas appuyer sur les touches lorsque vous mettez en place un Datapak ou que vous l'enlevez. (Pour éviter de le faire, il suffit de poser l'appareil sur une surface plate, clavier vers le bas, pour protéger les touches étant donné que le clavier est légèrement en retrait.)

Pour débrancher un Datapak, appuyez sur la partie rainurée et faites la glisser vers vous pour dégager l'ensemble de l'unité. Pour le remettre en place. poussez-le à l'intérieur de l'unité choisie jusqu'à ce qu'un déclic retentisse.

L'étiquette blanche collée sur le Datapak vous permet d'y inscrire le contenu pour pouvoir l'identifier par la suite.

Les Datapaks sont disponibles en différentes capacités : 8.000, 16.000. 32.000 et 64.000 caractères environ (128.000 sur le modèle XP). Vous pouvez donc choisir le modèle qui vous convient le mieux en fonction de l'application à laquelle vous le destinez. Vous arriverez ainsi à vous créer une véritable bibliothèque dont chaque Datapak couvrira un domaine diffèrent. Un Datapak suffit, par exemple, à contenir tous les noms, adresses et numéros de téléphone dont vous avez besoin (plus de 2.000 entrées de 30 caractères environ dans chaque Datapak de 64 Ko).

Lorsque vous utilisez pour la première fois un Datapak, l'Organiseur s'aperçoit qu'il s'agit d'une cartouche vierge et affiche le message suivant :

CREATION DE B:   ATTENDEZ SVP

En fait, il vérifie la capacité de ce nouveau Datapak et s'assure qu'il est bien entièrement vierge. Au bout de deux à trois secondes, l'écran s'efface pour vous laisser continuer l'opération que vous avez commencé plus haut, une sauvegarde par exemple ou une recherche. Vous pouvez ensuite opter pour le nouveau Datapak que vous venez d'installer ou appuyer sur la touche MODE jusqu'à ce que l'unité que vous souhaitez utiliser s'affiche sur l'écran.

Par exemple, si vous venez de saisir en enregistrement à la suite du message SAUVE A: et que vous souhaitez installer un nouveau Datapak dans l'unité B: pour y sauvegarder l'enregistrement en question, enlevez le couvercle protecteur à l'arrière du boîtier (celui de l'unité B: bien entendu) et insérez la cartouche. Le message :

SAUVE A:NAPOLEON Tel (1) 45 74 29

reste affiché sur l'écran. Appuyez sur MODE:

CREATION DE B:   ATTENDEZ SVP

Au bout de quelques instants, l'écran change :

SAUVE B:NAPOLEON Tel (1) 45 74 29

Frappez EXE pour sauvegarder les informations contenues dans votre enregistrement sur le Datapak en vigueur, c'est-à-dire celui qui est indiqué sur l'écran.

L'Organiseur ne vérifie la taille d'un Datapak que lors de sa première utilisation. Par conséquent, la prochaine fois, vous pourrez vous en servir immédiatement et continuer directement les opérations commencées.

La plupart des fonctions du menu principal, telles que RECH ou SAUVE, peuvent être exécutées en mémoire interne ou sur l'un des deux Datapaks. L'appareil les identifient respectivement par les lettres A:, B: et C:.

L'Organiseur vérifie si les unités sont équipées de Datapaks et, s'il y a lieu, les offre en option au moment voulu.

Une fois que vous avez commencé à travailler sur une unité particulière, l'Organiseur assume automatiquement que vous souhaitez continuer a l'utiliser jusqu'a ce que vous en choisissiez une autre.

Si votre Organiseur n'est pas équipé de Datapak, la touche MODE n'a aucun effet lorsque vous essayez de sauvegarder ou de rechercher des informations. L'unité A: demeure l'unité en vigueur.

COMPARAISON MEMOIRE-DATAPAKS

Note du traducteur: depuis la réalisation de ce manuel, un nouveau support de stockage, le RAMPAK, est disponible pour l'Organiseur II modèle XP uniquement. Les RAMPAK se présentent exactement comme les DATAPAK, sous forme de cartouches enfichables et amovibles (ils ont leur propre petite pile), mais ils se comportent comme la mémoire interne au niveau du stockage des données. Leur capacité mémoire est de 32 Ko. Pour plus d'informations concernant les RAMPAK, reporter vous à la notice fournie avec le produit.

La mémoire interne de l'Organiseur diffère des Datapaks à deux points de vue. La différence la plus évidente est, bien entendu, qu'il n'est pas possible de retirer la mémoire interne comme on débrancherait un Datapak. Mais le second aspect est bien plus important.

Si vous avez sauvegardé plusieurs enregistrements en mémoire interne (unité A:) et que vous en effacez un ou plus, ces enregistrements sont véritablement supprimés de la mémoire, et l'espace qu'ils occupaient est ensuite disponible pour d'autres.

La situation est différente pour les Datapaks. Lorsque vous y effacez un enregistrement, vous obtenez à peu près le même effet qu'en barrant un paragraphe dans un livre. L'enregistrement reste sur le Datapak et y occupe de l'espace mais vous ne pouvez plus y accéder.

L'avantage des Datapaks est que vous pouvez en utiliser autant que vous le souhaitez pour créer une bibliothèque d'information, en attribuant un Datapak différent à chaque sujet. Ils peuvent être transportés facilement et sans aucun risque, et ne sont pas affectés par l'usure des piles.

En sauvegardant des données sur les Datapaks pour les effacer par la suite, vous utilisez l'espace disponible qui finira éventuellement par s'épuiser. Il est donc conseillé de conserver à leur strict minimum les opérations de sauvegarde et d'effacement qui ne sont pas véritablement nécessaires.

Mais même en faisant très attention, tous les Datapaks finissent par se remplir. Si vous essayez d'y sauvegarder des informations, le message PACK PLEIN s'affiche sur l'écran de l'Organiseur. Il apparaîtra à chaque tentative subséquente.

Bien que les Datapaks conservent les informations enregistrées de manière permanente, il est possible d'en effacer tout le contenu grâce a une opération appelée 'formatage'. Elle est réalisée sur une machine conçue à cet usage, le 'Psion Formatter' ou Formateur de Psion, par exposition contrôlée aux ultra- violets.

Les Datapaks reformatés sont entièrement vierges et, lorsque vous les connectez a la machine, cette dernière en détermine le volume tout comme s'il s'agissait de Datapaks neufs.

Il est à noter que l'étiquette blanche collée au-dessous des Datapaks protège ces derniers d'une exposition excessive à la lumière et doit être retirée avant d'amorcer le formatage.

Pour mettre fin eu problème des Datapaks saturés contenant des informations qui, bien qu'elles aient été 'effacées', occupent de l'espace sur la cartouche, il suffit de copier les autres données sur une cartouche différente. Pendant l'opération de copie, l'Organiseur ignore les enregistrements et fichiers qui ont été effacés, et se contente de reproduire ceux qui sont encore valables. Vous pouvez ensuite reformater l'ancien Datapak sur le 'Psion Formatter' puis recommencer à vous en servir comme s'il s'agissait d'un neuf.


CHAPITRE 8

CALCULATRICE

L'option CALC du menu principal sert à réaliser des calculs arithmétiques simples ou complexes selon le cas. Sélectionnez l'option CALC du menu principal a l'aide des touches du curseur et d'EXE, ou en appuyant sur la touche C.

Le message suivant s'affiche alors :

CALC:  

Le clavier passe automatiquement en mode majuscules SHIFT, pour vous permettre d'accéder immédiatement aux touches numériques, sans devoir presser SHIFT.

Les opérateurs arithmétiques de base, +, -, / (division), * (multiplication) et ** (élévation à la puissance) s'utilisent de la même façon que pour les calculs sur feuille. Ils sont toutefois soumis à certaines règles de priorité qui sont décrites dans le chapitre 23.

Vous pouvez maintenant taper une opération sur la première ligne de l'affichage, de la même façon que vous l'écririez. Par exemple, si vous tapez :

4*7/9

et que vous appuyez ensuite sur EXE, vous obtenez le résultat suivant :

4*7/9   =3.111111111111

La chaîne de calcul reste affichée sur la première ligne tandis que la machine affiche le résultat sur la seconde. Si la chaîne de calcul contient plus de 16 caractères, elle se met à défiler de droite à gauche. Il n'existe aucune limite quant au nombre de parenthèses utilisées dans un calcul particulier.

Les résultats affichés ne contiennent que les chiffres significatifs par défaut (12 maximum). Vous pouvez modifier ce nombre lorsque le message CALC est affiché. Il suffit de taper FIX=n, n étant un nombre compris entre 0 et 12. Les résultats affichés par la suite contiendront le nombre de chiffres significatifs que vous avez choisi. Pour repasser à la valeur par défaut, tapez FIX= sans préciser de valeur,

A titre d'exemple, si vous spécifiez FIX=3 à la suite du message CALC, vous obtenez comme résultat 3.111 au calcul effectué plus haut.

FONCTIONS OPL

Dans vos calculs, vous pouvez vous servir des fonctions mathématiques qui font partie du langage de programmation de l'Organiseur, l'OPL (voir chapitre 34). Elles offrent en effet des possibilités bien plus variées qu'une calculatrice ordinaire. En voici un exemple :

SIN(PI)/(3.8-COS(1.2))

Cette expression se limite aux fonctions SIN, COS et PI mais vous pouvez utiliser n'importe quelle fonction numérique. Puis, lorsque vous appuyez sur la touche EXE, le résultat précédé du signe égal s'affiche sur la ligne du bas.

Si vous commettez une erreur en tapant votre chaîne de calcul, l'Organiseur vous la signale en affichant un message d'erreur. Pour positionner le curseur sur l'erreur, il vous suffit d'appuyer sur la touche SPACE. L'expression se réaffiche et le curseur clignote sur le premier caractère que l'appareil ne reconnaît pas.

C'est par exemple le cas lorsque vous tapez un caractère qui ne représente pas le nom d'une procédure enregistrée sur l'unité en vigueur et qui ne constitue pas non plus un opérateur arithmétique, comme dans l'exemple suivant :

10*P/(22/7)

Si vous tapez cette expression, le curseur se met à clignoter sur le P car la calculatrice ne reconnaît pas cette lettre.

Remarque. La touche pour cent (%) de l'Organiseur ne fonctionne pas comme celle des calculatrices ordinaire. Elle se contente d'afficher le caractère % qui est parfois nécessaire dans le langage de programmation de l'Organiseur, l'OPL. Pour calculer un pourcentage, il faut donc taper l'expression entière.

Ainsi donc, pour savoir ce que font 37% de 250, vous devez spécifier :

37/100*250, ou .37*250

MÉMOIRES DE LA CALCULATRICE

L'Organiseur contient dix mémoires internes qui ne peuvent être utilisées qu'avec la calculatrice ou en langage OPL.

Elles servent à enregistrer ou à restituer des chiffres qui seront utilisés dans les calculs. Vous pourrez les compléter ou les effacer en partie ou en totalité.

Une fois que vous avez enregistré des chiffres dans ces mémoires, vous pouvez y accéder à partir du langage de programmation et vice versa. Peu importe si vous éteignez l'Organiseur entre temps, les mémoires ne perdent leur contenu que si vous les effacez délibérément ou si vous réinitialisez la machine en lançant l'option RAZ du menu principal.

Vous leur attribuez le même nom sur la calculatrice et dans l'OPL, M0 à M9. que vous pouvez taper en minuscules ou en majuscules.

Pour enregistrer le résultat d'un calcul en mémoire, appuyez sur la touche MODE alors qu'il est encore affiché. L'écran affiche le message suivant :

M: TAPEZ 0-9

Choisissez donc une valeur numérique et pressez la touche correspondante. La première ligne indique alors :

M0: +,-,EXE,DEL

Vous disposez donc de quatre possibilités :

+ Ajouter le résultat obtenu à la mémoire sélectionnée
- Supprimer le résultat obtenu dans la mémoire sélectionnée
EXE Substituer au contenu actuel de la mémoire sélectionnée le résultat obtenu
DEL Remettre le contenu de la mémoire à 0.0.

Appuyez sur la touche correspondant à la fonction choisie, ou sur ON pour en revenir à la calculatrice sans modifier les mémoires. Pendant ce temps, le calcul effectué précédemment est resté affiché sur la première ligne et le résultat sur la deuxième.

EDITION D'UN RÉSULTAT

Vous avez parfois besoin de modifier le calcul que vous venez d'effectuer. pour en changer un paramètre par exemple et voir ce qui se passe dans ce cas là. Il suffit pour cela d'appuyer sur une des touches du curseur, ou sur DEL ou EXE.

Si vous choisissez EXE, le résultat s'efface sur la seconde ligne et vous pouvez éditer l'expression. Les touches et du curseur suppriment également le résultat et vous laissent éditer votre expression, mais le curseur se déplace comme si vous aviez appuyé sur la touche EXE et la touche curseur en question. Par conséquent, si vous pressez la touche du curseur, le résultat disparaît et le curseur se positionne sur le dernier caractère de l'expression.

En revanche, lorsque vous frappez DEL, le résultat disparaît et le dernier caractère de la formule originale est effacé. Il suffit ensuite d'appuyer sur les touches et du curseur pour pouvoir éditer l'expression et calculer le résultat.

Le résultat obtenu peut aussi être utilisé dans le calcul suivant. Il suffit pour cela de sélectionner un des opérateurs (+, -, *, /) pour qu'il s'affiche alors sur la première ligne de l'écran afin de pouvoir figurer dans la prochaine expression de calcul.

Si vous souhaitez effacer la chaîne de calcul en vigueur et/ou le résultat, pressez tout simplement ON. Réappuyez sur cette même touche pour en revenir au menu principal.

UTILISATION DE PROCÉDURES AVEC LA CALCULATRICE

Vous pouvez invoquer des programmes écrits en langage OPL et sauvegardé sur l'unité en vigueur. Pour appeler une procédure, il faut dans certains cas spécifier un ou plusieurs paramètres entre parenthèses. Elles fonctionnent parfois sur une ou plusieurs des mémoires de la calculatrice et produisent une valeur tout comme le ferait une fonction numérique.

Par exemple, si l'unité en vigueur contient un programme appelé FACT: qui détermine la factorielle du nombre qui lui est spécifié, vous pouvez l'incorporer à votre chaîne de calcul en tapant ce qui suit :

587*2.883/(4+fact:(3))

Dans ce cas, la valeur 3 est spécifiée au programme. Le résultat est rajouté à 4 et le reste du calcul est effectué sur la somme ainsi obtenue.

Si la procédure a besoin d'un nombre à virgule flottante - la virgule étant représenté par un point sur l'Organiseur, elle affiche un message d'erreur lorsqu'on lui transmet une valeur entière. C'est par exemple le cas lorsque le paramètre transmis à la routine se présente sous forme d'une expression contenant des valeurs entières mais, une fois déterminée, produit un résultat a virgule flottante. En voici un exemple :

5/3+proc:(8/3)

L'expression indiquée entre parenthèses est évaluée différemment du reste du calcul et est traitée par un mécanisme de transmission de paramètre du langage de programmation de l'Organiseur, l'OPL. Si l'expression ne contient que des nombres entiers, le résultat transmis à la routine sera une valeur entière même si le véritable résultat de l'expression comporte une virgule flottante.

On voit donc que le calcul ci-dessus transmettra la valeur entière 2 à la procédure proc (valeur entière produite par (8/3)), ce qui donnera bien entendu une erreur dans le résultat final.

Pour éviter ce problème dans les procédures exigeant une virgule flottante, il faut obliger l'expression entre parenthèses à produire une valeur réelle en procédant comme suit:

5/3+proc:(8./3)

Cette formule indique à l'Organiseur que le résultat transmis doit comporter une virgule flottante. Dans notre exemple, le résultat réel (2.666...) va être transmis et le résultat final sera donc correct.

Les procédures appelées à partir de la calculatrice ne doivent pas produire de chaîne.


CHAPITRE 9

AGENDA

L'une des applications standards les plus utiles de l'Organiseur est l'AGENDA qui est représenté par l'option AGENDA sur le menu principal. Sélectionnez- la comme de coutume à l'aide des touches du curseur et de EXE ou en frappant la touche D.

L'écran s'efface avant d'afficher la date et l'heure du moment. Les différentes tranches de temps sont séparées de 30 minutes. Le format d'affichage est le suivant :

JAN:30:VEN:17.00

Lorsque vous examinez une tranche de temps pour la première fois, vous n'avez pas eu le temps d'y préciser quoi que ce soit, c'est pourquoi rien ne s'affiche sur la ligne du bas.

Les touches et du curseur permettent de modifier la date. Appuyez sur la touche droite pour faire progresser la date, un jour à la fois, jusqu'à ce que vous parveniez à la fin du mois.

Vous n'avez pas à appuyer constamment sur la touche nécessaire. Il suffit en effet de la maintenir enfoncée pour qu'elle se répète automatiquement. Si vous appuyez sur la touche du curseur alors que le dernier jour du mois est affiché sur l'écran, vous passez automatiquement au premier jour du mois suivant. Pour revenir en arrière, pressez la touche du curseur. De plus, si une fois arrivé au 31 décembre 1986, vous continuez à faire défiler la date, vous passez automatiquement au 1er janvier 1987 et vice versa.

Pour changer l'heure, c'est-à-dire la tranche de temps affichée sur l'agenda, utilisez les touches et du curseur. Par exemple, pour avancer d'une demi-heure, appuyez sur la touche a et pour retarder d'une demi- heure, sur la touche .

L'écran d'affichage fonctionne à la manière d'une feuille de papier divisée en de nombreuses cases, un peu comme les calendriers annuels. L'écran est en fait le marqueur transparent qui peut être déplacé sur toute la largeur de la page, vers le bas et vers le haut, afin d'afficher le contenu d'une case à la fois

MER | JEU | VEN   ------------------+------------------+------------------ JAN:01:MER:08.00 | JAN:02:JEU:08.00 | JAN:03:VEN:08.00  | | Annuler journal   ------------------+------------------+------------------ JAN:01:MER:08.30 | JAN:02:JEU:08.30 | JAN:03:VEN:08.30  | Costume pressing |   ------------------+------------------+------------------ JAN:01:MER:09.00 | JAN:02:JEU:09.00 | JAN:03:VEN:09.00  | | Revision voiture  ------------------+------------------+------------------ JAN:01:MER:09.30 | JAN:02:JEU:09.30 | JAN:03:VEN:09.30  | (A)DENTISTE |   ------------------+------------------+------------------ JAN:01:MER:10.00 | JAN:02:JEU:10.00 | JAN:03:VEN:10.00  | Tel Maman | (A)Orly  

Figure 4 - L'agenda

En parcourant les différentes tranches de temps, vous vous apercevrez que l'Organiseur n'affiche aucun message, ce qui est tout à fait normal puisque vous n'avez encore rien noté dans votre agenda. Pour le faire, il vous suffit de taper directement. Le curseur s'affiche sur la dernière ligne de l'affichage à la suite du message EDIT: et vous pouvez donc entrer votre texte comme vous le feriez sur un agenda normal. Si le texte contient plus de 16 caractères, il se met à défiler vers la gauche comme c'est le cas pour toutes les longues lignes.

Il est préférable de conserver vos notes aussi courtes que possible car elles occupent de l'espace mémoire. De plus, pour pouvoir examiner la totalité d'une ligne de plus de 16 caractères, il faut attendre qu'elle défile sur l'écran. Ceci dit, chaque entrée de l'agenda peut contenir jusqu'à 64 caractères.

ALARMES

Lorsque vous avez terminé votre saisie, appuyez sur la touche EXE. L'Organiseur vous demande alors si vous souhaitez qu'une alarme se déclenche lorsque l'heure choisie approche, en affichant le message suivant :

JAN:30:VEN:17.00 ALARME (O/N)

Si vous ne voulez pas d'alarme, appuyez sur la touche N ou sur ON. Dans le cas contraire, pressez O. Les autres touches n'ont aucun effet. L'écran affiche ensuite :

JAN:30:VEN:17.00 MINUTES : 15

Ce message vous permet de déclencher l'alarme 15 minutes avant l'heure prévue pour ce que vous avez noté sur votre agenda. Par exemple, si vous travaillez juste à côté de chez votre dentiste, il suffira que l'alarme se déclenche cinq ou dix minutes avant le rendez-vous pour vous permettre d'y arriver 'a l'heure. Mais si vous devez aller chercher quelqu'un à l'aéroport, il vous faudra probablement prévoir un délai plus long.

Par défaut, l'Organiseur vous propose de déclencher l'alarme 15 minutes avant l'heure prévue, mais ce chiffre peut naturellement être modifié. Pour augmenter ce délai, appuyez sur la touche du curseur, ou sur la touche pour le réduire. A chaque fois que vous frappez l'une de ces touches, le chiffre affiché change d'une minute et, comme c'était le cas pour les fonctions concernant la date et l'heure, si vous continuez à appuyer sur la touche après avoir atteint zéro, l'Organiseur réaffiche automatiquement 59 minutes, et vice versa.

Après avoir sélectionné le nombre de minutes qui vous convient, appuyez sur EXE. Le texte que vous avez tapé s'affiche alors sur la ligne du bas et un indicateur (la lettre A entre parenthèses) vous signale que vous avez programmé une alarme :

JAN:02:JEU:08.00 (A)Dentiste

Si le texte contient plus de 16 caractères, il se met à défiler sur l'écran, précédé de l'indicateur d'alarme.

CHEVAUCHEMENT DES ALARMES

L'agenda se compose de tranches d'une demi-heure et il arrive donc que deux alarmes se chevauchent, par exemple, lorsque vous programmez une alarme qui doit se déclencher 45 minutes avant votre rendez-vous à dix heures (c'est-à-dire à 09h15), et une autre alarme 15 minutes avant votre rendez-vous de 09h30 (également à 09h15).

Dans ce cas, l'Organiseur déclenche tout d'abord l'alarme associée 'a la première entrée de l'agenda, puis celle associée à la seconde.

L'alarme se déclenche à l'heure prévue en émettant une série de bips sonores et la date et l'heure de ce que vous avez noté sur votre agenda s'affichent sur l'écran, suivies du texte associé. Si ce texte contient plus de 16 caractères, il se met à défiler.

Le rappel demeure à l'écran pendant une minute, puis vous permet d'en revenir à l'opération que vous étiez en train d'exécuter au moment du déclenchement de l'alarme.

Il est toutefois possible de l'écourter en appuyant sur la touche ON avant que la minute ne se soit écoulée pour en revenir immédiatement au travail commencé.

Il arrive aussi que l'Organiseur ne soit pas en marche au moment du déclenchement de l'alarme. Il continue pourtant à surveiller l'heure, la date et les alarmes que vous avez programmées.

Si une alarme doit se déclencher alors que l'appareil est éteint, il commence par se rallumer. Puis l'alarme est activée comme nous l'avons vu plus haut des bips sonores retentissant, la date et l'heure s'affichant sur la première ligne de l'affichage et le texte proprement dit sur la seconde.

Ils restent à l'écran pendant une minute, puis l'Organiseur repasse à la fonction que vous exécutiez avant de l'éteindre. La encore, vous avez possibilité d'appuyer sur la touche ON avant que la minute ne se soit entièrement écoulée et l'appareil repasse immédiatement à l'opération précédente.

Il se peut aussi que l'alarme se déclenche en votre absence. Dans ce cas, tout se passe comme nous l'avons vu plus haut. Le rappel reste à l'écran pendant une minute, mais vous n'aies pas là pour éteindre l'appareil.

Vous n'avez toutefois pas à vous en inquiéter car, comme nous l'avons précédemment, l'Organiseur s'éteint automatiquement si aucune touche n'est activée pendant cinq minutes.

Lorsque l'alarme a retenti et que le rappel s'est affiché, l'agenda conserve ce que vous y avez noté mais l'indicateur d'alarme au début du texte disparaît.

COMMENT DESACTIVER UNE ALARME

Si vous changez d'avis et que l'alarme ne vous est plus nécessaire, vous pouvez la supprimer en réaffichant tout d'abord le texte associé. Appuyez ensuite sur EXE pour obtenir le message EDIT: avant le texte. Réappuyez sur EXE et l'Organiseur vous propose de déclencher ou non une alarme avec le message ALARME O/N. Il vous suffit alors de presser N pour l'annuler.

SOUS-MENU DE L'AGENDA

Avant de poursuivre l'étude de l'agenda, appuyez sur la touche MODE pour examiner les options disponibles. L'écran s'efface avant d'afficher un menu. Il ne s'agit pas là du menu original contenant les options SAUV et RECH, mais d'un sous-menu. Il contient d'autres options qui ne peuvent être utilisées qu'avec l'agenda proprement dit, et qui ne sont donc pas accessibles le reste du temps. Ces options sont les suivantes :

PAGES Il s'agit du mode dans lequel vous vous trouvez lorsque vous lancez l'agenda. Il vous permet d'y prendre des notes et d'activer une alarme pour vous rappeler ce que vous y avez noté à l'heure prévue.
LISTE Cette option liste séquentiellement toutes les entrées figurant dans votre agenda, à partir de la date et l'heure affichées sur l'horloge système.
RECH Tout comme l'option de recherche 'RECH' du menu principal, cette fonction vous permet de retrouver immédiatement une entrée en spécifiant trois ou quatre caractères.
ALLER Vous permet de consulter vos notes pour une date quelconque.
SAUVE Pour sauvegarder tout le contenu de l'agenda sur un Datapak.
MAJ Cette option met à jour l'agenda en supprimant toutes les entrées précédant l'heure et la date en vigueur.
RECHARGE Recharge en mémoire le contenu d'un agenda sauvegardé sur Datapak - contenu qui recouvre tes données enregistrées dans l'agenda de la mémoire interne.
CAT Affiche le répertoire des agendas enregistrés sur Datapak.
EFFACE Efface un agenda du Datapak.

Les options de ce menu se sélectionnent de la même façon que celles du menu principal, avec les touches du curseur et EXE, ou en appuyant sur la touche représentant la première lettre de l'option choisie.

PAGES

Cette option vous permet de réafficher la page de l'agenda que vous venez de quitter. Pour l'expérimenter, frappez EXE alors que le curseur est positionné sur le P de PAGES ou appuyez sur la touche P pour réafficher l'agenda

Pour en revenir au sous-menu, il vous suffit de presser la touche MODE.

LISTE

La fonction LISTE du menu de l'agenda doit être sélectionnée comme de coutume. L'écran s'efface et affiche ensuite la première entrée de l'agenda à partir de la date et de l'heure affichées. Par conséquent, si la date et l'heure affichées sur l'agenda sont le 26 août à 8 heures, les notes que vous avez prises à partir de ce moment là s'affichent séquentiellement, mais pas celles qui ont été précisées dans les tranches de temps/date précédentes.

La première tranche contenant du texte s'affiche, la date et l'heure étant précisées sur la ligne du haut et le texte sur celle du bas. Si ce dernier contient plus de 16 caractères, il se met à défiler de gauche à droite au terme d'un délai de deux secondes pour vous permettre d'en lire tout le contenu.

Si vous avez choisi de déclencher une alarme pour l'entrée en question, le texte affiché sur la ligne du bas est précédé d'un indicateur le signalant. Le texte se présente donc de la manière suivante :

JAN:18:JEU:12.00 (A)MEDICIN

Pour passer à l'entrée suivante, il suffit de réappuyer sur la touche EXE.

Après avoir affiché la dernière tranche de temps contenant une entrée, le message FIN D'AGENDA apparaît lorsque vous frappez une nouvelle fois EXE. Il vous signale que vous avez atteint la fin de l'agenda. Si vous réappuyez sur EXE à ce moment là, vous repassez à la première entrée.

RECH

La fonction de recherche RECH de l'agenda fonctionne de façon légèrement différente de celle du menu principal. Pour localiser un message particulier, vous devez sélectionner RECH sur le menu de l'agenda en procédant comme d'habitude, avec les touches du curseur et EXE ou avec la touche R.

Une fois que vous avez retrouvé l'entrée recherchée, vous pouvez l'éditer en pressant MODE pour afficher le message EDIT:. L'édition se fait comme nous l'avons vu précédemment.

ALLER

L'option ALLER sert à changer la date et/ou l'année en vigueur sur l'agenda. Par conséquent, lorsque vous sélectionnez cette option, la date du jour s'affiche de la manière suivante:

1987 OCT 10  

Au départ, le curseur clignotant est positionné sur le premier chiffre de l'année. Pour le placer sur le mois, appuyez une première fors sur la touche du curseur et une seconde pour parvenir au jour du mois. La touche sert à revenir en arrière. Pour faire progresser la date, le mois ou l'année, pressez la touche du curseur ou la touche pour les faire régresser.

Lorsque vous parvenez à la date correcte, appuyez sur EXE pour afficher la tranche de temps choisie.

MAJ

Les entrées finissent bien sûr par se périmer au fit des jours et il vous faudra de temps à autre les effacer. En fait, vous pouvez remettre votre agenda à jour aussi souvent que vous le souhaitez, ce qui vous permet également de libérer l'espace occupé par ces entrées périmées sur l'unité A:.

Pour cela, sélectionnez l'option MAJ du menu de l'agenda en procédant de la manière habituelle.

L'écran s'efface et affiche la date et l'heure de l'entrée en vigueur suivies d'un message vous demandant de confirmer que vous souhaitez bien effacer toutes es entrées jusqu'à cette date excluse. Il se présente de la manière suivante :

AOU:09:JEU:08.00 MAJ AVANT O/N

Si vous confirmez votre sélection en appuyant sur la touche O, toutes les entrées de l'agenda précédant la date et l'heure en vigueur s'effacent, excepté l'entrée prévue pour ces dernières si elle existe, et vous repassez au sous- menu de l'agenda.

Si vous changez d'avis, appuyez sur la touche N pour en revenir au sous-I menu de l'agenda et conserver les entrées intactes. Les autres touches n'ont aucun effet lorsque le message O/N est visible.

SAUVE

Vous pouvez, à tout instant, sauvegarder tout le contenu de l'agenda en mémoire interne ou sur Datapak. Pour cela, sélectionnez l'option SAUVE du menu principal. Le message suivant apparent à l'écran :

SAUVE A:  

Vous pouvez opter pour une autre unité en pressant MODE. Une fois l'unité requise sélectionnée, spécifiez le nom du fichier avant d'appuyer sur EXE. Le contenu de l'agenda est alors sauvegardé sur l'unité en vigueur sous le nom choisi. Vous pouvez ensuite le recharger en mémoire en lançant l'option RECHARGE expliquée ci-dessous.

Les noms de fichier peuvent contenir jusqu'à 8 caractères. Ils doivent obligatoirement commencer par une lettre mais peuvent comporter ensuite des caractères alphabétiques ou numériques.

RECHARGE

Cette option sert à charger en mémoire le contenu de l'agenda sauvegardé sur une unité quelconque.

Sélectionnez cette option du menu agenda en procédant selon la manière habituelle. La première ligne de l'écran se présente de la manière suivante :

RECHARGE A:  

La encore, la touche MODE permet de sélectionner une autre unité. Une fois cette dernière choisie, spécifiez le nom de fichier sous lequel vous avez sauvegardé l'agenda. Il se charge alors en mémoire et vient remplacer le contenu de l'agenda jusque là en vigueur. Puis le menu de l'agenda réapparaît.

CAT

Si vous sauvegardez plusieurs versions de l'agenda, vous aurez peut-être besoin par la suite d'en afficher la liste pour connaître le nom de toutes les versions enregistrées sur l'unité en vigueur.

Lorsque vous sélectionnez le répertoire en lançant l'option CAT, la première ligne de l'écran se présente de la manière suivante :

CAT A:  

Comme c'était le cas précédemment, la touche MODE vous permet de changer d'unité en vigueur. Une fois que vous avez sélectionné la bonne unité, appuyez sur la touche EXE pour afficher, sur la ligne du haut, le nom du premier agenda sauvegardé sur cette unité.

Après avoir affiché le dernier agenda disponible sur l'unité en vigueur, le message de fin de cartouche habituel s'affiche. Il faut alors frapper la touche ON pour repasser au menu de l'agenda.

EFFACE

Cette option d'effacement du menu de l'agenda sert à supprimer une version de ce dernier sauvegardée préalablement sur une unité quelconque.

Sélectionnez cette option en procédant de la manière habituelle. La première ligne de l'écran indique :

EFFACE A:  

Pour sélectionner une autre unité, frappez MODE. Après avoir choisi la bonne unité, spécifiez le nom de fichier de l'agenda. Il est alors supprimé et le menu de l'agenda se réaffiche sur l'écran.

SUPPRIMER DES ENTREES DE L'AGENDA

Pour retirer une entrée de votre agenda, positionnez-vous simplement sur l'heure concernée par cette entrée et pressez les touches EXE, ON/CLEAR puis EXE. Notez que vous ne pouvez pas faire cela en mode LIST.


CHAPITRE 10

ALARMES

L'option ALARME du menu principal permet de programmer jusqu'à huit alarmes individuelles qui se déclencheront à l'heure choisie au cours de la semaine précédant l'heure et la date prévues. Il est également possible de répéter ces alarmes toutes les semaines, tous les jours ou toutes les heures.

Après avoir sélectionné l'option ALARME en procédant comme de coutume, l'écran se présente de la manière suivante :

1)LIBRE   EXE pour activer

Les alarmes sont numérotées de 1 à 8 mais peuvent être programmées dans n'importe quel ordre, c'est-à-dire que l'alarme numéro 2 peut très bien pour se déclencher avant l'alarme numéro 1, etc. Pour changer de numéro d'alarme, actionnez les touches et du curseur.

Comme l'écran le suggère, vous devez frapper EXE pour programmer une alarme. Le numéro de cette dernière s'affiche alors, suivi de l'heure et de la date du jour. Vous pouvez la programmer pour n'importe quel jour en commençant par celui en vigueur, et jusqu'à une semaine à l'avance.

L'écran est le suivant:

1)MER 12.25  

Le curseur clignotant est positionné sur le jour de la semaine que vous pouvez changer en pressant la touche du curseur. Pour régler les heures et les minutes, appuyez sur les touches et/ou du curseur. Pour sélectionner les heures et les minutes, procédez comme pour la date à l'aide des touches et du curseur respectivement pour les faire avancer ou retarder.

Après avoir obtenu l'heure correcte, appuyez sur EXE pour faire disparaître le curseur, et sur ON pour repasser au menu principal.

Si vous souhaitez avant cela programmer une autre alarme, pressez la touche du curseur, puis procédez comme nous l'avons vu plus haut.

REPETITION D'ALARME

Vous avez la possibilité de déclencher ces alarmes une fois par semaine, une fois par jour ou une fois toutes les heures. Après avoir réglé l'alarme en procédant comme nous l'avons vu plus haut, appuyez sur la touche MODE. Vous pouvez remarquer qu'un R s'affiche au-dessous du curseur. Pour que l'alarme se déclenche à un jour particulier toutes les semaines, positionnez le pointeur sur le jour, ou sur l'heure si vous souhaitez qu'elle se déclenche chaque jour à cette heure, ou encore sur les minutes pour qu'elle se répète à intervalles d'une heure aux minutes choisies.

Confirmez votre sélection en frappant EXE.

Comme d'habitude, la touche ON vous permet d'en revenir au menu principal.

Vous pouvez aussi annuler la fonction de répétition en sélectionnant tout d'abord l'alarme qui lui est associée comme nous l'avons plus haut. Appuyez ensuite sur EXE puis sur MODE. Le R disparaît et l'alarme cesse alors de se répéter.

ANNULATION D'UNE ALARME

Pour annuler une alarme, vous devez d'abord la sélectionner comme indiqué ci-dessus puis appuyez sur DEL pour la désactiver, avant de repasser au menu principal avec la touche ON.


CHAPITRE 11

PROG

L'Organiseur contient son propre langage de programmation appelé OPL (Organiseur Programming Language - langage de programmation de l'Organiseur). Il convient particulièrement bien au traitement des données et à la manipulation des fichiers d'information tels que celui créé à partir du menu principal.

Il comporte un jeu de commandes complet, dont des fonctions scientifiques et mathématiques et des options de manipulation de fichier très sophistiquées.

Ce langage est décrit en détail dans la deuxième section de ce guide qui traite en détail des structures et méthodes de programmation, et définit aussi toutes les commandes et fonctions disponibles.

Ce guide contient également un chapitre consacré uniquement à des exemples de programme qui sont utiles par eux-mêmes et nous permettront aussi de nous faire un aperçu des techniques permettant d'exploiter au mieux ce langage, en plus de tous les exemples cités dans le texte pour illustrer des aspects spécifiques.

APERCU GENERAL

L'OPL est un langage procédural. Un programme peut se composer de plusieurs procédures, la première devant obligatoirement être la procédure d'appel pouvant en invoquer une autre, etc. Il n'existe aucune restriction quant au nombre d'appels de procédure que vous pouvez utiliser dans un programme.

Chaque procédure se décompose en un certain nombre de lignes de programme qui peuvent contenir une ou plusieurs instructions. Dans les lignes à plusieurs instructions, ou lignes multi-instructions les différentes commandes doivent être séparées par le symbole 'deux points' précédé d'un espace, comme illustré ci-dessous :

instruction :instruction :instruction

Une procédure particulière peut transmettre des valeurs à la suivante ou peut en renvoyer à la procédure d'appel.

Les commandes et fonctions composant ce langage comprennent des constructions de base de données et vous permettront d'écrire des programmes sophistiqués créant et interrogeant des fichiers de données.

L'OPL est traité de façon plus détaillée dans la seconde partie de ce guide, à partir du chapitre 17.


CHAPITRE 12

INFO

L'option INFO du menu principal vous indique le volume d'espace inoccupé en mémoire interne de l'Organiseur et sur les Datapaks dont est équipée la machine.

Sélectionnez cette option à partir du menu principal en vous servant des touches du curseur et de EXE, ou en appuyant sur I.

La ligne du haut vous informe du nombre d'octets disponibles (un octet pouvant enregistrer un caractère) dans la mémoire interne de l'Organiseur. La ligne du bas défile en affichant successivement l'espace inutilisé en terme de pourcentage du volume total disponible.

L'Organiseur dispose de 32.768 octets de mémoire interne (modèle XP - 8.192 sur le modèle CM) ou MEV (mémoire vive) mais une petite partie de cet espace est utilise par la machine pour les opérations de servitude internes.

Si l'unité B: est équipée d'un Datapak, et que vous avez sauvegardé un certain nombre de données ainsi que des entrées dans l'agenda, la ligne du bas se présentera sous une forme similaire à celle illustrée ci-dessous

AGENDA 4% PACK A: 15% B: 36% LIBRE 81%

qui vous indique que l'agenda occupe 4% de la MEV, et que les données prennent 15% de a MEV sur l'unité A: et 36% sur l'unité B:, ce qui vous laisse un total de 81% de MEV libre comme vous le signale la dernière section de la ligne.

Cet affichage continue à défiler jusqu'à ce que vous appuyiez sur la touche ON/CLEAR.

L'agenda actif réside constamment en mémoire interne de l'Organisaur, à la différence des agendas sauvegardés avec la fonction SAUVE qui sont, eux, enregistrés sur Datapak. Par conséquent, plus vous faites usage de l'agenda, et plus le volume de mémoire disponible pour les autres activités sur l'unité A: diminue.

Remarque: La mémoire du modèle XP est de 32 Ko, mais 24 Ko sont disponibles à l'usage général. Les 8 Ko restants sont réservés pour des programmes spécifiques (Tableur, Formulateur, ...) ou les périphériques (Comms-Link, stylo optique, ...)

C'est pourquoi l'option INFO indique une taille mémoire de 23.532 octets pour le modèle XP.


CHAPITRE 13

COPIE

La fonction COPIE du menu principal sert à recopier des fichiers de données d'une unité à une autre. Vous pouvez par exemple reproduire les données enregistrées en mémoire interne de l'Organiseur sur l'un des Datapaks, et vice versa, ou d'un Datapak à un autre. Pour recopier les programmes écrits dans le langage de programmation de l'Organiseur, l'OPL, reportez-vous à la fonction COPIE décrite en chapitre 31.

Sélectionnez la fonction COPIE du menu principal en procédant de la manière habituelle avec les touches du curseur ou en appuyant sur la touche C jusqu'à ce que le curseur se positionne sur la première lettre de COPIE. Pressez ensuite EXE pour afficher, sur la ligne du haut, le message suivant :

DE  

Vous devez y répondre par le nom d'une unité (c'est-à-dire A:, B: ou C:) et par un nom de fichier qui constitueront l'unité et te fichier sources.

L'ordinateur vous demande ensuite d'indiquer l'unité et le nom de fichier de destination sur la ligne du bas en affichant :

A

Vous devez spécifier l'unité de destination et, s'il y a lieu, un nom de fichier.

Si vous répondez au message DE par un nom d'unité uniquement, tous les fichiers existant sur cette dernière vont être recopiés sur l'unité de destination. Les informations sont recopiées d'une unité à l'autre, fichier par fichier. Si l'unité de destination contient déjà un fichier portant le même nom qu'un de ceux que vous êtes en train de recopier, tous les enregistrements du fichier source vont être rajoutés à la fin du fichier de l'unité de destination.

Ainsi donc, si le fichier MAIN de l'unité A: contient dix enregistrements et que vous choisissez de recopier tous les fichiers de A: à B:, les enregistrements de A:MAIN vont être rajoutés à ceux qui existent déjà dans le fichier B:MAIN. Tous les fichiers de l'unité source seront traités de la même façon.

Remarque. Lorsque vous lancez l'option principale SAUVE, l'Organiseur crée automatiquement un fichier MAIN que vous pouvez ensuite interroger avec l'option générale RECH.

Si l'unité source contient des fichiers qui n'ont pas d'équivalent sur l'unité de destination, ces fichiers y sont automatiquement créés et portent le même nom que sur l'unité source.

En revanche, si vous précisez un nom de fichier en plus de l'unité source à la suite du message DE, l'Organiseur se contente de recopier le contenu du fichier spécifié sur l'unité de destination. Si vous ne recopiez qu'un seul fichier et que vous avez indiqué un nom de fichier à la suite du message A, tous ses enregistrements sont enregistrés dans le fichier de ce nom sur l'unité de destination.

Il faut parfois plusieurs minutes pour recopier de larges volumes d'information. Le temps nécessaire est fonction du nombre d'enregistrements figurant dans le(s) fichier(s) source(s) et de leur taille.

Remarque: Pensez à faire suivre les noms d'unités par le signe deux-points (comme par exemple "A:").


CHAPITRE 14

RAZ

Cette option sert à effacer toutes les informations enregistrées en mémoire de l'Organiseur. Elle supprime toutes les entrées de l'agenda ainsi que les fichiers et procédures sauvegardées sur l'unité A:. En revanche, elle n'affecte pas les données des Datapaks.

Sélectionnez l'option RAZ du menu principal pour afficher le message suivant:

REMISE A ZERO   TAPEZ DEL

vous informant qu'en appuyant sur la touche DEL, vous allez perdre toutes les données sauvegardées jusque là. Si ce n' pas ce que vous souhaitez, pressez ON pour repasser au menu principal et conserver toutes les données intactes. Dans le cas contraire, appuyez sur la touche DEL. Un autre message s'affiché pour vous demander de confirmer votre décision :

ETES-VOUS SUR   TAPEZ O/N

Si vous répondez par non (N), vous repassez au menu principal sans perdre aucune donnée. Par contre, si vous êtes bien sur de vouloir tout effacer, répondez par oui en frappant O. Vous repassez ensuite automatiquement au menu principal.


CHAPITRE 15

CONSEILS SUR LES ENREGISTREMENTS

Lorsque vous entrez des informations que vous allez sauvegarder avec la fonction SAUV, n'oubliez pas que vous devrez les rechercher par la suite. Appliquez-vous à les structurer pour pouvoir les retrouver plus facilement. Voici un certain nombre de suggestions qui vous rendront la tâche plus facile :


CHAPITRE 16

PERSONNALISATION DU MENU

RECH SAUV AGENDA CALC PROG EFFACE

Lorsque vous allumez votre Organiseur pour la première fois, le menu est identique à celui illustré ci-dessus et est appelé menu par défaut. Vous avez toutefois possibilité de changer l'ordre selon lequel les options s'affichent dans le menu, ou même de les effacer,

La seule option du menu que vous ne pouvez pas effacer est la dernière, FIN. qui ne peut non plus être déplacée. L'Organiseur ne vous laissera pas mettre quoi que ce soit après FIN dans le menu.

Si vous effacez une des fonctions résidentes du menu, telles que RECH ou SAUV, vous pourrez les réafficher par la suite sans aucun problème sans devoir pour autant les remettre à la même place, ce qui vous permet de réOrganiseur le menu de la façon qui vous convient le mieux.

Par exemple, si vous vous servez le plus souvent de l'agenda, il est préférable de placer la fonction AGENDA en première position pour y accéder plus rapidement lorsque vous allumez l'Organiseur.

EFFACEMENT DES OPTIONS DU MENU

Pour effacer une option du menu, il suffit de positionner le curseur sur sa première lettre et de presser DEL. Par conséquent, vous pouvez supprimer RECH du menu en plaçant le curseur sur le R avant de presser DEL. Le message suivant s'affiche alors sur l'écran :

RECH   EFFACER O/N

La ligne du haut indique l'option qui va être effacée et celle du bas vous demande de confirmer cette mesure.

Vous pouvez très bien changer d'avis et répondre non en appuyant sur la touche N, auquel cas vous repassez au menu principal sans effacer l'option. Si vous confirmez votre décision en appuyant sur O, le menu principal se réaffiche sans l'option RECH.

Cette option n'est pas pour autant irrémédiablement perdue. Il vous suffit d'insérer une rubrique intitulée RECH dans le menu pour que l'Organiseur comprenne qu'il s'agit de la fonction par défaut portant le même nom, même si vous la placez à un endroit différent dans le menu. Si vous la sélectionnez ensuite, vous vous apercevrez qu'il s'agit bien de la fonction de recherche habituelle.

En revanche, cette méthode vous empêche d'insérer une procédure personnelle du même nom, lorsque vous effacez une des options du menu par défaut. Vous vous retrouverez dans tous les cas avec la fonction originale portant le nom en question. Les procédures et le langage de programmation de l'Organiseur sont décrits en détail à partir du chapitre 17.

INTRODUCTION D'UN NOM DANS LE MENU

Pour réactiver une option qui a été supprimée, à son emplacement original ou partout ailleurs, positionnez le curseur à l'endroit choisi dans le menu.

Appuyez ensuite sur la touche MODE pour afficher le message suivant:

INSERER OPTION  

Il ne vous reste plus qu'à taper le nom de l'option à introduire dans le menu et à appuyer sur EXE. Son nom s'affiche alors à l'emplacement choisi et décale celui des autres articles d'une position vers la droite.

Par conséquent, si vous avez effacé l'option RECH de sa position en début de menu et que vous l'avez réintroduite dans la suite de ce dernier, l'Organiseur s'aperçoit que cette nouvelle option est en fait une des fonctions résidentes et vous pouvez dès lors la lancer a partir de sa nouvelle position dans le menu.


CHAPITRE 17

INTRODUCTION AU LANGAGE OPL

L'Organiseur est un ordinateur très puissant qui, comme ses semblables, exécute les commandes que lui donne l'utilisateur.

Le langage OPL (Organiseur Programming Language - langage de programmation de l'Organiseur) est accessible à partir du menu principal dans lequel il est représenté par l'option PROG. Il vous permet d'écrire des programmes et de les éditer, sauvegarder, exécuter et recopier grâce à son jeu de commandes complet et souple d'emploi.

Les ordres que vous donnez à votre ordinateur se présentent sous forme de liste d'instructions et de commandes qui font toutes partie de ce qu'on appelle le langage de programmation de l'ordinateur.

Un des aspects les plus utiles d'un ordinateur est qu'il est non seulement capable d'exécuter un ensemble d'instructions, mais qu'il peut également l'enregistrer pour s'en resservir par la suite.

Les programmes OPL se composent d'une ou plusieurs procédures appelées également segments de programme. Chaque procédure doit comporter un nom exclusif pour pouvoir être sauvegardée, rappelée, exécutée et éditée.

Un programme simple peut très bien se limiter à une seule procédure, tandis que les plus complexes en comprennent généralement plusieurs, dont l'une constitue la procédure principale ou générale.

La procédure principale contrôle toutes les autres et les appelle lorsqu'elles doivent exécuter la tâche qui leur est impartie. Elles peuvent aussi être utilisées en tant que fonctions numériques à partir de l'option CALC du menu principal.

Pour tirer meilleur parti de l'OPL, il est préférable de se limiter à des procédures courtes pouvant être testées individuellement. Puis, après s'être assuré qu'elles fonctionnent correctement, on pourra les rassembler pour former un programme complet.

Chaque procédure peut avoir une longueur variable selon le rôle qui lui est imparti et devrait, idéalement, se limiter à une tâche spécifique. De cette façon, les programmes peuvent se partager une procédure commune pour exécuter un travail particulier, ce qui évite d'avoir des codes dupliqués en deux endroits différents pour effectuer une même tâche.

Dans cette section du guide de l'utilisateur, nous allons examiner à des programmes composés d'un certain nombre de procédures, mais toutes les observations que nous allons faire seront également applicables aux programmes autonomes qui ne se contiennent qu'une seule procédure.

LE MENU DE PROGRAMMATION

Lorsque vous sélectionnez l'option PROG du menu principal de l'Organiseur, un autre menu contenant les options suivantes apparaît :

EDIT/ IMPRIME / CAT / NOUV / EXEC / EFFACE / COPIE

Elles doivent être sélectionnées de la même façon que celles du menu principal, en appuyant sur la touche correspondant à leur première lettre, ou en se servant des touches du curseur et d'EXE.

EDIT permet d'éditer une procédure créée plus tôt et de la sauvegarder sous sa nouvelle forme, pour l'améliorer et la modifier, ou corriger les erreurs.

IMPRIME sert à lister une procédure sur périphérique, une imprimante par exemple.

CAT affiche la liste de toutes les procédures enregistrées sur une des unités disponibles.

NOUV permet de saisir de nouvelles procédures et de les sauvegarder en mémoire interne ou sur l'un des Datapaks.

EXEC exécute les procédures.

EFFACE sert à effacer les procédures enregistrées sur les unités disponibles.

COPIE se charge de recopier une procédure, ou toutes, sur une autre unité.


CHAPITRE 18

CRÉATION D'UNE PROCÉDURE

Voici un exemple simple de procédure :

heure: CLS PRINT "IL EST",HOUR;"h";MINUTE GET

Cette procédure a pour nom heure. Elle efface l'écran de l'Organiseur avant d'afficher l'heure. Elle reste à l'écran jusqu'à ce que vous appuyiez sur une touche quelconque. Ce chapitre va vous expliquer comment taper cette procédure avant de la sauvegarder et de l'utiliser.

Sélectionnez l'option NOUV du menu. L'écran se présente alors de la manière suivante :

NOUV A:  

A la suite de l'option sélectionnée figure le nom de l'unité en vigueur, dans notre exemple l'unité A:. Bien que nous ayions choisi de conserver cette unité dans toute la section, nous aurions très bien pu prendre un Datapak. Les descriptions sont donc applicables à toutes les unités, quelles qu'elle soient. (N'oubliez pas qu'il suffit d'appuyer sur la touche MODE pour changer d'unité.)

La première chose à faire est de donner un nom à la procédure. Il peut contenir huit caractères maximum et doit obligatoirement commencer par une lettre. Tapez donc 'heure' qui va constituer le nom de votre première procédure. Si vous appuyez ensuite sur EXE, vous voyez que le nom de la procédure s'affiche sur la première ligne de l'écran et qu'il est suivi du symbole 'deux points'. De plus, le curseur clignotant est positionne à la fin du nom de la procédure :

HEURE:  

Frappez EXE pour positionner le curseur sur la ligne suivante avant de commencer à taper les commandes. (Au départ, le curseur est positionné à la fin de la procédure pour une raison que nous découvrirons par a suite). A la fin de chaque ligne, pressez EXE pour signaler à l'ordinateur que la ligne est terminée.

Vous devez commencer par la commande CLS qui, dans le langage OPL, efface tous les caractères affichés sur l'écran. Après avoir tapé cette commande, pressez EXE pour faire défiler les lignes de texte vers le haut et positionner le curseur sur une ligne vierge sur laquelle va figurer la commande suivante.

Tapez ensuite la ligne suivante en faisant bien attention de ne pas commettre d'erreur:

PRINT "IL EST",HOUR;"h";MINUTE

Vérifiez que la ligne qui s'affiche sur l'écran corresponde point par point à cet exemple. Dans tous les langages informatiques il existe des règles sur la façon dont les commandes doivent êtres saisies, et les espaces qu'elles contiennent sont aussi importants que les commandes proprement dites. Cette ligne contient plus de 16 caractères et va donc se mettre à défiler vers la gauche pour vous permettre de la terminer.

Arrêtons-nous un instant pour comprendre ce que fait cette commande. La première section, c'est-à-dire l'instruction PRINT indique à l'OPL que vous êtes sur le point de lui fournir un élément que vous souhaitez afficher sur l'écran.

Elle est suivie d'un espace et de caractères entourés de guillemets. Ces derniers délimitent la longueur exacte du texte à afficher et son contenu.

En jargon informatique, une liste de caractères telle que celle-ci est appelée chaîne. Toutes les chaînes entourées de guillemets sont affichées do la façon dont elles se présentent.

Le caractère suivant, qui est une virgule, signale à l'OPL que quelque chose d'autre doit être affiché sur la même ligne, à la suite du texte que nous venons de voir dont il doit être séparé par un espace.

La section suivante de la ligne, HOUR, est une fonction. Nous verrons un peu plus loin ce que sont les fonctions et comment les utiliser. Pour l'instant, contentons-nous de savoir que cette fonction affichera l'heure à partir de l'horloge système.

Le caractère suivant, un point-virgule, indique que le texte doit être affiché immédiatement à la suite du dernier élément dont il ne doit donc pas être séparé par un espace. Le prochain élément à imprimer est une autre chaîne qui ne se compose cette fois que d'un seul caractère, un h, qui doit pourtant être entouré de guillemets et qui s'affichera à la suite de l'heure.

La dernière partie de cette ligne est une autre fonction intitulée MINUTE. Elle accède au nombre de minutes affiche sur l'horloge système. Ce chiffre va également s'afficher sur la même ligne de l'écran pour compléter l'heure.

La ligne de commande suivante, GET, est aussi une fonction qui, dans ce cas, attend que vous appuyiez sur une touche du clavier. Vous devez le faire pour permettre à l'Organiseur d'exécuter le reste du programme. Par conséquent, le message affiché sur l'écran y restera jusqu'à ce que vous frappiez une touche quelconque et la suite de la procédure ne pourra être exécutée tant que vous ne l'aurez pas fait.

Dans cet exemple, GET est la dernière instruction et le programme se termine donc là.

Lorsque vous tapez une procédure, vous pouvez à tout instant en modifier les lignes en utilisant les touches du curseur. Appuyez tout simplement sur la touche pour en revenir à la ligne précédente et l'éditer en procédant selon la manière habituelle.

Si vous devez insérer une nouvelle ligne entre deux anciennes, positionnez le curseur au début de la ligne avant laquelle vous souhaitez l'insérer et appuyez sur EXE.

TRANSCODAGE DES PROCÉDURES

Une fois tapées, les procédures sont conservées an mémoire interne de l'Organiseur sous leur forme originale. Vous avez ensuite trois possibilités : transcoder (TRAN) la procédure dans une forme que l'OPL pourra exécuter, sauvegarder (SAUVE) la procédure dans sa forme actuelle sur une des unités ou abandonner (QUIT) la procédure que vous venez de taper.

Appuyez sur la touche MODE pour sélectionner une de ces options. L'écran s'efface avant d'afficher ce qui suit :

TRAN SAUVE QUIT 

Il s'agit là d'un sous-menu, tout comme le menu PROG, dont les options peuvent être sélectionnées selon la manière habituelle. La seule différence est qu'une fois que vous avez choisi une option, vous repassez directement au menu PROG.

QUIT

Si vous sélectionnez cette option après avoir tapé un nouveau programme, le message ETES-VOUS SUR O/N vous demande si vous êtes sûr de vouloir le faire. Pour confirmer votre décision appuyez sur la touche O, auquel cas tout ce que vous avez tapé jusqu'à présent s'efface. Cette commande n'affecte cependant pas les procédures que vous avez saisies ou transcodées (voir ci-dessous) précédemment. En revanche, si vous pressez N, vous repassez à l'éditeur et vous pouvez continuer à éditer la procédure.

Remarque. Si vous abandonnez une procédure avec QUIT, vous ne pourrez pas la récupérer. Vérifiez bien que c'est la ce que vous souhaitez faire.

TRAN

Après avoir terminé de taper l'exemple ci-dessus, sélectionnez l'option TRAN du menu TRAN/SAUVE/QUIT. La procédure est alors convertie en une forme que l'OPL pourra exécuter. Cette opération ne prend que quelques secondes pendant lesquelles un message s'affiche pour indiquer que le transcodage est en cours.

Une fois la procédure transcodée, l'écran affiche le message SAUVE A: suivi du nom de a procédure :

SAUVE A:heure  

Vous pouvez donc sauvegarder la procédure sur une des unités disponibles (mémoire interne ou Datapak). Pour en changer, appuyez sur la touche MODE puis sur EXE pour lancer la sauvegarde.

Au moment de la sauvegarde, le texte original est également enregistré sur l'unité choisie. Il existe donc une version du programme pouvant être exécutée directement et une seconde réservée l'édition. Elles sont toutes deux sauvegardées sous le même nom de procédure et peuvent donc être considérées comme une seule entité.

Si vous avez commis une erreur de frappe en recopiant la procédure, l'OPL va probablement s'en apercevoir en la transcodant. Par exemple, si vous avez tapé PRONT au lieu de PRINT, ou si vous avez oublié les guillemets qui doivent entourer le texte suivant la commande PRINT, l'OPL va s'en rendre compte. En revanche, si la procédure contient des erreurs logiques, ces dernières ne pourront être identifiées qu'au moment de l'exécution. A vous de vérifier qu'il n'existe pas d'erreurs logiques dans les procédures.

Si l'Organiseur repère une erreur pendant le transcodage, il réaffiche le texte de la procédure et le curseur se positionne sur la ligne l'origine de l'erreur. près du premier caractère illégal,

Vous devez ensuite éditer la ligne en procédant selon la manière habituelle jusqu'à ce qu'elle soit correcte et qu'elle puisse être acceptée par l'OPL. Ceci fait, appuyez sur MODE pour afficher le menu TRAN/SAUVE/QUIT et sélectionnez à nouveau l'option TRAN.

Si l'OPL ne détecte pas d'autres erreurs, le transcodage se fait correctement, comme vous l'indique le message SAUVE explique ci-dessous.

SAUVE

Si vous n'avez pas eu le temps de taper toute la procédure et que vous avez l'intention d'y revenir par la suite pour la terminer ou la modifier, sélectionnez l'option SAUVE du menu TRAN/SAUVE/QUIT.

Elle vous permet de taper le texte de la procédure tel qu'il se présente et d'économiser de la mémoire en évitant de produire une version transcodée superflue.

Le schéma ci-contre illustre la différence qui existe entre les commandes TRAN et SAUVE.

Lorsque l'Organiseur sauvegarde une procédure au lieu de la transcoder, il n'effectue pas de contrôle d'erreur. Le texte est enregistré de la façon dont il se présente. Seules les erreurs de syntaxe seront détectées au cours de son transcodage.

Remarque. Comme c'était le cas pour les enregistrements sauvegardés sur Datapak à partir du menu principal, les procédures enregistrées sur Datapak occupent de l'espace qui ne pourra être récupéré qu'en reformatant l'unité avec le Psion Formatter. Pour faire meilleur usage de l'espace disponible sur ces unités, il est donc préférable de développer un programme en se servant de la mémoire interne de l'Organiseur, unité A:. Ainsi, s'il vous faut créer plusieurs versions avant d'obtenir le résultat recherché, chaque édition n'occupera pas d'espace superflu sur le Datapak.

Lorsque vous éditez une procédure enregistrée sur l'unité A:, l'ancienne version est effacée complètement à chaque fois que vous sauvegardez la nouvelle. Sur les Datapaks, les anciennes versions ne sont pas supprimées mais vous ne pouvez plus y accéder - elles occupent toutefois de l'espace mémoire.

Après vous être assuré que la procédure ne contient plus d'erreur, recopiez-la sur le Datapak au moyen de l'option COPIE du menu PROG (c.f. chapitre 31).

Figure 5 - Les commandes TRAN et SAUVE

EDITION D'UNE PROCÉDURE

L'option EDIT du menu PROG va vous permettre, par exemple, d'en revenir à une procédure incomplète pour la terminer. Lorsque vous sélectionnez cette option, le message suivant apparaît à l'écran :

EDIT A:  

Spécifiez le nom de la procédure a éditer avant d'appuyer sur EXE. Une fois la procédure affichée, vous pouvez y rajouter des lignes ou en supprimer, et même modifier le texte.

Lorsque vous avez terminé la procédure, sélectionnez l'option TRAN du menu TRAN/SAUVE/QUIT pour la transcoder en procédant comme nous l'avons vu plus haut.


CHAPITRE 19

EXÉCUTION D'UNE PROCÉDURE

Vous pouvez lancer les procédures dès qu'elles ont été correctement transcodées ou, en d'autres termes, vous pouvez demander a l'OPL d'exécuter un ensemble d'instructions particulier.

Lorsque vous sélectionnez l'option EXEC du menu PROG, le message suivant apparaît à l'écran :

EXEC A:  

Il vous suffit ensuite de spécifier le nom de la procédure à exécuter sur l'unité en vigueur. Pour reprendre l'exemple du chapitre 18, tapez heure puis pressez EXE.

L'écran s'efface et l'écran ressemble à celui illustré ci-dessous, compte-tenu de l'heure naturellement :

IL EST 16h35  

L'OPL exécute ensuite la ligne suivante de la procédure, c'est-à-dire GET. Cette instruction se contente d'attendre que l'utilisateur appuie sur une touche du clavier, peu importe laquelle car l'ordinateur n'a pas à l'enregistrer ni à s'en rappeler. GET vous donne le temps de lire l'écran et de décider à quel moment vous souhaitez poursuivre le programme.

Dès que vous appuyez sur une touche, l'OPL sait que la procédure est terminée et il réaffiche le menu PROG.

Le premier exemple que nous avons utilisé était une procédure relativement simple, mais celles que nous verrons en chapitre 32 seront déjà bien plus complexes. Mais pour ne pas vous embrouiller, nous les étudierons section par section pour vous donner le temps d'expérimenter toutes les fonctions que vous offre l'OPL et pour vous permettre de tirer meilleur parti de l'Organiseur.


CHAPITRE 20

VARIABLES

Une variable est un emplacement mémoire auquel on donne un nom et dans lequel le programme peut ranger un nombre ou des caractères. Prenons par exemple a formule algébrique X=10. Dans cette formule, X est une variable numérique.

En effet le programme range la valeur 10 dans l'emplacement mémoire appelé X. Dans la suite du programme vous pourrez modifier la valeur de X en spécifiant par exemple que X=X-1. En algèbre, une telle formule n'aurait aucun sens car aucun chiffre ne peut être égal à sa valeur moins un. Cependant, de nombreux langages informatiques interprètent différemment le signe égal, y compris l'OPL.

Le signe égal signifie en fait prend la valeur de, par conséquent la partie gauche de l'équation prend a valeur de la partie droite. Ainsi donc, l'expression X=X-1 signifie X prend la valeur originale de X moins 1 .

NOMS DE VARIABLE

Les noms de variable peuvent contenir jusqu'à huit caractères alphanumériques et doivent commencer par une lettre. Vous pouvez donc utiliser des noms ayant un sens, tels que age ou prix. Ils peuvent également contenir des chiffres, par conséquent a1 est un exemple tout à tait correct. La seule règle à observer est que le premier caractère doit être une lettre.

DÉCLARATION DE VARIABLES

Avant de nous attarder davantage sur les variables et sur leur rôle, nous devons savoir comment informer l'OPL de ce que nous allons en faire. C'est pourquoi toutes les variables doivent être déclarées avant de pouvoir être utilisées.

Voici un exemple de procédure toute simple :

nom: GLOBAL a,b,c a=1.2 b=2.7 c=3 PRINT a+b+c GET

La première ligne de cette procédure contient la commande GLOBAL. Elle définit les variables qui vont être utilisées dans le programme. Chaque variable utilisée occupe de l'espace mémoire. Pour que l'OPL sache quel volume de mémoire affecter à chaque variable, vous devez toutes les déclarer des le début du programme ou de la procédure. Nous reviendrons sur cette question par la suite.

Les trois lignes suivantes définissent les valeurs qui sont attribuées a chacune des variables a, b et c. Remarquez que les deux premiers chiffrés, c'est-à- dire ceux qui ont été affectés à a et b comporte une virgule flottante, ou plutôt un point sur l'ordinateur. Il s'agit de chiffres à virgule flottante ou de nombres réels. Ils sont enregistrés avec une précision de 12 chiffres et doivent être compris dans la gamme plus ou moins 10^99 (inclus).

La dernière ligne de la procédure additionne la valeur des variables et affiche le résultat sur l'écran (dans notre exemple 6.9).

ENTIERS

L'OPL dispose de deux types de variables numériques : les variables à virgule flottante et les variables entières. Un entier est un nombre tel que 10 ou 537 qui, à la différence des nombres réels, ne contient pas de virgule flottante.

Il est préférable, dans la mesure du possible, d'utiliser des variables entières plutôt que des variables à virgule flottante pour pouvoir exécuter les programmes plus rapidement, ce qui est naturellement préférable à condition de ne pas avoir besoin de la précision de 12 chiffres qu'offrent les nombres réels. De plus, les variables entières n'occupent que eux octets de mémoire, par opposition aux variables à virgule flottante qui en prennent, elles, huit. Les noms de variable entière se terminent par le signe pour-cent (%), ce qui n'est pas le cas des noms de variables à virgule flottante. Un nom variable ne doit toutefois pas excéder 8 caractères, signe % y compris.

Dans l'exemple ci-dessus, nous avons choisi a, b et c comme noms de variable. Mais si nous leur avions affecte des valeurs entières, elles auraient dû s'appeler a%, b% et c%.

L'OPL traite bien plus rapidement les entiers que les nombres réels et vos programmes tourneront plus rapidement si vous vous en tenez à ce type de variables.

Il n'accepte cependant que les entiers compris entre -32768 et +32767. Par conséquent, tous les chiffres se situant hors de ces limites seront automatiquement traités comme des nombres à virgule flottante.

Voici un exemple de procédure utilisant des entiers et des variables entières :

nom: GLOBAL x%,y% x%=7 y%=3.5+x% PRINT y% GET

Cette procédure a un format similaire à celle que nous avons étudiée précédemment.

Elle comporte toutefois une source potentielle d'erreur : la variable y% est une variable entière, mais dans la troisième ligne du programme, elle prend une valeur réelle. Dans ce cas, l'OPL ne signale pas d'erreur mais exécute, en échange, une conversion interne automatique sur la valeur affectée à la variable en question.

La partie droite de l'affectation a pour valeur 10,5, mais la fraction du chiffre est ignorée lorsque l'appareil affecte le résultat à y%. C'est pourquoi la commande PRINT affiche la valeur 10.

Étant donné que l'OPL ne signale pas ce type d'erreur. C'est à vous de vous assurer qu'elle ne risque pas de se produire - à moins que ce soit là ce que vous recherchez ! Lorsque vous mélangez différents types de variables, vérifiez que le résultat obtenu est bien celui que vous recherchiez.

Revenons en au premier exemple qui ne contenait que des variables à virgule flottante. Vous avez peut-être remarque qu'un autre type de conversion y avait eu lieu, sans changer toutefois es valeurs.

Dans cette procédure, la variable à virgule flottante c prenait la valeur entière 3. L'Organiseur effectue automatiquement une conversion sur les affectations de ce type. Dans notre exemple, cette conversion a eu pour résultat 3,0, c'est pourquoi la valeur réelle de la variable n'a pas changé.

Par contre, lorsque vous affectez un nombre à virgule flottante à une variable entière, ce nombre est automatiquement arrondi à la valeur inférieure. Par conséquent, si vous posez que a%=2.3 , a% prend pour valeur 2. C'est également le cas lorsque vous affectez un nombre négatif à virgule flottante à une variable entière. Ce nombre est également arrondi à la valeur inférieure (plutôt que de se rapprocher de zéro). Par conséquent, si vous posez que a%=-2.3, a% prend pour valeur -3. Mais le dernier mot revient naturellement au programmeur, et c'est donc à lui de s'assurer que les différentes variables utilisées dans chaque cas sont correctes.

Si votre expression doit produire un nombre à virgule flottante, assurez-vous que vous avez bien choisi des chiffres corrects pour cette expression.

Pour arrondir, par exemple, des nombres à virgule flottante à leur plus proche moitié, pour que 2,4 devienne 2,5 et 2,2 devienne 2, vous pouvez essayer une instruction du type :

r=INT(2*n+0.5)/2

n étant le chiffre à arrondir.

Cette commande produira toutefois un résultat incorrect pour les raisons que nous allons voir. Donnons à n une valeur d'essai, 3,4 par exemple. L'expression devient donc INT(2*3.4+0.5) , c'est-à-dire INT(7.3), et a pour résultat la valeur entière 7. Cette dernière est ensuite divisée par 2, un autre entier. Le résultat final va donc être une valeur entière, 3, au lieu de 3,5. Pour obtenir le bon résultat, vous devez forcer la division à produire un chiffre à virgule flottante. Dans ce cas particulier, la plus simple façon d'y parvenir consiste à diviser par une valeur à virgule flottante, 2,0, au lieu de l'entier 2. Par conséquent, l'expression :

r=INT(2*n+0.5)/2.0

fournira un résultat correct.

D'autres types d'erreurs se produisent parfois lorsque vous choisissez des variables incorrectes ; mais il vous suffira d'en apprendre un peu plus sur la façon dont l'OPL traite les expressions arithmétiques pour les éviter (c.f. chapitre 23).

VARIABLES DE LA CALCULATRICE

Remarque. Dix variables à virgule flottante restent disponibles en permanence. Il s'agit des dix mémoires de la calculatrice : m0, m1, m2... m9. Vous n'avez pas à déclarer ces variables puisqu'elles ne disparaissent jamais. (Par contre, si vous essayez de les déclarer, l'Organiseur signale une erreur.) Vous pouvez leur attribuer une valeur à n'importe quel endroit dans une procédure. Elles la conserve jusqu'à ce que vous sortiez de l'OPL. Vous pouvez ensuite y accéder a partir de a calculatrice en vous sentant des mêmes noms. Elles conservent la dernière valeur qui leur a été assignée dans le langage de programmation.


CHAPITRE 21

VARIABLES CHAÎNES

Les chaînes sont, tout simplement, des suites de caractères qui sont traitées littéralement. Elles doivent être entourées de guillemets comme dans l'exemple suivant : "exemple de chaîne".

Les chaînes peuvent aussi être rangées dans des variables, mais il est nécessaire de bien différencier les variables chaînes des variables numériques. Le nom d'une variable chaîne doit donc se terminer par le signe Dollar ($) et peut contenir jusqu'à 8 caractères, $ y compris.

Une chaîne peut contenir jusqu'à 255 caractères bien que vous puissiez très bien affecter une chaîne vide, c'est-à-dire une chaîne ne contenant aucun caractère, à une variable.

Lorsque vous déclarez une variable chaîne, vous devez préciser très exactement l'espace nécessaire à son stockage. En voici un exemple :

nom: GLOBAL ceci$(8),cela$(4) ceci$="Alphabet" cela$="ique" PRINT ceci$;cela$ GET

La variable chaîne ceci$ reçoit assez de place pour 10 caractères tandis que cela$ est limitée a quatre. En déclarant une variable chaîne, vous lui affectez automatiquement une chaîne vide.

Les deux lignes suivantes du programme affectent une valeur aux deux variables. Dans chacun des cas, nous avons utilisé toute la longueur autorisée, ce qui n'est pourtant pas obligatoire. Vous pouvez utiliser le nombre de caractères qui vous convient, à concurrence du maximum affecté dans la déclaration. Si vous essayez d'affecter une chaîne contenant plus de caractères que le maximum autorisé, c'est-à-dire celui que vous avez défini dans la déclaration, à une variable, l'OPL affiche automatiquement un message d'erreur.

CONVERSION DES VARIABLES CHAîĪNES

Vous obtenez également un message d'erreur si vous essayez d'affecter un nombre à une variable chaîne. Il n'existe pas de conversion automatique des variables chaînes en variables numériques, et vice versa. En revanche, l'OPL comporte des fonctions permettant d'effectuer une telle conversion. Il s'agit de SCI$, FIX$, GEN$ et de NUM$ que nous étudierons en chapitre 34.

COMMENT RACCORDER DEUX CHAÎNES ENTRE ELLES

Il est très facile d'ajouter deux variables numériques. Il suffit d'utiliser un signe plus et d'affecter le résultat final à une autre variable, par exemple a=b+c. Il est tout aussi simple d'ajouter deux chaînes entre elles, ou plutôt de les enchaîner pour respecter le jargon informatique. Supposons par exemple que a$ ail pour valeur "BAR" et b$ "BICHE", l'instruction c$=a$+b$ affectera à c$ la valeur "BARBICHE". Vous pouvez également lui affecter la même valeur avec l'expression c$="BAR"+"BICHE".

Lorsque vous ajoutez deux chaînes entre elles, vous devez vous rappeler de ne pas excéder la longueur maximale autorisée. Ainsi donc, si vous essayez de joindre une chaîne de 200 caractères de long à une autre de 100 caractères, vous obtenez un message d'erreur étant donne que vous dépassez les 255 caractères permis. Vous devez également respecter la longueur maximale que vous avez vous-même imposée dans la déclaration.

Pour pouvoir utiliser des guillemets (caractère ASCII 34) dans une chaîne de caractères, vous devez les répéter deux fois dans la définition de chaîne. Par conséquent, si vous posez que a$="ABC""DEF""GHI", a$ prendra pour valeur ABC"DEF"GHI.

DÉCOUPAGE DES CHAÎNES

Après avoir combiné deux chaînes ou plus, vous aurez peut-être besoin par la suite de les séparer, ou de prélever uniquement les cinq premiers caractères de la chaîne par exemple. Ce procédé est appelé découpage de chaînes.

Il existe trois fonctions pour y arriver : LEFT$, RIGHT$ et MID$. Elles vous permettent d'accéder, respectivement, aux sections gauche, droite et centrale d'une chaîne.

Par exemple, si a$="NAPOLEON", vous pouvez affecter la chaîne NAPO c'est-à-dire les quatre premiers caractères de a$, à la variable b$ en exécutant l'instruction b$=LEFT$(a$,4) .

La fonction RIGHT$ fonctionne de manière similaire. Par contre, MID$ est un peu différente dans la mesure où vous devez définir la chaîne à découper, le point de départ de la sous-chaîne et la longueur de la chaîne qui sera produite comme résultat.

Si a$ est toujours égal à "NAPOLEON", l'instruction b$=MID$(a$,4,3) affectera la valeur OLE à b$. En effet, elle prélève 3 caractères de a$, à partir du quatrième.

Toutes les opérations de découpage de chaîne ne modifient pas la chaîne originale, à moins que la chaîne utilisée dans la section droite de l'équation soit la même que dans la section gauche. Ainsi donc, a$=LEFT$(4,a$) produit une chaîne formée des quatre derniers caractères de a$ et affecte cette valeur à a$ dont l'ancienne valeur s'efface.


CHAPITRE 22

VARIABLES TABLEAUX

Il est parfois utile de répartir les variables en groupes apparentés, c'est pourquoi l'OPL possède un autre type de variable, les variables tableaux. Elles se divisent en deux catégories: les tableaux numériques et les tableaux chaînes.

TABLEAUX NUMERIQUES

Ils permettent de ranger sous un même nom plusieurs chiffres différenciés par un index numérique. Ces variables peuvent être entières ou à virgule flottante et se présentent de la manière suivante :

a%(1), b(10).

On pourrait comparer les variables tableaux numériques à une liste de chiffres, portant tous le même nom, mais possédant un numéro exclusif pour les différencier les uns des autres. Vous pouvez donc créer un tableau d'entiers portant le nom de variable nom% et contenant cinq valeurs numérotées, comme on pourrait s'y attendre, de 1 à 5.

Lorsque vous déclarez un tableau, le nombre précisé entre parenthèses correspond aux nombres d'éléments que vous allez utiliser. Voici un exemple de procédure simple qui affecte des valeurs aux éléments d'un tableau d'entiers :

nom: LOCAL nom%(5) nom%(1)=1 nom%(2)=3 nom%(3)=5 nom%(4)=7 nom%(5)=11 PRINT nom%(1)+nom%(2)+nom%(3)+nom%(4)+nom%(5) GET

Il s'agit pas là de la meilleure méthode pour additionner les cinq éléments d'un tableau mais nous l'avons choisie pour illustrer la façon dont sont utilisés les éléments d'un tableau. Les tableaux à virgule flottante s'utilisent exactement de la même façon, si ce n'est que le signe '%' doit être omis dans le nom des variables.

TABLEAUX CHAÎNES

Nous avons vu plus haut que les variables numériques pouvaient être regroupées dans des tableaux, c'est également le cas pour les variables chaînes.

Cependant, pour les variables chaînes, vous devez déclarer la longueur maximale des chaînes comme c'était le cas lorsque vous déclariez la longueur des variables chaînes ordinaires, en plus du nombre d'éléments composant le tableau.

Cette longueur maximale doit être spécifiée au moment de la déclaration du tableau. Par conséquent, l'instruction :

GLOBAL tableau$(5,10)

attribue cinq chaînes au tableau tableau$, chacune d'entre elles pouvant contenir jusqu'à dix caractères. Ce tableau, qui est encore vide, pourrait être représenté par une table de ce type :

tableau$(1)="" tableau$(2)="" tableau$(3)="" tableau$(4)="" tableau$(5)=""

Bien que vous n'ayiez pas encore affecte de texte aux cinq éléments du tableau, le volume de mémoire réservé suffira a contenir les cinq chaînes par la suite. Les ci éléments du tableau contiennent une chaîne vide jusqu'à que vous leur affectiez une suite de caractères.


CHAPITRE 23

OPÉRATEURS

Jusqu'à présent, nous nous sommes contentés d'utiliser un seul opérateur arithmétique dans nos exemples de procédures : le signe (+). Il en existe évidemment d'autres dont la liste complète est donnée ci-dessous. Ils sont répartis en trois catégories : arithmétique, comparaison et logique.

Opérateurs arithmétiques

+addition
-soustraction
*multiplication
/division
**puissance
Signe moins unaire  négation

Opérateurs de comparaison

> supérieur à
>=supérieur ou égal à
< inférieur à
<=inférieur ou égal à
= égal à
<>    différent de

Opérateurs logiques

AND    et
OR ou
NOTinverse

PRIORITÉ DES OPÉRATEURS

Dans le langage OPL, chaque opérateur dispose d'un niveau de priorité différent. Ils sont illustrés ci-dessous par ordre hiérarchique; les opérateurs disposant d'une priorité équivalente sont indiqués sur une même ligne.

NOT, signe moins unaire    PRIORITÉ LA PLUS FORTE
**
*, /
+, -
=, >, <, <>, >=, <=
AND, ORPRIORITÉ LA PLUS FAIBLE

(Les opérateurs logiques AND, NOT et OR sont décrits de façon plus détaillée à la fin de ce chapitre.)

Les expressions arithmétiques du type a+b+c ne présentent aucun problème car le résultat reste le même quelle que soit l'addition effectuée en premier. Par contre, le résultat de l'expression a+b*c varie en fonction de la première opération réalisée, l'addition ou la multiplication.

C'est pourquoi l'addition et la soustraction dispose d'un même niveau de priorité plus faible que celui de la division et de la multiplication. Par conséquent, une expression du type :

a+b*c/d

va être traitée de la manière suivante : b*c est tout d'abord divisé par d et le résultat obtenu est ajouté à a.

Il est toutefois possible de changer l'ordre de priorité des opérateurs en ajoutant des parenthèses. En effet, les opérations entourées de parenthèses ont priorité sur les autres. En gardant notre exemple ci-dessus, nous pouvons donc effectuer tout d'abord l'addition, suivie de la division puis de la multiplication en modifiant l'expression comme suit :

(a+b)*(c/d)

Lorsque tous les opérateurs d'une expression disposent d'une priorité similaire, les calculs sont effectués de gauche à droite, à l'exception des élévations à la puissance qui sont réalisées de droite à gauche. Ainsi donc dans l'expression :

a%**b%**c%

l'ordinateur va tout d'abord élever b% à la puissance c% et a% va ensuite être élevé à la puissance du résultat obtenu.

Il s'agit là d'une opération relativement compliquée. Si vous ne connaissez pas très bien l'ordre de priorité des opérateurs, il vaut mieux utiliser des parenthèses pour ne pas prendre de risques ! Une opération entre parenthèses est toujours calculée en premier.

Bien que l'OPL sache reconnaître les entiers des nombres réels, vous pouvez très bien utiliser ces deux types de valeur dans l'ordre qui vous convient. Mais il faut quand même préciser la façon dont l'OPL va traiter ce type de mélange.

Supposons que vous choisissiez l'expression suivante :

a%=b%+c

qui contient deux types de variables : des nombres à virgule flottante et des entiers. Le premier type a priorité sur le second et l'OPL va donc convenir b% en nombre réel avant d'effectuer l'addition. Le résultat ainsi obtenu est ensuite arrondi à une valeur entière avant d'être affecté à la variable a%. Par conséquent, les décimaux vont disparaître pendant la conversion en valeur entière.

EXPRESSIONS LOGIQUES

Si la valeur de la variable a est inférieure ou égale à la valeur de b, l'instruction suivante :

PRINT a>b

a pour résultat zéro. En revanche, si a est supérieur à b, elle produit moins un.

Dans cet exemple, l'instruction a>b est considérée comme une expression logique. Elle ne peut avoir que deux résultats, selon que a et b sont ou non égaux.

Toutes les expressions logiques contiennent une condition quelconque. Elles ont pour résultat zéro si la condition est fausse, ou une valeur différente de zéro (en général moins un) si la condition est vraie.

Lorsqu'une expression doit fournir un résultat logique, l'OPL indique qu'elle est fausse en affichant zéro ou qu'elle est vraie en affichant une valeur différente de zéro. Par exemple, les deux expressions suivantes sont équivalentes :

a<>0 et a

Elles sont toutes deux logiquement vraies si a est différent de zéro.

OPÉRATEURS DE COMPARAISON

Les opérateurs de comparaison de l'OPL ont toujours pour résultat un nombre entier. Ils sont tous énumérés dans le tableau suivant. Ils peuvent être appliqués à des valeurs chaînes ou à des mélanges d'entiers et de nombres réels.

Leur effet est résumé dans le tableau suivant. :

Opérateur   Exemple   Résultat entier
<a%<b-1 (vrai) si a% est intérieur à b
>a%>b%-1 (vrai) si a% est supérieur à b%
<=a<=b-1 (vrai) si a est intérieur ou égal à b
>=a>=b%-1 (vrai) si a est supérieur ou égal à b%
<>a$<>b$-1 (vrai) si a$ est différent de b$
=a=b-1 (vrai) si a est égal à b

L'OPL affiche un message d'erreur si vous essayez d'utiliser un de ces opérateurs dans une expression contenant un mélange de variables chaînes et numériques, par exemple :

a$<b

OPÉRATEURS LOGIQUES

Les opérateurs AND, OR et NOT sont des opérateurs logiques et ne peuvent être appliqués qu'à des valeurs numériques. AND et OR combinent deux valeurs pour donner un seul résultat, tandis que NOT agit sur une seule valeur. Ces trois opérateurs ont un effet différent, selon qu'ils sont appliqués à des nombres entiers ou à virgule flottante.

Lorsqu'ils agissent sur des nombres à virgule flottante, les valeurs différentes de zéro sont considérées vraies, comme c'était le cas avec les opérateurs de comparaison. Leur effet est décrit dans le tableau suivant :

Opérateur   Exemple   Résultat entier
ANDa AND b-1 (vrai) si a et b sont tous deux différents de zéro
ORa OR b-1 (vrai) si a ou b est différent de zéro
NOTNOT a-1 (vrai) si a est égal à zéro (inverse la valeur)

Lorsque AND, OR et NOT sont utilisés avec des nombres entiers, ils constituent des opérateurs binaires logiques. Illustrons ceci par un exemple. L'instruction :

PRINT 12 AND 10

affiche la valeur 8. Pour pouvoir comprendre ce qui se passe, il est nécessaire d'écrire les deux entiers sous forme binaire.

Décimal    Binaire
121100
101010

L'opérateur AND agit séparément sur chaque paire de chiffres binaires correspondants dans chaque nombre. On obtient donc, de gauche à droite :

1 AND 1 → 1
1 AND 0 → 0
0 AND 1 → 0
0 AND 0 → 0

Cette opération a pour résultat le nombre binaire 1000 qui correspond à 8 en notation décimale.

Quel serait le résultat de l'instruction suivante ?

PRINT 12 OR 10

Là encore, écrivez les chiffres sous forme binaire et appliquez l'opérateur à chaque paire de chiffres correspondants :

1 OR 1 → 1
1 OR 0 → 1
0 OR 1 → 1
0 OR 0 → 0

On obtient comme résultat le nombre binaire 1110 ou le nombre décimal 14.

L'opérateur NOT se contente d'inverser un entier, c'est-à-dire qu'il remplace chaque 1 par un 0, et vice versa, dans la représentation binaire de la valeur sur laquelle il agit. Pour calculer le résultat à la main, il faut écrire les 16 chiffres binaires. Par exemple, pour calculer la valeur de NOT 7 , écrivez les 16 chiffres correspondant à 7 en notation binaire :

0000000000000111

Puis inversez-les, ce qui donne :

1111111111111000

Ce chiffre binaire représente le nombre entier -8.

Un conseil. Il existe une méthode plus rapide pour calculer le résultat de NOT sur un nombre entier. Il suffit de rajouter 1 au nombre choisi et de lui changer de signe. Par conséquent, NOT 23 aura pour résultat -24, NOT 0 -1 et NOT -1 0. Il est à noter que les deux derniers résultats ne changeront pas en appliquant NOT à un nombre à virgule flottante.


CHAPITRE 24

PROCÉDURES

Un nom de procédure peut contenir jusqu'à 8 caractères dont le premier doit obligatoirement être une lettre. Elle peut être suivie d'autres lettres ou de caractères numériques. Une procédure peut également comporter un qualificatif selon le type de valeur qu'elle doit produire (si c'est le cas).

Prenons par exemple la procédure PROC$ qui fournit une chaîne. Le qualificatif ($ pour les chaînes et % pour les entiers) doit faire partie des huit caractères. Par conséquent, le nom MATERIEL$ est illégal. Un nom de procédure est toujours suivi du signe 'deux points'.

Les différents programmes se composent d'une ou plusieurs procédures. La procédure principale appelle une ou plusieurs procédures différentes, chacune d'entre elles exécutant une tâche bien précise. Les procédures peuvent également s'appeler entre elles.

Si la procédure principale est exécutée sur l'unité A: par exemple, l'OPL va tout d'abord rechercher sur cette même unité les procédures qu'elle appelle. Si elles ne s'y trouvent pas, il passe à l'unité suivante (B:), etc.

Par contre, si la procédure principale se trouve sur l'unité B:, l'OPL examine tout d'abord cette unité, puis l'unité C:, puis l'unité A: à la recherche des autres procédures.

GLOBAL ET LOCAL

Nous avons vu dans les chapitres précédents que la commande GLOBAL servait à déclarer les variables. Il existe une autre commande effectuant un travail similaire : LOCAL.

Elles ont une fonction similaire dans la mesure où elles servent toutes deux à déclarer les variables dont le programme va se servir. Il existe toutefois une différence importante entre ces deux commandes. Les variables déclarées par la commande GLOBAL dans une procédure peuvent naturellement être utilisées dans cette dernière, mais aussi dans toutes les autres procédures qu'elle appelle. Par conséquent, toutes les procédures appelées par une procédure particulière peuvent accéder aux valeurs qu'elle a affectées aux variables globales.

Toutes les procédures peuvent contenir une commande GLOBAL mais les variables ainsi déclarées resteront ensuite 'globales dans le reste du programme, c'est-à-dire dans cette procédure particulière et dans toutes celles qu'elle appelle.

La commande LOCAL peut également être utilisée dans n'importe quelle procédure pour déclarer des variables que seront utilisées uniquement dans la procédure en question. Par conséquent, vous pouvez donner à chaque procédure un jeu de variables qui lui est propre grâce à ces commandes. Seule la procédure dans laquelle elles sont déclarées est libre d'y accéder. Même si deux variables locales situées dans deux procédures différentes portent un même nom, elles restent bien distinctes et ne risquent pas de s'affecter mutuellement.

Lorsque l'OPL découvre dans une procédure une variable qui n'y est pas déclarée, il assume automatiquement qu'elle a été déclarée variable globale dans une autre procédure. Elle est alors appelée variable externe dans la mesure où sa déclaration se trouve hors de la procédure exécutée.

Vous pouvez utiliser autant de commandes GLOBAL et LOCAL que vous le souhaitez, à condition de les spécifier avant les autres instructions de la procédure. Les variables gui n'ont pas été définies par une de ces commandes donnent lieu une erreur au moment de l'exécution du programme.

Lorsqu'une procédure en appelle une autre, on dit que la seconde se trouve au-dessous de la première. La seconde peut à son tour en appeler d'autres qui se trouvent au-dessous d'elle dans la hiérarchie générale.

La procédure principale de la figure 5 ci-contre, proc:, déclare la variable globale a% et appelle ensuite les procédures situées au-dessous.

La procédure suivante ventes, se sert de a%. On passe ensuite à salaires qui définit une autre variable globale appelée a% a laquelle vont pouvoir accéder toutes les procédures suivantes mais qui leur empêche d'utiliser la première variable globale portant le même nom. Par conséquent, lorsque la dernière procédure, couts, se sert de la variable a%, elle accède en fait à la variable déclarée sous ce nom dans la procédure salaires dont elle est la plus proche dans la hiérarchie.

Figure 5 - Disponibilité des variables

C'est donc au programmeur de s'assurer que les procédures ont accès aux variables correctes lorsqu'elles portent le même nom.

PARAMETRAGE DES PROCÉDURES

Les procédures communiquent entre elles par l'intermédiaire des variables globales comme nous l'avons vu plus haut. Il est aussi possible de transmettre des valeurs a une procédure au moyen de paramètres.

Le nom d'une procédure peut en effet être suivi d'un certain nombre de paramètres servant à transmettre des valeurs externes à cette procédure. Comme c'était le cas pour les variables locales, les noms de ces paramètres n'ont aucun effet hors de la procédure en question. Prenons un exemple pour mieux illustrer ce que nous venons de voir:

fact:(n) IF n=0 RETURN 1 ENDIF RETURN n*fact:(n-1)

Cette procédure calcule la factorielle d'un nombre qui lui est transmis par le paramètre n. Pour cela, elle doit s'appeler aussi souvent que nécessaire.

A la différence des autres exemples que nous avons étudiés jusqu'ici, le nom de cette procédure est suivi d'un nom de paramètre entre parenthèses. C'est pour cette raison que lorsque vous commencez à écrire votre procédure après avoir sélectionné l'option NOUV du menu de programmation, le curseur se positionne au départ à la fin du nom de la procédure. Vous avez en effet possibilité d'ajouter un ou plusieurs noms de paramètres à la suite de celui de la procédure.

Voici un exemple de procédure qui peut être lancé à partir du menu principal ou de programmation, et qui appelle la procédure fact: :

execute: LOCAL resultat,nombre PRINT "Factorielle de "; INPUT nombre resultat=fact:(nombre) PRINT resultat GET

La première procédure est exécutée à partir du menu PROG et affiche un message sur l'écran. Le nombre que vous spécifiez est ensuite transmis à la seconde procédure qui en calcule la factorielle et affiche le résultat sur l'écran. La dernière ligne de a procédure principale se contente d'attendre que vous appuyiez sur une touche du clavier pour réafficher le menu PROG.

Comme vous pouvez le remarquer, la ligne resultat=fact:(nombre) de la procédure execute: transmet la valeur de la variable nombre à fact: et affecte le résultat obtenu à la variable resultat. (Nous avons utilisé des variables à virgule flottante plutôt que des nombres entiers, car les factorielles des chiffres supérieurs à 7 dépassent le maximum imparti.)

La méthode permettant de transmettre plusieurs valeurs à une procédure comportant plus d'un paramètre est similaire. Les paramètres sont spécifiée entre parenthèses et séparés par des virgules, par exemple proc:(a,b,c).

Il existe certaines règles à respecter lorsqu'on utilise des paramètres. Tout d'abord, le nombre e valeurs transmises à la procédure doit être le même que le nombre de paramètres spécifié. De plus, elles doivent être fournies dans le même ordre que les paramètres et être du même type. On ne peut appeler un paramètre que par le nom qui a été déclaré.

Les paramètres diffèrent aussi des variables réelles en ce sens que leur valeur ne peut être modifiée. Par conséquent, nous n'aurions pas pu affecter une autre valeur à n dans la procédure fact en entrant, par exemple, n=n-1.

RENVOI DE VALEURS

A la fin de la procédure, le contrôle de programme revient automatiquement à la ligne l'ayant appelée. La commande RETURN, qui peut figurer n'importe où dans la procédure, force cette dernière à se terminer à un endroit différent de celui normalement prévu. Elle sert également à renvoyer une valeur à la procédure d'appel ou à la calculatrice.

La commande RETURN ne renvoie toutefois qu'une seule valeur à une procédure tandis que les variables globales peuvent en renvoyer un nombre illimité.

Par contre, une valeur renvoyée à la calculatrice, par exemple, à partir de ta procédure principale doit obligatoirement être transmise par la commande RETURN. Lorsqu'une procédure doit produire une valeur et que cette commande n'en transmet aucune, l'OPL assume par défaut qu'il s'agit de la valeur zéro ou d'une chaîne vide.

Une procédure chaîne, comme proc$: par exemple, doit obligatoirement produire une chaîne ou rien du tout. Si a commande RETURN renvoie une valeur numérique à la procédure d'appel, à un message d'erreur s'affiche.

EXECUTION DES PROCÉDURES

Nous avons vu, en chapitre 16, comment introduire de nouvelles options dans le menu principal de l'Organiseur. Vous pouvez aussi y rajouter des procédures, telles que proc:, que vous exécuterez directement a partir de ce niveau. Dans ce cas, les deux points à la suite du nom de la procédure disparaissent et les lettres minuscules sont converties automatiquement en majuscules.

Elles peuvent être lancées à partir de la mémoire interne de la machine ou d'un Datapak.

Lorsque vous sélectionnez ensuite l'option PROC du menu principal en procédant comme de coutume, l'écran s'efface et la procédure est exécutée automatiquement, comme si vous l'aviez lancée à partir du menu PROG. Une fois le programme terminé, l'Organiseur réaffiche le menu principal et non pas le menu PROG.

Il n'est pas possible de transmettre des valeurs à une procédure exécutée depuis le menu principal. Par contre, vous pouvez ensuite spécifier des valeurs à la procédure principale de la manière habituelle afin de les transmettre aux procédures suivantes.

MENUS DE PROCÉDURES

La fonction MENU permet à une procédure d'afficher un menu dont vous sélectionnerez ensuite les options, tout comme s'il s'agissait d'un des menus de l'Organiseur.

Une procédure lancée depuis le menu principal peut afficher un sous-menu offrant un certain nombre d'options connexes et débouchant sur d'autres procédures qui appellent à leur tour un autre menu dont les options vous permettent de sélectionner différentes actions.

COMMENT SORTIR D'UNE PROCÉDURE

Pour interrompre une procédure, appuyez tout d'abord sur ON/CLEAR qui en interrompt le déroulement temporairement. Il suffit ensuite de presser la touche Q pour en sortir. L'écran se présente alors de la manière suivante :

ANNULATION   DANS A:nom

Appuyez ensuite sur la touche SPACE pour en revenir à l'endroit a partir duquel la procédure a été lancée.

Notes: Cette méthode d'interruption ne peut fonctionner si vous avez spécifié la commande ESCAPE OFF qui désactive la touche ON/CLEAR pour l'empêcher d'interrompre les procédures ou de les suspendre. Si votre procédure amorce une boucle sans fin logique, et que vous avez désactivé ON/CLEAR, il ne vous reste qu'une solution : enlever la pile de l'Organiseur. Dans ce cas, toutes les données enregistrées en mémoire interne sont irrémédiablement perdues.

Si vous voulez sortir d'une boucle OPL qui utilise les commandes GET, KEY ou INPUT, pressez ON/CLEAR suivi TRES RAPIDEMENT de Q, et répétez cela plusieurs fois et le plus vite possible. Il peut être très difficile d'interrompre une boucle si elle ne contient pas d'autre commande, essayez donc d'éviter de vous trouver dans cette situation.


CHAPITRE 25

MANIPULATION DES FICHIERS DE DONNÉES

Avant de commencer à sauvegarder des informations, vous devez d'abord choisir le format que vous allez leur donner.

FICHIERS ET ENREGISTREMENTS

Dans l'Organiseur, les informations sont enregistrées sous forme de fichiers qui portent tous un nom de fichier unique. Ces fichiers se divisent à leur tour en enregistrements. En fait, un fichier d'ordinateur ressemble énormément à un classeur de bureau, dans lequel les enregistrements sont remplacés par des fiches qui contiennent toutes des informations dans un format particulier.

Les enregistrements d'un fichier contiennent tous des informations d'un même format, mais qui varient d'un enregistrement à l'autre. Par exemple, dans le fichier des noms et adresses, chaque enregistrement contient le nom, le numéro de téléphone et l'adresse d'une personne particulière.

ZONES

Dans un classeur de bureau, les informations consignées sur chaque fiche sont organisées d'une manière particulière qui reste la même sur toutes les fiches. Les différentes sections sont toutes réservées à un aspect spécifique. C'est également le cas dans les fichiers de l'Organiseur. Chaque rubrique est enregistrée dans un endroit particulier de l'enregistrement appelé zone. Ainsi donc dans le fichier des noms et adresses, vous pouvez avoir une zone nom une zone numéro de téléphone et des zones séparées réservées à chacune des lignes de l'adresse.

Lorsque l'Organiseur affiche le menu principal, il assume que toutes les opérations sélectionnées, telles que SAUV et RECH, vont être exécutées sur un fichier sauvegardé en mémoire ou sur l'un des Datapaks - selon l'unité en cours. Ce fichier est appelé fichier MAIN, ou fichier principal en français. Vous n'avez toutefois pas à inquiéter du nom de fichier si vous vous trouvez dans le menu principal, car vous ne pouvez accéder qu'au contenu d'un seul fichier.

Figure 6 - Classeur de bureau

L'OPL vous permet de créer d'autres fichiers que vous manipulerez ensuite à partir du language de programmation, et vous laisse même accéder au fichier MAIN.

Il contient en effet un certain nombre de commandes réservées à la manipulation des fichiers de données, et vous permettant de réaliser des opérations très sophistiquées. Grâce à ces commandes et aux puissants outils de l'OPL, vous avez à votre disposition une puissance de traitement de données incomparable dans un format de poche.

CREATION D'UN FICHIER DE DONNÉES

Avant de commencer à entrer des données dans un fichier, vous devez tout d'abord le créer sur une des unités disponibles en lui choisissant un nom et un format au moyen de la commande CREATE.

La commande CREATE doit donc être suivie d'un certain nombre de paramètres, comme suit :

CREATE <fichier$>,nom_logique,zone1,zone2

par exemple :

CREATE "A:CLIENTS",a,numero,nom$,adresse$,solde

Le paramètre <fichier$> se compose de l'unité et du nom de fichier à créer. Il peut être une constante chaîne, telle que B:nom_de_fichier, ou une variable chaîne telle que fichier$. Le nom de fichier ne doit pas contenir plus de huit caractères. Le paramètre suivant est le nom de fichier logique et peut avoir pour valeur A, B, C ou D. C'est ce nom qui servira ensuite à appeler le fichier dans le programme proprement dit.

On en vient ensuite aux noms de zones. Chaque enregistrement peut en contenir 16 au maximum. Les noms de zone comportent parfois un qualificatif (% ou s) indiquant qu'il s'agit de données numériques entières ou chaînes. Les zones contenant des données à virgule flottante n'ont pas besoin de qualificatif. Il convient de rappeler que le nom d'une zone ne peut dépasser huit caractères, qualificatif y compris.

Lorsque vous créez un fichier, il s'ouvre automatiquement et vous pouvez commencer à y sauvegarder immédiatement des enregistrements, sans passer par la commande OPEN. Ce fichier est appelé fichier en cours et le restera jusqu'à ce que vous en changiez au moyen des commandes USE, CREATE et OPEN.

OUVERTURE D'UN FICHIER

Pour ouvrir un fichier créé plus tôt au moyen de la commande OPEN, la syntaxe à suivre est exactement la même que pour CREATE. Vous pouvez ouvrir simultanément jusqu'à quatre fichiers sauvegardés sur les trois unités, par exemple deux sur A: et deux autres sur B:, ou un fichier sur A: et sur B: et deux autres sur C:.

CHANGEMENT DE FICHIER

Le fichier que vous créez ou que vous ouvrez devient automatiquement le fichier en cours et toutes les opérations sélectionnées sont exécutées sur ce fichier. Si vous avez ouvert plusieurs fichiers, la commande USE vous permet de passer dé l'un à l'autre.

Par exemple :

USE B

fait du fichier dont le nom logique est B (spécifié lors de l'ouverture ou de la création du fichier), le fichier en cours. Toutes les commandes sélectionnées agissent sur ce fichier jusqu'à ce que vous en changiez à l'aide de la commande USE ou jusqu'à la prochaine ouverture, création ou fermeture de fichier. Un message d'erreur s'affiche si vous essayez d'utiliser un fichier qui n'a pas été préalablement ouvert.

ADDITION D'ENREGISTREMENTS DANS UN FICHIER

Pour ajouter un enregistrement dans le fichier ouvert, vous devez tout d'abord affecter certaines valeurs aux noms de zones en cours. Les noms de zones fonctionnent de la même façon que les variables dans la mesure où on peut leur affecter une valeur ou les utiliser dans les instructions INPUT (entrée).

Pour entrer une valeur dans une zone de données au moyen de la commande INPUT, il faut préciser le nom de la zone ainsi que le nom logique du fichier comme illustré ci-dessous :

INPUT B:zone$

B étant le nom logique du fichier et zone$ le nom de la zone. Ils sont séparés par un point.

Après avoir affecté une valeur à ces zones, vous pouvez les ajouter au fichier ouvert au moyen de la commande APPEND qui pourrait se traduire en français par 'ajoute à la fin de'. Les zones d'un enregistrement se composent des valeurs affectées à toutes les variables de zones du fichier en cours. APPEND ne comporte pas de paramètre et les valeurs de zone sont automatiquement ajoutées au fichier dans l'ordre et le format corrects.

Comme c'était le cas pour les autres variables, un message d'erreur s'affiche si vous essayez d'affecter une chaîne à une variable numérique.

Les enregistrements ne peuvent être insérés au milieu d'un fichier, ils sont automatiquement ajoutés à la fin.

Lorsque vous accédez à un fichier de données, vous pouvez à tout instant vous servir des noms de zones en cours comme de toute autre variable, par exemple dans une instruction PRINT, ou dans une expression chaîne ou numérique.

Vous trouverez au chapitre 32 un exemple de procédure OPL illustrant les commandes de création et d'ouverture de fichier, ainsi que celles permettant la manipulation d'enregistrements.

FIRST, NEXT, BACK, LAST ET POSITION

Ces cinq commandes servent à changer d'enregistrement en cours. La première, FIRST, passe au premier enregistrement du fichier.

La seconde, NEXT passe à l'enregistrement suivant dans le fichier. Si vous vous trouvez à la fin du fichier, cette commande n'affiche pas de message d'erreur mais la fonction EOF (fin de fichier) est vraie (c.f. chapitre 34). Dans ce cas l'enregistrement en cours est vide.

BACK permet de revenir à l'enregistrement précédent mais si vous vous trouvez au début du fichier, cette commande n'a aucun effet.

La commande LAST passe au dernier enregistrement du fichier.

Vous avez également possibilité de passer à un enregistrement particulier en lançant la commande POSITION comme son nom le suggère. Par exemple, pour afficher le troisième enregistrement, il suffit de préciser POSITION 3. (À noter que le premier enregistrement porte le numéro 1).

La fonction POS vous indique le numéro de l'enregistrement en cours.

EFFACEMENT D'UN ENREGISTREMENT

Pour effacer un enregistrement, il suffit tout simplement d'en faire l'enregistrement en cours à l'aide d'une des commandes que nous avons étudiées ci-dessus (FIRST, NEXT, BACK, LAST ou POSITION ) et de sélectionner ERASE, la commande d'effacement. Elle supprime l'enregistrement du fichier et renumérote les suivants.

RECHERCHE D'UN ENREGISTREMENT

La fonction FIND vous permet de rechercher un enregistrement en spécifiant une suite de caractères qu'il contient.

Elle fonctionne différemment de la fonction RECH du menu principal. En effet cette dernière affiche sur l'écran le texte qu'elle a trouve tandis que dans l'OPL, elle se contente d'indiquer un numéro d'enregistrement.

Par conséquent, si elle trouve un enregistrement correspondant au critère de recherche, elle en affiche le numéro et en fait l'enregistrement en cours. Dans le cas contraire, elle affiche un zéro.

Ainsi donc, la ligne r%=FIND("Napoleon") fait du premier enregistrement contenant la chaîne "Napoleon" l'enregistrement en cours, et affecte le numéro de cet enregistrement à la variable r%.

FERMETURE D'UN FICHIER

Une fois que vous en avez terminé avec un fichier, vous pouvez le refermer au moyen de la commande de fermeture CLOSE.

EFFACEMENT D'UN FICHIER

La commande d'effacement des fichiers de données est intitulée DELETE. Avant de pouvoir effacer un fichier, vous devez le refermer. Si ce n'est pas le cas, un message d'erreur s'affiche. Vous devez préciser le nom de l'unité sur laquelle le fichier est stocké ainsi que le nom du fichier en question:

DELETE <fichier$>

Le paramètre <fichier$> se compose de l'unité et du nom de fichier sous forme de constante chaîne, telle que B:nom_de_fichier, ou de variable chaîne telle que fichier$. Il est impossible de récupérer un fichier effacé - il est irrémédiablement perdu !

COPIE D'UN FICHIER

La commande COPY est un puissant outil fonctionnant de la même façon ace la fonction de copie du menu principal. Il existe trois façon de procéder : prendre une copie d'un fichier en lui attribuant le même nom que l'original, prendre une copie sous un autre nom ou recopier en même temps tous les fichiers de données d'une unité à l'autre. Ces trois versions se présentent ce la manière suivante dans un programme :

COPY "unite1:nom_de_fichier1","unite2:" COPY "unite1:nom_de_fichier1","unite2:nom_de_fichier2" COPY "unite1:","unite2:"

Toutes les constantes chaînes utilisées dans ces exemples peuvent être remplacées par des variables chaînes.


CHAPITRE 26

BOUCLES, LABELS, SAUTS ET BRANCHEMENTS

Pour l'instant, nous n'avons étudié que des programmes se déroulant directement du début à la lin, sans aucune déviation. Ils se composaient en effet de séries d'instructions qui étaient exécutées dans l'ordre où elles apparaissaient dans le programme. Vous devez donc vous imaginer que pour répéter plusieurs fois de suite la même instruction, vous devez la réécrire autant de fois que nécessaire dans le programme.

Il est bien évident que cette méthode n'est pas très efficace et qu'il existe d'autres solutions. On peut en effet obliger à 'boucler sur une section du programme' ou, autrement dit, à répéter les instructions qu'elle contient, autant de fois que nécessaire où jusqu'à ce qu'une certaine condition ait été remplie.

Il s'agit là d'un des aspects les plus importants du concept de 'sauvegarde de programme', et l'OPL vous offre plusieurs façons d'y parvenir.

Les deux premières font appel aux boucles DO/UNTIL et WHILE/ENDWH. Elles sont appelées structures de programme car elles n'exécutent pas de tâches précises, elles se contentent de répéter d'autres instructions aussi souvent que nécessaire. Ces deux boucles fonctionnent de la même façon, a cette différence près que la structure DO/UNTIL vérifie si une condition a été remplie à la fin de la boucle, tandis que WHILE/ENDWH la vérifie au début.

BOUCLE DO/UNTIL

Commençons par un exemple d'utilisation de la boucle DO/UNTIL:

a%=10 DO PRINT "A=";a% :a%=a%-1 UNTIL a%=0

Comme vous l'avez probablement remarque, il ne s'agit là que d'une toute petite section de programme destinée uniquement à illustrer le fonctionnement des boucles.

La première ligne affecte à la variable entière a% la valeur 10. La boucle proprement dite commence à la ligne suivante par l'instruction DO. Elle indique à l'OPL "d'exécuter toutes les lignes suivantes du programme jusqu'à ce qu'il rencontre une instruction UNTIL. Si la condition précisée à la suite de cette instruction n'est pas vraie, continue à répéter toutes les instructions jusqu'à ce qu'elle le soit." Vous avez peut-être trouvé cette explication un peu longue mais forcez-vous à la relire une seconde fois, vous verrez qu'elle est très simple.

La ligne suivante indique à l'OPL d'afficher une chaîne très courte sur l'écran suivie de la valeur affectée à la variable a%. Au premier tour de boucle, a% a pour valeur 10.

Puis le programme ôte 1 à la valeur de a% qui passe donc à 9. Nous arrivons ensuite à l'instruction UNTIL suivie de la condition : a est égal à zéro.

Comme il s'agit là du premier tour de boucle, il est évident que la valeur de a est différente de zéro et le contrôle de programme repasse à l'instruction DO pour reprendre la boucle. A la fin du second tour, a% a pour valeur 8 et la condition n'est toujours pas vraie. Ce procédé se poursuit jusqu'à ce que a ait pour valeur zéro.

A ce moment là, la condition est remplie et le contrôle de programme peut passer directement à la ligne suivant l'instruction UNTIL.

La première instruction placée entre DO et UNTIL peut être entrée à la suite de DO. Nous pouvons donc modifier la seconde ligne du programme par :

DO PRINT "A=";a%

BOUCLE WHILE/ENDWH

La structure WHILE/ENDWH fonctionne de manière presque identique et nous allons là encore commencer par prendre un exemple.

a=4.1 b=2.7 WHILE a>b PRINT "a est superieur" PRINT "a b" b=b+1.04 ENDWH

Dans cette structure, la condition se trouve au début de la boucle. Si le programme contient la première partie d'une de ces deux structures (DO ou WHILE) mais ne comporte pas la fin de boucle correspondante, un message d'erreur s'affiche.

Il est possible d'emboîter plusieurs boucles ensemble (8 au maximum) car l'OPL en connaît le nombre et s'assure que chacune d'entre elles comporte bien un début et une fin du type correct. Si vous essayez de terminer par ENDWH une boucle que vous avez commencée par DO, une erreur de structure s'affiche au cours du transcodage de la procédure.

Remarque. Vous pouvez utiliser les opérateurs logiques de l'OPL dans la condition de boucle. Pour de plus amples informations sur ces opérateurs, reportez-vous au chapitre 23.

LABELS ET SAUTS

Il existe une autre commande permettant de dévier le contrôle de programme. Il s'agit de GOTO lui qui indique de passer directement à une autre section de la procédure qui est appelée label.

Le label utilisé doit se trouver dans la même procédure que la commande GOTO. Le saut associé n'est pas soumis à une condition ou, autrement dit, sera exécuté dans tous les cas.

GOTO sortie:: PRINT "JE SAUTE UNE PREMIERE LIGNE" PRINT "ET UNE SECONDE" sortie::

Dans cet exemple, le programme passe directement à la ligne commençant par le label sortie:: dès qu'il atteint l'instruction GOTO. Remarquez que les labels doivent se terminer par deux signes 'deux points'.

BRANCHEMENTS

GOTO est une des méthodes permettant de faire un branchement à l'intérieur d'un programme. Il s'agit toutefois d'un outil assez rudimentaire qui, s'il est utilisé sans discernement, mènera à ce qu'on appelle de la programmation 'spaghetti' et rendra les programmes difficiles à lire et à mettre au point.

Il existe une méthode bien plus flexible pour effectuer un branchement et, dans notre cas, un branchement conditionnel, avec la structure IF/ELSEIF/ELSE/ENDIF.

Cette structure permet d'exécuter une ou plusieurs instructions si (IF) une condition est vraie. Si ce n'est pas le cas, le programme peut se poursuivre par l'instruction ELSEIF qui vérifie une autre condition. Il peut y avoir plusieurs ELSEIF dans une structure IF/ENDIF.

Une fois que l'instruction ELSEIF a vérifié toutes les possibilités, l'instruction ELSE, suivie de ENDIF à latin du programme, traite les autres cas possibles.

Là encore, il vaut mieux prendre un exemple pour rendre les choses plus claires:

rapport: LOCAL g% g%=GET PRINT "CETTE TOUCHE" IF g%>64 AND g%<91 PRINT 'EST UNE MAJUSCULE" ELSEIF g%>96 AND g%<123 PRINT "est une minuscule" ELSE PRINT "N'EST PAS UNE LETTRE" ENDIF GET

Le programme attend que vous appuyiez sur une touche du clavier, puis vous indique s'il s'agit d'une majuscule ou d'une minuscule. S'il ne s'agit pas d'une lettre, il vous l'indique également grâce à l'instruction ELSE qui pourrait se traduire par 'autrement'. L'instruction ELSE n'exige pas de condition dans la mesure où elle autorise d'autres possibilités que celles prévues dans les conditions des instructions ELSEIF qui pourraient se traduire par 'ou si'.

Les instructions ELSEIF et ELSE sont facultatives. En revanche, à chaque IF doit correspondre un ENDIF sous peine d'obtenir une erreur.

L'instruction suivant ELSE peut être entrée sur la même ligne que cette commande. Par conséquent, nous aurions pu utiliser :

ELSE PRINT "N'EST PAS UNE LETTRE"

dans la procédure ci-dessus.


CHAPITRE 27

TRAITEMENT DES ERREURS

INTERCEPTION DES ERREURS

Nous avons vu, à plusieurs reprises, qu'un message d'erreur s'affiche en présence d'un argument ou paramètre incorrect, ou lorsque la syntaxe d'une commande particulière n'est pas respectée.

En temps normal, l'écran s'efface et affiche un message d'erreur correspondant au type d'erreur rencontré dans le programme.

Dans ce cas, le programme s'interrompt automatiquement. Il existe toutefois plusieurs méthodes qui vous éviteront d'en arriver là. Elles doivent cependant être utilisées avec précaution car elles donnent au programmeur la maîtrise totale de la machine.

Les outils contrôlant l'affichage des messages d'erreur sont les commandes ONERR, TRAP et RAISE ainsi que les fonctions ERR et ERR$.

La première commande, ONERR, permet de détecter la présence d'une erreur et de diriger le contrôle de programme vers une autre section de la procédure pour pouvoir supprimer cette erreur.

L'instruction ONERR doit être suivie d'un label se trouvant dans la même procédure, par exemple :

ONERR zero:: PRINT PI/0: PRINT PI zero:: PRINT "C'EST IMPOSSIBLE" ONERR OFF

La première ligne indique à l'OPL de se brancher à la ligne commençant par le label zero:: en présence d'une erreur. Puis la ligne suivante essaie d'effectuer une division par zéro ce qui provoque naturellement une erreur. Le programme se rend donc au label.

Puis la machine affiche le message que vous avez choisi. Remarquez que, dans cet exemple, la ligne contenant l'erreur n'est jamais exécutée.

Lorsque vous utilisez la commande ONERR, toutes les erreurs survenant dans la suite du programme - même dans d'autres procédures - renvoient le programme au même endroit, c'est-à-dire au label zero. Si vous souhaitez renvoyer le programme à une autre section, vous devez entrer une autre commande ONERR suivie d'un label différent, ou annuler la première avec ONERR OFF . Cette dernière désactive en effet la fonction d'interception d'erreur, et toutes les erreurs intervenant par la suite donnent lieu au message d'erreur approprié. La figure 7 va nous permettre d'illustrer ce que nous venons de voir.

Figure 7 - Commande ONERR

L'erreur figurant dans la procédure proc1 (a=LOG(-1)) renvoie le contrôle de programme à un point déterminé par label:: qui traite ensuite l'erreur. Cependant, si la commande ONERR n'est pas désactivée par ONERR OFF, les erreurs intervenant dans les procédures appelées par proc1, c'est-à-dire proc3 dans notre exemple, continuent à renvoyer le contrôle de programme au même endroit, label::.

C'est peut-être là ce que vous recherchez, mais vous devez vous assurer que les commandes ONERR label:: et ONERR OFF ont été correctement utilisées si vous ne souhaitez pas que toutes les erreurs renvoient le contrôle de programme au même endroit que ONERR label::.

La commande TRAP (interception) est un autre outil de traitement des erreurs. Elle peut être utilisée avec toutes les commandes énumérées ci dessous :

APPEND   BACK CLOSE
COPY CREATE DELETE
ERASE EDIT FIRST
INPUT LAST NEXT
OPEN POSITION   RENAME
UPDATEUSE

La commande d'interception doit précéder chacune de ces commandes et en être séparée par un espace, comme le montre l'exemple suivant :

TRAP INPUT a%

La commande INPUT est exécutée normalement mais en cas d'erreur d'exécution, l'erreur est supprimée ou interceptée et le programme se poursuit comme s'il ne s'était rien passé.

C'est ce qui arriverait dans l'exemple ci-dessus si nous tapions une chaîne au lieu d'un entier. Cette commande permet au programme d'afficher son propre message d'erreur dans une telle éventualité et laisse l'utilisateur faire une seconde tentative. En revanche, si la commande INPUT n'est pas précédée de TRAP, et que vous entrez une chaîne au lieu d'une valeur numérique, l'affichage défile d'une ligne vers le haut et un point d'interrogation apparaît pour vous demander de faire une autre entrée, correcte cette fois.

label:: PRINT "NOMBRE ?" TRAP INPUT a% IF ERR=226 PRINT "CE N'EST PAS UN NOMBRE" GOTO label:: ENDIF

Dans cet exemple, si vous entrez une chaîne au lieu d'un nombre, l'instruction TRAP permet quand même au programme d'exécuter la ligne suivante. Dans ce cas, l'instruction IF trouve l'erreur, affiche un message approprié puis repasse à la ligne contenant le guide-opérateur pour vous permettre de faire une seconde tentative.

Cet exemple vous montre également la fonction ERR à l'action. Elle produit le numéro de la dernière erreur rencontrée dans le programme conformément au tableau que nous examinerons dans la suite de ce chapitre.

La dernière commande vous permettant de contrôler l'interception d'erreur est RAISE. Elle permet de créer une erreur à dessin.

Si vous vous servez de la commande ONERR pour intercepter les erreurs et les résoudre vous-même, il vous faudra tester les routines de traitement d'erreur à un certain moment pendant le développement du programme. La meilleure façon d'y parvenir est certainement la commande RAISE.

Elle vous permet en effet de provoquer une erreur que vous pensez susceptible d'intervenir pendant l'exécution du programme et de voir ainsi si la routine de traitement des erreurs arrive à s'en occuper comme vous l'avez prévu.

RAISE peut également s'utiliser seule au moment où vous rassemblez plusieurs procédures s'appelant en séquence pour composer le programme final. Si la procédure exécutée a été appelée par une autre qui avait auparavant elle-même été appelée, il vous faudra dans certain cas repasser le plus vite possible au premier niveau pour réaliser une opération particulière. En général, on utilise la commande RETURN pour sortir tour à tour de toutes les procédures.

Il existe toutefois une méthode plus rapide pour y arriver. Il suffit en effet de placer une instruction ONERR dans la procédure principale. Puis, lorsque vous provoquez une erreur au plus bas niveau avec la commande RAISE, le contrôle de programme retourne directement au label suivant la commande ONERR, même si elle doit pour cela sauter toute une séquence de procédures.

MESSAGES D'ERREUR

Lorsqu'une erreur se produit, la fonction ERR affiche le numéro associé au type d'erreur dans le tableau que nous verrons par la suite. Elle peut faire partie d'une programme. Ainsi, lorsqu'une erreur se produit, vous pouvez l'intercepter et la traiter à l'intérieur même du programme s'il s'agit d'une des erreurs anticipées.

La fonction ERR$ permet d'accéder au message d'erreur en spécifiant le numéro associé.

En revanche, si l'erreur qui se produit n'est pas interceptée, le programme s'arrête et le message d'erreur s'affiche. A ce niveau, l'OPL vous offre la possibilité de passer en mode d'édition (EDIT) à partir du menu de programmation PROG. Si vous lancez cette option, le curseur s'affiche sur l'instruction responsable de l'erreur, ou à proximité, pour vous laisser la corriger. (Pour cela, il faut naturellement que la version texte de la procédure soit disponible - voir le chapitre 31 pour un complément d'information).

Nous allons maintenant examiner les messages d'erreurs possibles, leur numéro et leur signification :

255PLACE RESERVEE
Ce message ne s'affiche que lorsque des routines en langage machine accédant à l'espace tampon interne sont exécutées.
254PLUS DE MEMOIRE
Les programmes, les entrées de l'agenda et les fichiers de données occupent la totalité de l'espace disponible en mémoire interne, ou le programme en cours d'exécution a utilisé toute la mémoire disponible.
253EXP ILLEGAL
Un nombre a dépassé l'exposant maximum de plus ou moins 99.
252ERR NUM-CAR
La chaîne transmise à la fonction VAL n'est pas une chaîne numérique.
251DIVISEUR NUL
Une valeur ne peut être divisée par zéro.
250ERR CAR A NUM
Cette erreur peut provenir de la calculatrice. Elle se produit également lorsqu'on appelle une routine en langage machine du système d'exploitation.
249STACK OVERFLOW
Cette erreur ne survient que lorsqu'un programme en langage machine de l'utilisateur détruit la pile de l'Organiseur.
248STACK UNDERFLOW
Voir ci-dessus.
247ERR ARGUMENT FNC
Le type d'argument transmis à une fonction ou une procédure de l'utilisateur est incorrect.
246PAS DE PACK
L'unité spécifiée dans une instruction telle que CREATE, OPEN, etc, ne contient pas de Datapak, ou la cartouche a été retirée pendant que l'OPL y accédait.
245ERR EN ECRITURE
L'Organiseur n'arrive pas à écrire de données sur l'un des Datapaks. Il peut être mal introduit dans l'unité.
244PROTEGE EN ECRIT
Vous avez essayé d'enregistrer des données sur un Datapak utilisé par l'Organiseur MK1, ou sur une cartouche programme. Vous pouvez y accéder en lecture mais pas en écriture.
243MAUV NOM PERIPH
Vous avez spécifié un nom d'unité autre que A, B ou C.
242PACK ECHANGE
Cette erreur survient lorsque vous appelez des routines en langage machine du système d'exploitation, ou lorsque vous changez de cartouche au milieu d'une opération de copie.
241PACK NON-VIERGE
Le Datapak doit être reformaté pour supprimer les données y subsistant.
240PACK INCONNU
La cartouche d'une des deux unités n'est pas compatible avec l'Organiseur MK2.
239PACK PLEIN
Vous essayez de sauvegarder des données sur une cartouche déjà saturée.
238FIN DU FICHIER
Cette erreur se produit lorsque la fin du fichier a été atteinte.
237ERR TYPE RECORD
Cette erreur n'intervient que pendant l'exécution de programmes en langage machine.
236NOM FIC ILLEGAL
Le nom de fichier spécifie est illégal. (8 caractères maximum commençant par une lettre).
235FIC EXISTANT
Le nom du fichier ou de la procédure à créer existe déjà sur l'unité en cours.
234FIC INCONNU
Le nom du fichier auquel vous souhaitez accéder n'existe pas sur l'unité en cours.
233CAT PLEIN
Une unité ne peut contenir plus de 110 fichiers et cette limite a été atteinte.
232PACK PROTEGE
La cartouche que vous essayez de recopier est protégée contre les copies.
231ERR DE PERIPH
Cette erreur se produit lorsque vous essayez d'accéderà une unité qui n'est pas disponible à partir du langage de programmation de la machine.
230PERIPH ABSENT
Accès à une unité qui n'est pas connectée (imprimante par exemple). La commande LPRINT affiche ce message d'erreur lorsque la machine n'est pas reliée à une imprimante.
229PERIPH INACCESS
Une cartouche programme ou une unité a été débranchée pendant que l'Organiseur vérifiait sa présence, ou la cartouche s'est altérée.
228ERR SYNTAX
L'OPL a découvert une erreur de syntaxe pendant le transcodage d'une procédure.
227ERR ()
Une expression contient un nombre incorrect de parenthèses, trop ou pas assez.
226MAUVAIS ARG FNC
Le nombre d'arguments fournis à une fonction, ou leur type, est incorrect. Ex. LOG(-1), SIN(x,y) ou LEN(a).
225ERR INDICE
L'indice d'une variable tableau est incorrect. Ex. a(0) ou a(10) lorsque le tableau a() doit contenir 9 éléments,
224TYPE INCORRECT
Le type de valeur affecté à une variable est incorrect. Ex. a$=12 ou a="texte", ou le type de valeur affecte a un paramètre de la procédure est incorrect.
223NOM TROP LONG
Le nom d'un fichier, d'une procédure ou d'une variable ne peut contenir plus de huit caractères, qualificatif y compris ($ ou %).
222MAUVAIS NOM
Nom de variable incorrect. Par exemple : name$$.
221" MAL PLACE
Erreur se produisant lorsqu'il existe trop de guillemets dans une chaîne de texte, ou lorsqu'il en manque.
220CHAINE TROP LONG
La longueur de la chaîne produite dépasse le maximum imparti par la commande GLOBAL ou LOCAL. Exemple : LOCAL a$(10) A$="123456789ABCDEF"
219MAUVAIS CAR
Présence d'un caractère illégal, tel que ? ou @ dans une chaîne de calcul ou une expression.
218NMB INCORRECT
Un nombre incorrect a été utilisé. Ex. :2.3.4
217NOM PROC ABSENT
La première ligne du fichier programme extérieur qui a été introduit ne contient pas de nom de procédure légal.
216ERR DÉCLARATION
La déclaration de tableau ne spécifie pas la longueur maximale de chaîne, ou cette longueur est illégale. Ex. : GLOBAL nom$(10,300)
215ERR DE DIM
Le tableau déclaré contient un nombre illégal d'éléments. Ex. : GLOBAL nom$(0,15).
214NOM DUPLIQUE
Le nom de variable spécifié existe déjà dans la procédure en cours.
213ERR DE STRUCTURE
Structure IF/ENDIF , WHILE/ENDWH ou DO/UNTIL incorrectement emboîtée.
212TROP DE NIVEAU
L'emboîtement des procédures est trop complexe. Le nombre de boucles emboîtées les unes dans les autres est limité à 8.
211LABEL INCONNU
La commande GOTO renvoie le contrôle de programme à un label qui n'existe pas dans la procédure en cours.
210, ABSENTE
Il manque une virgule dans une liste dont les différents éléments doivent être délimités par ce caractère.
209ERR NOM LOGIQUE
Le nom logique spécifié est incorrect ; il ne s'agit pas de A, B, C ou D.
208ERR ASSIGNATION
Une valeur a été affectée à un paramètre de procédure.
207ERR NBRE RUB
Un fichier doit contenir au minimum une zone et au maximum seize Cette erreur se produit lorsque les limites ci-dessus ne sont pas respectées.
206ANNULATION
L'utilisateur a appuyé sur la touche ON pendant l'exécution du programme pour le suspendre, puis sur Q pour en sortir. Cette erreur ne peut se produire si le programme contient la commande ESCAPE OFF.
205ERR NMB ARG
Le nombre d'arguments transmis à la procédure est incorrect.
204ERR SUR VAR
Une des variables rencontrées n'a pas été déclarée variable globale dans la procédure d'appel. Il ne s'agit pas non plus d'un des paramètres de la procédure en cours, dans laquelle elle n'a pas été déclarée variable globale ou locale.
203PROC ABSENTE
La procédure appelée n'existe sur aucune unité.
202MENU TROP LONG
La chaîne spécifiée dans la fonction MENU est trop longue et doit être raccourcie.
201ERR TYPE RUB
Erreur se produisant lorsqu'une variable de zone ne correspond à aucune des zones d'un fichier logique.
200ERR DE LECTURE
Les données d'un Datapak ne peuvent être lues. Il faut le reformater.
199FIC UTILISE
L'utilisateur a essayé d'ouvrir un fichier déjà ouvert ou de l'effacer.
198ENGT TROP LONG
Un enregistrement ne peut contenir plus de 254 caractères.
197NOM PROC ILLEGAL
Erreur se produisant lorsque le nom de procédure spécifié à la suite de l'option NOUV du menu PROG est illégal.
196FIC FERME
Erreur se produisant lorsqu'on essaie de lire ou d'écrire des données dans un fichier qui n'a pas été préalablement ouvert.
196ERR SUR ENTIER
Les variables entières doivent avoir une valeur comprise entre -32768 et +32767. Ces limites n'ont pas été respectées.

ERREURS D'EXECUTION

Lorsqu'une erreur se produit pendant l'exécution d'une procédure, un message d'erreur s'affiche si l'erreur n'est pas interceptée par la procédure proprement dite, et on vous demande d'appuyer sur la touche SPACE.

Si le programme a été lancé depuis le menu PROG, l'OPL vous offre l'opportunité de l'éditer. L'écran affiche alors le guide-opérateur EDIT O/N. Appuyez sur O pour éditer la procédure ou sur N pour repasser au menu PROG. Cette option n'est proposée que si la version texte de la procédure est disponible.

Une fois que vous avez corrigé la procédure pour empêcher l'erreur de se reproduire, frappez MODE pour afficher le menu TRAN/SAUVE/QUIT, puis sélectionnez l'option requise. Si vous choisissez QUIT, les modifications que vous avez apportées sont ignorées et l'ancienne version demeure enregistrée sur l'unité en cours.

ERREURS LES PLUS COURANTES

Tous les langages de programmation observent des règles bien précises sur l'utilisation des commandes et des fonctions et, plus particulièrement, la façon dont les instructions sont présentées dans un programme. Elles doivent en effet respecter la syntaxe du langage utilisé. Les différents signes de ponctuation jouent un rôle important dans le programme et permettent d'exécuter la mesure correcte dans chaque section des lignes du programme.

Dans le cas de l'OPL, il faut faire également très attention à la transmission des paramètres aux procédures et fonctions, en vérifiant que les types nu chiffres utilisés sont corrects.

Ci-dessous figurent un certain nombre d'erreurs se produisant fréquemment, ainsi que le format correct qui doit être utilisé.

ERREURS DE PONCTUATION

Omission des deux points entre les instructions d'une ligne multi-instruction :

INCORRECTCORRECT
proc1:proc1:
a$="text" PRINT a$ a$="text" :PRINT a$
......

Omission des deux points après un nom de procédure :

INCORRECTCORRECT
proc1:proc1:
GLOBAL a,b,cGLOBAL a,b,c
proc2proc2:
......

Omission d'un ou plusieurs signes deux points après un label :

INCORRECTCORRECT
proc1:proc1:
GOTO ailleurs: GOTO ailleurs::
......
ailleurs::ailleurs::
......

Omission de l'espace avant les deux points séparant deux instructions d'une même ligne :

INCORRECTCORRECT
proc1:proc1:
a=a+b:PRINT a$ a=a+b :PRINT a$
......

ERREURS DE PARAMETRAGE

Ce type d'erreur survient lorsqu'on transmet un entier ou une expression produisant un résultat entier à une procédure à virgule flottante, telle que proc2:(x) - ce qui arrive parfois en appelant une procédure dans le langage de programmation ou à partir de la calculatrice :

1) A partir de la calculatrice :

INCORRECTCORRECT
2*6+proc2:(3) 2*6+proc2:(3.)
......

2) A partir d'une autre procédure

INCORRECTCORRECT
proc1:proc1:
......
proc2:(2/3) proc2:(2.0/3)
......

Transmission d'un nombre incorrect de paramètres à une procédure - dans l'exemple suivant, proc3:(x,y).

INCORRECTCORRECT
proc1:proc1:
......
proc3:(3.7) proc3:(3.7,2.5)
......

VALEUR DES ENTIERS

Le valeur des variables entières doit être comprise entre moins 32768 et plus 32767. Les expressions excédant ces limites donnent donc lieu à un message d'erreur.

INCORRECTCORRECT
proc1:proc1:
LOCAL a%LOCAL a
a%=100*2468a=100*2468
......

ERREURS DE STRUCTURE

Les structures offertes par l'OPL sont : DO/UNTIL, WHILE/ENDWH et IF/ELSEIF/ELSE/ENDIF. On peut emboîter jusqu'à 8 boucles les unes dans les autres. Une erreur intervient si vous essayez de dépasser ce nombre.

Si les structures n'ont pas été correctement emboîtées, par exemple lorsqu'une commandé DO est associée à une commande WHILE, une erreur se produit également.

INCORRECTCORRECT
proc1:proc1:
......
......
DODO
......
......
WHILE a>2 UNTIL a<=2
......

BOUCLES SANS FIN

Il peut vous arriver de composer une boucle sans fin ne comportant pas de sortie logique. Si vous avez en plus désactivé la touche ON avec la commande ESCAPE OFF , cette touche ne vous laissera pas sortir de la boucle et la seule solution sera d'enlever la pile de l'Organiseur. (La touche ON sert généralement de 'bouton d'arrêt d'urgence' vous permettant d'abandonner la procédure en cours - excepté lorsque vous spécifiez la commande ESCAPE OFF . Voir la fin du chapitre 24).

En enlevant la pile de l'Organiseur, vous perdez automatiquement toutes les données enregistrées en mémoire interne. Il faut donc éviter de le faire. Voici un exemple de procédure contenant une boucle sans fin - NE L'UTILISEZ SURTOUT PAS!

[Page 130 blanc]


CHAPITRE 28

IMPRESSION DE PROCÉDURES

Lorsque vous commencerez à écrire vos propres procédures, il vous sera utile, de temps à autre, de les lister sur imprimante, car il est plus facile de se faire une meilleure idée de la séquence d'une procédure lorsqu'elle est consignée noir sur blanc. Il est aussi plus facile d'expliquer à quelqu'un d'autre la composition d'une procédure en tendant une feuille de papier qu'on peut emporter avec soi.

Pour connecter une imprimante à l'Organiseur, il faut d'abord se procurer la liaison de communication RS232 de Psion qui permet de raccorder les imprimantes séries à l'Organiseur, et peut également servir à communiquer avec un autre ordinateur. (Voir annexe F).

Un message d'erreur s'affiche si l'Organiseur n'est pas relié à une imprimante lorsque vous sélectionnez l'option IMPRIME du menu PROG. Appuyez sur la touche pour repasser au menu PROG.


CHAPITRE 29

RÉPERTOIRE DES PROCÉDURES

L'option CAT du menu PROG vous permet de consulter le répertoire de toutes les procédures enregistrées sur l'unité en cours.

Sélectionnez l'option CAT du menu PROG en procédant de la manière habituelle. L'écran s'efface avant d'afficher :

CAT A:  

Si vous souhaitez changer d'unité, frappez une ou plusieurs fois la touche MODE pour obtenir l'unité requise, puis appuyez sur EXE. Si l'unité spécifiée contient des procédures, le nom de la première d'entre elles s'affichent. Pour examiner les suivantes, il suffit à chaque fois de presser EXE.

Après le dernier nom de procédure, le message FIN DU PACK s'affiche sur l'écran si vous réappuyez une fois de plus sur EXE.

Frappez ON pour en revenir au menu PROG.


CHAPITRE 30

EFFACEMENT DES PROCÉDURES

L'option d'effacement du menu PROG , EFFACE , sert à supprimer les procédures indésirables sur l'unité en cours. Sélectionnez cette option du menu PROG en procédant comme de coutume. Le message :

EFFACE A:  

s'affiche alors sur l'écran. Vous pouvez changer l'unité en cours en appuyant une ou plusieurs fois sur la touche MODE. Spécifiez ensuite le nom de la procédure à effacer sur l'unité en cours, par exemple PROC. Lorsque vous frappez EXE le message suivant apparaît :

EFFACE A:PROC   EFFACE O/N

Appuyez sur O pour confirmer votre sélection ou sur N pour l'annuler.


CHAPITRE 31

COPIE DE PROCÉDURES

L'option COPIE du menu PROG permet de recopier les procédures d'une unité à une autre.

Sélectionnez l'option COPIE du menu de programmation en procédant de la manière habituelle. L'écran se présente comme suit :

COPIE   OBJET SEUL O/N

Pour recopier uniquement la version transcodée dé la procédure, ou fichier objet, sur une autre unité, appuyez sur O, ou sur N pour recopier les versions objet et texte. Dans ce dernier cas, vous pourrez éditer la procédure sur l'unité dé destination une fois la copie terminée.

En revanche, il est impossible d'éditer une copie qui ne se compose que de la version objet. C'est pourquoi il est préférable de tester entièrement les procédures pour s'assurer qu'elles fonctionnent correctement avant de prendre une copie de la version objet seulement.

Il existe toutefois des avantages a ne recopier que le fichier objet dans la mesure où il occupe moitié moins d'espace mémoire environ que l'original.

L'option COPIE du menu PROG fonctionne de la même façon que celle du menu principal, à une exception près. Si un fichier du même nom existe déjà sur l'unité de destination, il va être remplacé par la nouvelle version. Il ne peut y avoir plus d'une procédure du même nom sur une même unité.

Une fois le ou les fichier(s) recopiés sur l'unité de destination, le menu PROG se réaffiche sur l'écran.


CHAPITRE 32

EXEMPLES DE PROGRAMME

Ce chapitre contient des exemples de programmes écrits en OPL. Ils ne sont pas destinés à illustrer toutes les caractéristiques de ce langage, mais vous montreront comment tirer meilleur parti des diverses commandes et fonctions.

Chaque procédure doit être entrée séparément car il ne peut y avoir deux procédure l'une à la suite de l'autre dans un bloc continu.

No Téléphone

Le programme suivant, qui se compose de quatre procédures, illustre la création et l'ouverture d'un fichier. Il permet a l'utilisateur d'ajouter des fiches, de lister le contenu du fichier, ou de consulter le fichier en supprimant toute fiche devenue obsolète.

La procédure principale, menu:, appelle les trois autres. Pour utiliser ce programme directement à partir du menu principal de l'Organiseur II, il est donc nécessaire d'y installer la procédure menu:.

menu: global fnom$(10) local option% begin:: option%=menu("Ouvrir,Creer,Ouitter") if option%=1 or option%=2 cls :print "Nom fichier:" :at 1,2 :input fnom$ endif if option%=1 if exist(fnom$) open fnom$,a,nom$,tel$ else cls :beep 200,200 view(1 ,"..Introuvable..") goto begin:: endif elseif option%=2 if exist(fnom$) cls :beep 200,200 view(1,"fichier existant") goto begin:: else create fnom$,a,nom$,tel$ endif elseif option%=3 stop else goto begin:: endif menu:: option%=menu("Ajouter,Afficher/Effacer,Lister,Quitter") if option%=1 ajouter: elseif option%=2 afficher: elseif option%=3 lister: elseif option%=4 close :goto begin:: endif goto menu:

La procédure menu: appelle les procédures suivantes. La première, ajouter, permet d'ajouter une fiche.

ajouter: while 1 cls kstat 1 at 1,1 :print "Nom: "; :input a.nom$ if len(a.nom$)=0 :return :endif kstat 3 at 1,2 : print "Tel : "; :input a.tel$ append endwh

La procédure ci-dessous, Lister:, permet de lister leur à leur les 15 premiers caractères de la première rubrique, nom$, du fichier en cours.

lister: local ligne% first do if len(a.nom$)>0 prînt left$(a.nom$,15) endif next until eof return

La dernière procédure, afficher:, affiche l'enregistrement en cours ainsi que les options suivantes :

P - Affiche le Premier enregistrement
S - Affiche l'enregistrement Suivant
A - Arrière
D - Dernier
E - Efface un enregistrement
Q - Quitte ce menu

Afficher: local opt% cls first while 1 at 1,1 : print "P/S/A/D/E/Q" opt%=vrew(2,a.nom$+" "+a.tel$) if opt%=%P first elseif opt%=%S and count>1 next elseif opt%=%A back elseif opl%=%D last elseif opt%=%E and count>0 erase elseif opt%=%Q return endif endwh

STAT

Cette procédure fonctionne un peu comme l'option INFO du menu principal. Elle indique en effet le modèle d'Organiseur dont vous disposez, le volume de mémoire total de la machine et la quantité d'espace libre (en octets) sur chacune des trois unités (si la machine en est équipée).

stat: LOCAL as(8),b%,c$(5),d$(6),e$(2) a$="Memoire :" :c$="MAIN" d$="libre " PRINT "Modele :"; IF PEEKB($FFE8)=1 PRINT "XP" :PRINT a$+"16384" ELSEIF PEEKB($FFE8)=2 PRINT "XP" :PRINT a$+"23532" ELSE PRINT "CM" :PRINT a$+"8192" ENDIF :GET :b%=0 DO e$=CHR$(b%+%A)+":" IF EXIST(e$+c$) OPEN e$+c$,A,f$ PRINT d$;e$;SPACE :CLOSE :GET ENDIF b%=b%+1 UNTIL b%=3

POUR DESACTIVER LES SONS

La procédure ci-dessous permet de désactiver toutes les alarmes audibles et les bips sonores de l'Organiseur. Silence fonctionne à la façon d'un interrupteur. Il suffit donc de l'exécuter une seconde fois pour réactiver tous les bruits. Il n'y a rien à spécifier. La procédure se charge de détecter les alarmes activées ou désactivées et d'agir en conséquence.

Silence: PRINT "SONS <"; IF PEEKB($A4)=0 POKEB SA4,1 PRINT "DESACTIVES>" ELSE PRINT "ACTIVES>" POKEB $A4,0 ENDIF PRINT "Appuyez sur une touche quelconque"; GET

MOT DE PASSE

Cette procédure va vous permettre de protéger les données mémorisées dans l'Organiseur. Lorsqu'elle est exécutés, elle commence par éteindre la machine. Puis, lorsque vous appuyez sur la touche ON/CLEAR, la machine se remet en marche et la procédure poursuit son cours en demandant un mot de passe. Si le mot de passe est incorrect, elle rééteint l'Organiseur.

La commande ONERR empêche de suspendre la procédure afin d'obliger à fournir le mot de passe. La seule façon d'accéder aux données de la machine sans ce dernier est d'enlever la pile.

Code: LOCAL a$(5) ONERR debut:: debut:: OFF CLS :PRINT "Mot de passe :" INPUT a$ IF UPPER$(a$)<>"FRED" GOTO debut:: ENDIF

Note. Il est préférable de choisir un mot de passe ou une suite de caractères n'ayant aucun rapport avec vous-même. Évitez de choisir votre nom, même si vous l'épelez à l'envers, car il sera facile à deviner.

NOMBRE PREMIER

Ce programme produit les 30 premiers nombres premiers et les affiche sur l'écran :

premier: GLOBAL prem(31),j LOCAL i, drapeau, k, l, m l=3 prem(1)=2 j=2 drapeau=0 DO i=1 m=1 WHILE i<j k=prem(i) IF i=k*INT(i/k) m=0 BREAK ENDIF i=i+1 ENDWH IF m prem(j)=i j=j+1 IF drapeau PRINT ","; ELSE PRINT "Premiers : 2,"; ENDIF drapeau=1 PRINT i; ENDIF i=i+1 UNTIL j>=30 RETURN

JEU GRAPHIQUE

Voici maintenant un jeu qui illustre l'usage des graphiques définis par l'utilisateur. Il se compose de trois procédures : jeu: , ijeu: et gdu: (graphiques définis par l'utilisateur).

La procédure principale, jeu: , appelle ijeu: et gdu: qui déterminent les caractères graphiques utilisés au cours du jeu.

L'objectif est d'éviter de se faire attraper par un poursuivant de type 'Pacman'. Votre petit bonhomme peut sauter d'une ligne à l'autre pour éviter son poursuivant qui accélère. Pour sauter sur la ligne du haut, appuyez sur la touche X , et sur la touche S pour sauter sur celle du bas.

A la fin du jeu, votre score s'affiche sur l'écran. Pour suspendre le jeu, frappez la touche ON/CLEAR. Pour arrêter complètement le jeu, appuyez à nouveau sur la touche.

Procédure principale 'jeu:'

jeu: LOCAL a$(1),b$(1),c$(1),d$(1),e$(2),f$(1),g$(32) LOCAL a%,b%,c%,x%,y%,z%,sc%,b1%,f%,h$(1) igame: CURSOR OFF a$=CHR$(0) :b$=CHRS(1) c$=CHR$(2) :d$=CHRS(3) e$=CHR$(4)+CHR$(6) :f$=CHR$(5) g$=REPT$(CHR$(165),32) :h$=CHRS(7) b%=20 :c%=12 :x%=16 :y%=1 DO CLS :PRINT :AT x%,y% :PRINT h$ a%=1 :c%=1+RND*2 DO AT a%,c% :PRINT a$ :BEEP b%,10*b% AT a%,c% :PRINT b$ :BEEP b%,10*b% AT a%,c% :PRINT c$ :BEEP b%,10*b% AT a%,c% :PRINT d$ :BEEP b%.10*b% AT a%.c% :PRINT e$ :BEEP b%,10*b% AT a%,c% :PRINT f$ :BEEP b%,10*b% AT a%,c% :PRINT " " :z%=KEY IF z% IF z%=%S AND Y%=2 AT x%,y% :PRINT CHR$(165) y%=1 :AT x%,1 :PRINT h$ ENDIF IF z%=%X AND y%=1 AT x%,y% :PRINT CHR$(165) y%=2 :AT x%,2 :PRINT h$ ENDIF ENDIF a%=a%+1 IF a%=x% AND c%=y% f%=0 DO AT x%,y% :PRINT CHR$(170+f%) BEEP 10,100+f% f%=f%+1 :BEEP 10,100-f% UNTIL f%=30 b%=b%+5 : a%=16 :X%=X%-2 IF X%<1 :CLS :PRINT "FIN DU JEU" PRINT "SCORE:",sc% :PAUSE 40 WHILE KEY :GET :ENDWH GET :RETURN ENDIF ENDIF UNTIL a%=16 sc%=sc%+1 IF b%>12 :b%=b%-2 ELSEIF b%<6 IF b1% AND b% :b%=b%-1 :b1%=0 ELSE b1%=1 :ENDIF ELSE b%=b%-1 :ENDIF UNTIL c%=3

Procédure d'initialisation du jeu 'igame:'

igame: gdu:(0,0,0,28,30,30,30,28,0) gdu:(1,0,0,14,31,30,31,14,0) gdu:(2,0,0,7,14,12,14,7,0) gdu:(3,0,0,3,7,6,7,3,0) gdu:(4,0,0,1,3,3,1,0,0) gdu:(5,0,0,0,1,1,1,0,0) gdu:(6,0,0,24,16,4,16,24,0) gdu:(7,30,14,4,14,30,14,11,25)

Procédure définissant les caractères graphiques du jeu 'gdu:'

gdu:(x%,a%,b%,c%,d%,e%,t%,g%,h%) POKEB $180,64+x%*8 :POKEB $181,a% POKEB $181,b% :POKEB $181,c% POKEB $181,d% :POKEB $181,e% POKEB $181,f% :POKEB $181,g% POKEB $181,h%


CHAPITRE 33

COMMANDES DE L'OPL

La plupart des commandes de l'OPL doivent comporter un ou plusieurs arguments qui peuvent être de type numérique ou chaîne selon la commande utilisée. En général, vous pouvez opter pour des valeurs littérales ou des variables.

Dans ce chapitre, et le chapitre suivant qui traite des fonctions de l'OPL , la syntaxe des commandes va être spécifiée de la manière suivante :

<exp> expression numérique, variable ou constante
<exp%> expression entière comprise entre -32768 et +32767, variable ou constante entière.
<exp$> expression ou variable chaînes
<unité>unité (A:, B: ou C:)
<var> variable (entière, à virgule flottante ou chaîne)
<nomfl> nom de fichier logique (A, B, C ou D).


Lorsqu'une commande doit contenir plus d'une expression du même type, elles seront numérotées comme suit :

<exp%1>,<exp%2>
 

<liste> Une ou plusieurs instructions de l'OPL sur une ou plusieurs lignes de la procédure. On peut utiliser des lignes multi- instructions à condition de séparer les différentes instructions par un espace suivi du signe deux points, de la manière suivante:

instruction :instruction :instruction

APPEND
Syntaxe : APPEND
Les valeurs de zone en cours sont ajoutées à la fin du fichier en cours pour former un nouvel enregistrement.

Voire également : BACK, ERASE, FIRST, LAST, NEXT, POS, POSITION, UPDATE.

 
AT
Syntaxe : AT <exp%1>,<exp%2>
Positionne le curseur sur un point de l'écran dont les coordonnées sont déterminées par <exp%1>, <exp%2>, <exp%1> étant une coordonnée horizontale comprise entre 1 et 16 et <exp%2> , une coordonnée verticale (1 ou 2) représentant la première ou la seconde ligne de l'affichage.

Voir également : PRINT, CURSOR, KSTAT.

 
BACK
Syntaxe : BACK
L'enregistrement précédant l'enregistrement en cours du fichier utilisé devient l'enregistrement en cours. Si vous vous trouvez sur la première fiche du fichier, l'Organiseur n'affiche pas de message d'erreur et l'enregistrement en cours demeure cette première fiche.

Voir également :APPEND, ERASE, FIRST, LAST, NEXT, POS, POSITION, UPDATE.

 
BEEP
Syntaxe : BEEP <exp%1>,<exp%2>
Déclenche l'avertisseur sonore interne de l'Organiseur. La fréquence du son est déterminée par l'équation suivante : Fréquence = 921600/(78+<exp%2>)Hz. La durée du son en millièmes de seconde est déterminée par <exp%1>.
 
BREAK
Syntaxe : BREAK
Permet au contrôle de programme de sortir d'une boucle DO/UNTIL ou WHILE/ENDWH , et de poursuivre le programme à partir de l'instruction suivant la fin de la boucle (UNTIL ou ENDWH).
 
CLOSE
Syntaxe : CLOSE
Ferme le fichier en cours.

Voir également :OPEN, CREATE, DELETE.

 
CLS
Syntaxe : CLS
Efface l'écran et positionne le curseur sur le point d'origine, c'est-à- dire sur le premier emplacement de la première ligne.
 
CONTINUE
Syntaxe : DO
<liste>
IF <exp>
  CONTINUE
ENDIF
  <liste>
UNTIL <exp>

Renvoie le contrôle de programme à la condition vérifiée dans une boucle DO/UNTIL ou WHILE/ENDWH . Dans l'exemple ci-dessus, la commande CONTINUE est exécutée si la condition suivant l'instruction IF est logiquement vraie. Dans ce cas, le contrôle de programme est transféré à la condition suivant l'instruction UNTIL.
 
COPY
Syntaxe : COPY "<unite1>nom_de_fichier1","<unite2>nom_de_fichier2"
COPY "<unite1>nom_de_fichier1","<unite2>"
COPY "<unite1>","<unite2>"

Permet de recopier des fichiers sur une différente unité. Dans le premier exemple, le fichier de l'unité <unite1> portant le nom nom_de_fichier1 est recopié sur l'unité <unite2> sous le nom <nom_de_fichier2>. Si l'unité de destination contient déjà un fichier du même nom (nom_de_fichier2), les enregistrements de l'unité source sont rajoutés à la fin de ce fichier. Dans le cas contraire, un nouveau fichier nom_de_fichier2 se crée sur l'unité de destination.

Dans le second exemple, le nom de fichier sur l'unité de destination va être le même que sur l'unité source, c'est-à-dire nom_de_fichier1.

Dans le dernier exemple, tous les fichiers de l'unité source sont recopies sur l'unité de destination et gardent le même nom.

 
CREATE
Syntaxe : CREATE "<unite>nom",<nomfl>,zone1,zone2
Crée un fichier sur l'unité <unite> , sous le nom <nom>. Il porte le nom logique <nomfl> et peut contenir jusqu'à seize zones : zone1 . zone2 , etc. Le nom de fichier logique doit être A, B, C ou D. A chaque fois que vous créez un fichier, il est ouvert par défaut. Il peut y avoir jusqu'à quatre fichiers ouverts en même temps.

Voir également : OPEN, CLOSE, DELETE.

 
CURSOR ON/OFF
Syntaxe : CURSOR ON ou CURSOR OFF
Active ou désactive le curseur qui est actif par défaut.

Voir également : KSTAT.

 
DELETE
Syntaxe : DELETE "<unite>nom_de_fichier"
Efface le fichier portant le nom nom_de_fichier sur l'unité <unite> Elle ne peut supprimer que les fichiers qui ont d'abord été refermés

Voir également : CREATE, OPEN, CLOSE, DELETE,

 
DO/UNTIL
Syntaxe : DO
  <liste>
UNTIL <exp>

La commande DO marque le début d'une liste composée d'une ou plusieurs instructions et se terminant par la commande UNTIL. La liste d'instructions est répétée jusqu'à ce que l'expression précisée à la suite de UNTIL devienne logiquement vraie.

Voir également : WHILE/ENDWH, BREAK

 
EDIT
Syntaxe : EDIT <var$>
La variable chaîne <var$> s'affiche sur l'écran et peut être éditée de la manière habituelle, avec les touches du curseur et DEL. Une fois l'édition terminée, appuyez sur la touche EXE. Si vous frappez cette touche avant de modifier la chaîne, cette dernière ne change pas. Pour remplacer l'ancienne chaîne par une nouvelle, il suffit d'appuyer sur ON/CLEAR. Par contre, en présence d'une commande TRAP , le contrôle passe à la ligne suivante où est déterminée la condition d'erreur ESCAPE.
 
ERASE
Syntaxe : ERASE
Efface l'enregistrement en cours dans le fichier. Le suivant devient alors l'enregistrement en cours. Si l'enregistrement que vous venez de supprimer était le dernier du fichier, l'enregistrement en cours est vide et la fonction EOF (fin de fichier) est vraie.

Voir également : APPEND, BACK, FIRST, LAST, NEXT. POS, POSITION, UPDATE.

 
ESCAPE ON/OFF
Syntaxe : ESCAPE ON ou ESCAPE OFF
La commande ESCAPE ON permet d'utiliser la touche ON/CLEAR pour suspendre l'exécution d'un programme. Il s'agit de la commande par défaut. ESCAPE OFF a l'effet inverse, c'est-à-dire qu'elle désactive la touche ON/CLEAR pendant l'exécution du programme. La commande par défaut est ESCAPE ON.

Note. Si le programme contient une boucle sans fin logique et que vous avez utilisé la commande ESCAPE OFF , la seule façon de sortir de cette boucle sera d'enlever la pile de l'Organiseur et d'attendre deux minutes. Le programme et toutes es autres données enregistrées dans la mémoire interne de la machine seront irrémédiablement perdues.

Voir également : TRAP.

 
FIRST
Syntaxe : FIRST
Fait du premier enregistrement d'un fichier l'enregistrement en cours.

Voir également : APPEND, BACK, ERASE, LAST, NEXT, POS, POSITION, UPDATE.

 
GLOBAL
Syntaxe : GLOBAL glob1%,glob2,glob3$(longueur),glob4(n)
Définit les variables disponibles dans la procédure en cours, et dans toutes les procédures suivantes du même programme. Le nom des variables numériques entières doit se terminer par le signe pour- cent (%) et celui des variables chaînes par le signe Dollar ($). Tous les autres noms représentent des variables à virgule flottante.

Les variables tableaux peuvent également être de type entier, chaîne ou à virgule flottante. Un nom de variable peut contenir jusqu'à 8 caractères dont le premier doit obligatoirement être une lettre. La longueur maximale tient compte du qualificatif ($ ou %) s'il existe. Il peut y avoir plusieurs instructions GLOBAL ou LOCAL dans une procédure, à condition de respecter cet ordre. Elles doivent précéder les instructions composant la procédure. Consultez le chapitre sur les variables pour obtenir un complément d'information à ce sujet.

Voir également : LOCAL

 
GOTO
Syntaxe : GOTO label::
Renvoie le contrôle de programme à la ligne contenant le nom de label LABEL::. Il doit se trouver dans la procédure en cours et se terminer par deux signes 'deux points'. Les labels peuvent contenir jusqu'à 8 caractères, signes deux points exclus.
 
IF/ELSEIF/ELSE/ENDIF
Syntaxe : IF <exp>
  <liste>
ELSEIF <exp>
  <liste>
ELSE
  <liste>
ENDIF

Les instructions IF sont suivies d'une expression. Si le résultat de cette dernière est logiquement vrai (différent de zéro), les instructions suivantes sont exécutées. En revanche, si le résultat est logiquement faux (égal à zéro), ces instructions sont ignorées.

L'instruction ELSEIF est facultative. Si l'expression suivante est logiquement vraie, la liste d'instructions spécifiée à la suite de cette commande est exécutée. Il peut y avoir plusieurs instructions ELSEIF comportant toutes leur propre liste d'instructions.

Si aucune des expressions précédentes n'est logiquement vraie, la liste d'instructions figurant entre ELSE et ENDIF est exécutée. ELSE est également une commande facultative.

 
INPUT
Syntaxe : INPUT <var%>
INPUT <var>
INPUT <var$>
INPUT <fichier_logique>.zone

Permet d'entrer des données au clavier pendant l'exécution d'un programme. Les variables fournies doivent avoir été déclarées par une commande GLOBAL ou LOCAL , à moins d'être des variables de zone dans le fichier en cours. Le nombre de caractères entres au clavier est limité par le maximum imparti par la commande GLOBAL ou LOCAL.

En pressant ON pendant l'édition, les anciennes entrées sont effacées pour vous permettre d'en spécifier de nouvelles. Par contre, en présence de la commande TRAP , le contrôle de programme passe à la ligne suivante déterminant une condition d'erreur ESCAPE.

Voir également : GLOBAL. LOCAL, TRAP

 
KSTAT
Syntaxe : KSTAT <exp%>
Verrouille le clavier en mode SHIFT (majuscules), CAPS (minuscules), etc., comme l'indique le tableau suivant :
1 Alphabétique - majuscules
2 Alphabétique - minuscules
3 Numérique - majuscules
4 Numérique - minuscules

Voir également : CURSOR.

 
LAST
Syntaxe : LAST
Fait du dernier enregistrement du fichier utilisé, l'enregistrement en cours. Si vous vous trouvez déjà à la fin du fichier, le dernier enregistrement reste l'enregistrement en cours.

Voir également : APPEND, BACK, ERASE, FIND, NEXT, POS, POSITION, UPDATE.

 
LOCAL
Syntaxe : LOCAL loc1%,loc2,loc3$,loc4(n)
Définit des variables qui seront utilisées uniquement dans la procédure en cours. Les autres procédures pourront faire appel à des variables du même nom pour des tâches différentes.

Voir également : GLOBAL.

 
NEXT
Syntaxe : NEXT
L'enregistrement suivant l'enregistrement en cours du fichier utilisé devient l'enregistrement en cours. Si vous vous trouvez déjà à la fin du fichier, l'Organiseur n'affiche as de message d'erreur mais l'enregistrement en cours est vide et la fonction EOF (fin de fichier) est vraie.

Voir également : APPEND, BACK, ERASE, FIND, LAST, POS, POSITION, UPDATE.

 
OFF
Syntaxe : OFF
Éteint l'Organiseur. Pour reprendre l'exécution du programme à la ligne suivant cette commande, il suffit de frapper ON/CLEAR
 
OPEN
Syntaxe : OPEN "<unite>nom_de_fichier",<nomfl>,zone1,zone2
Ouvre un fichier de l'unité <unite> portant le nom de fichier logique <nomfl> et contenant les zones zone1 , zone2 , etc. Ce fichier pourra ensuite être invoqué par son nom logique dans toutes les opérations de manipulation de fichier.

Voir également : CREATE, CLOSE, DELETE, USE.

 
ONERR
Syntaxe : ONERR label:: , ONERR OFF
Lorsqu'une erreur se produit pendant l'exécution du programme, l'instruction ONERR label:: renvoie le contrôle de programme à la ligne contenant le label spécifié.

L'instruction ONERR OFF annule le ONERR de ONERR label::. Les erreurs se produisant à la suite de l'instruction ONERR OFF ne renvoient pas le contrôle de programme au même endroit dans la procédure.

 
PAUSE
Syntaxe : PAUSE <exp%>
Cette commande agit différemment selon que <exp%> a pour valeur :

0 attend qu'une touche soit frappée.
<0 suspend l'exécution du programme pendant <exp%> vingtièmes de seconde, ou jusqu'à ce qu'une touche soit frappée
>0 suspend l'exécution du programme pendant <exp%> vingtièmes de seconde. Par conséquent, PAUSE 100 interrompt le programme pendant cinq secondes.

Dans les deux premiers cas, l'Organiseur enregistre la touche pressée dans le tampon. Il est préférable de la supprimer avec la fonction GET , en procédant comme suit :

<liste> PAUSE 0 GET <liste>

La procédure ne s'interrompt pas au niveau de la fonction GET car la touche enregistrée dans le tampon à la suite de la commande PAUSE 0 lui sert de saisie.

 
POKEB
Syntaxe : POKEB <exp%1>,<exp%2>
Écrit l'entier <exp%2> , qui doit être compris entre 0 et 255, à l'adresse de mémoire <exp%1> , qui doit être une valeur entière. Pour accéder aux adresses supérieures à 32767, il faut utiliser une valeur négative ou un nombre hexadécimal. Par exemple, $FFFF = -1, ce qui correspond à l'adresse 65535.

Note. Cette commande doit être utilisée avec précaution, sous peine de perdre toutes les données enregistrées dans l'Organiseur.

 
POKEW
Syntaxe : POKEW <exp%1>,<exp%2>
Écrit l'entier <exp%2> à deux adresses successives de mémoire, à partir de <exp%1> , l'octet de fort poids se trouvant dans l'adresse inférieure.

Note. Cette commande doit être utilisée avec précaution, sous peine de perdre toutes les données enregistrées dans l'Organiseur.

Voir également : POKEB, PEEKB, PEEKW.

 
POSITION
Syntaxe : POSITION <exp%>
Fait de l'enregistrement numéro <exp%> , l'enregistrement en cours dans le fichier utilisé.

Si le numéro représenté par <exp%> est plus élevé que le nombre d'enregistrements dans le fichier, le dernier enregistrement devient celui en cours.

Voir également : APPEND, BACK, ERASE, FIND, LAST, NEXT, POS, UPDATE.

 
PRINT/LPRINT
Syntaxe : PRINT <exp>,<exp%>;<exp$>
Affiche des chiffres ou des lettres sur l'écran. Si les différents éléments de l'instruction PRINT sont séparés par des virgules, un espace s'affiche entre chacun d'entre eux à l'écran. Par contre, si ces éléments sont séparés par des points-virgules, ils s'affichent les uns à la suite des autres.

Le point-virgule final indique que l'élément qui doit être affiché ensuite commence directement à la suite de l'instruction PRINT. En revanche, une virgule finale indique que l'élément suivant doit se trouver sur la même ligne que les précédents, mais qu'il doit en être séparé par un espace. Si aucun de ces signes de ponctuation n'est spécifie, l'ordinateur passe à la ligne suivante.

La commande LPRINT (qui n'est accessible que lorsque le câble RS232 Organiseur II de Psion est relié au port situé au sommet de l'Organiseur) fonctionne de la même façon que la commande PRINT , si ce n'est que les données sont envoyées vers l'imprimante connectée (si c'est le cas).

Voir également : AT.

 
RAISE
Syntaxe : RAISE <exp%>
Cette commande produit une erreur artificielle, même si cette erreur n'a pas eu lieu. Le numéro associé s'affiche à condition qu'il n'existe pas d'instruction ONERR. Les erreurs internes portent un numéro compris entre 195 et 255. Reportez-vous au chapitre sur le traitement des erreurs pour examiner la liste complète des messages d'erreur et leur numéro.

Voir également : ONERR, ERR, ERR$.

 
RANDOMIZE
Syntaxe : RANDOMIZE <exp>
Donne une nouvelle valeur de départ au générateur de chiffres aléatoires, pour pouvoir initier une nouvelle séquence de chiffres aléatoires. Pour utiliser la même séquence de chiffres aléatoires, il suffit donc de réutiliser RANDOMIZE.
 
REM
Syntaxe : REM remarque
L'instruction REM précède une REMarque contenant des informations destinées à rendre le programme plus facile à suivre. L'Organiseur ne tient pas compte du texte suivant l'instruction REM jusqu'à la fin de la ligne sur laquelle elle figure.
 
RENAME
Syntaxe : RENAME "<unite>nom_de_fic1","<unite>nom_de_fic2"
Donne au fichier nom_de_fichier1 le nom nom_de_fichier2 sur l'unité <unite>.
 
RETURN
Syntaxe : RETURN
RETURN <exp%>
RETURN <exp>
RETURN <exp$>

Lorsque cette commande est utilisée sans aucun autre argument, elle interrompt le déroulement d'une procédure et renvoie le contrôle de programme à la ligne ayant appelée cette procédure. Son usage à la fin d'une procédure est facultatif.

RETURN sert également à renvoyer une valeur à la procédure d'appel, valeur qui doit être spécifiée à la suite de la commande.

 
STOP
Syntaxe : STOP
Interrompt l'exécution d'un programme et repasse à l'endroit depuis lequel il a été lancé, par exemple le menu principal ou l'option CALC du menu principal.
 
TRAP
Syntaxe : TRAP FIRST (APPEND/BACK/CLOSE/COPY/CREATE/DELETE/ERASE/EDIT/ FIRST/INPUT/LAST/NEXT/OPEN/POSITION/RENAME/UPDATE/ USE)
TRAP peut précéder toutes les commandes de la liste ci-dessus. Les erreurs provoquées par la commande associée sont alors interceptées, pour permettre l'exécution de la ligne suivante, même si l'erreur en question donne normalement lieu un message d'erreur.
 
UPDATE
Syntaxe : UPDATE
Supprime l'enregistrement en cours dans le fichier utilisé. Les valeurs des zones sont alors ajoutées à un nouvel enregistrement à la fin du fichier, qui devient l'enregistrement en cours.

Voir également : APPEND, BACK, ERASE, FIND, LAST, NEXT, POS, POSITION.

 
USE
Syntaxe : USE <nomfl>
Sélectionne le fichier ayant pour nom de fichier logique <nomfl> , ouvert précédemment par la commande OPEN ou CREATE.

Voir également : OPEN, CLOSE, CREATE, DELETE.

 
WHILE/ENDWH
Syntaxe : WHILE <exp>
 <liste>
ENDWH

Cette structure commence par la commande WHILE qui précède une expression arithmétique. La liste d'instructions suivante, qui doit obligatoirement se terminer par ENDWH , est exécutée tant que l'expression est logiquement vraie (c'est-à-dire tant qu'elle donne un résultat différent de zéro).

Voir également : DO/UNTIL.


CHAPITRE 34

FONCTIONS DE L'OPL

Dans ce manuel, nous avons assumé par convention que le type de variable utilise spécifiait le type de résultat fourni par la fonction associée. Par conséquent, une fonction assignée à une variable chaîne produira une chaîne, etc.

ABS
Syntaxe : a=ABS(<exp>)
Produit la valeur absolue, c'est-à-dire sans signe, d'un nombre à virgule flottante. Par exemple, ABS(-10) donne 10.

Voir également : IABS.

 
ADDR
Syntaxe : m%=ADDR(<var>)
A pour résultat l'adresse de mémoire à laquelle est rangée la variable spécifiée entre parenthèses. Il peut très bien s'agir d'une variable tableau, par exemple a%=ADDR(TABLEAU()) ; il ne faut cependant pas préciser l'indice.

Voir également : USR, USR$.

 
ASC
Syntaxe : a%=ASC(<exp$>)
Produit la valeur ASCII du premier caractère d'une expression chaîne. Pour obtenir le code ASCII d'un caractère, on peut utiliser la forme suivante : a%=%G. Cet exemple a pour résultat le code ASCII de la lettre G.
 
ATAN
Syntaxe : a=ATAN(<exp>)
Produit la tangente inverse en radians de l'expression entre parenthèses.
 
COS
Syntaxe : c=COS(<exp>)
Produit le cosinus de l'expression entre parenthèses qui représente un angle en radians.
 
COUNT
Syntaxe : c%=COUNT
Calcule le nombre total d'enregistrements contenus dans le fichier en cours.

Voir également : POS.

 
DAY
Syntaxe : d%=DAY
Fournit la date du jour (1 à 31).

Voir également : SECOND, MINUTE, HOUR, MONTH, YEAR, DATIM$.

 
DEG
Syntaxe : d=DEG(<exp>)
Convertit en degrés la valeur de l'expression entre parenthèses (qui représente un angle en radians).

Voir également : RAD.

 
DISP
Syntaxe : d%=DISP(<exp%>,<exp$>)
<exp%> peut avoir pour valeur -1, 0 ou 1. Si <exp%> a pour valeur -1, <exp$> est ignoré et l'enregistrement en cours est affiché, une zone sur chaque ligne de l'écran. Comme c'était le cas pour les enregistrements accessibles à partir du menu principal, vous pouvez en examiner le contenu à l'aide des touches du curseur.

Lorsque <exp%> a pour valeur 1, <exp$> est affiché comme indiqué ci-dessus. Si <exp$> contient des caractères de tabulation (code ASCII 9), ces derniers divisent la chaîne en un certain nombre de zones qui sont affichées sur des lignes différentes.

Enfin, si <exp%> a pour valeur 0, la dernière chaîne affichée se poursuit et <exp$> est ignoré. Si vous appuyez sur une touche autre que les touches du curseur, la fonction produit le numéro qui lui est associé.

Il ne doit pas y avoir de commande ou fonction entre la fonction DISP dont <exp%> est égal à 1 ou -1 et DISP dont <exp%> est égal à 0. Exemple :

a%=DISP(1,a$) WHILE a%<>13 a%=DISP(0,"") ENDWH

Cet exemple affiche a$ jusqu'à que la touche EXE soit frappée. Il n'existe visiblement aucune raison de spécifier une autre commande ou fonction accédant à l'écran entre les deux fonctions DISP. Si c'était le cas, on obtiendrait des résultats pour le moins imprévisibles.

 
EOF
Syntaxe : DO
 <liste>
UNTIL EOF

Si une instruction du programme essaie de dépasser le dernier enregistrement du fichier en cours, elle active un indicateur interne spécifiant que la fin du fichier a été atteinte. On peut ensuite tester cette condition, comme indiqué dans l'exemple ci-dessus.
 
ERR
Syntaxe : e%=ERR
Calcule le numéro de la dernière erreur rencontrée. Le chapitre consacre aux messages d'erreur permet de déterminer la signification des numéros d'erreur qui vont de 0 à 255. Si ERR a pour résultat 0, c'est qu'il n'y a pas eu d'erreur.

Voir également : ERR$, RAISE, ONERR.

 
EXIST
Syntaxe : IF EXIST("<unite>nom_de_fichier")
 instruction
ENDIF

Vérifie l'existence du fichier nom_de_fichier sur l'unité <unite>. Cette fonction est logiquement vraie si le fichier existe et logiquement fausse dans le cas contraire.

Voir également : DIR$.

 
EXP
Syntaxe : e=EXP(<exp>)
Fournit la valeur de la constante arithmétique e (2,71828...) élevée a la puissance de l'expression spécifiée entre parenthèses.
 
FIND
Syntaxe : f%=FIND(<exp$>)
Recherche dans la suite du fichier la chaîne spécifiée entre parenthèses. Si elle trouve une chaîne correspondante dans un des enregistrements, elle en affiche le numéro et en fait l'enregistrement en cours. Dans le cas contraire, elle a pour résultat zéro. Si <exp$> est une chaîne vide, cette fonction a le même effet que la commande NEXT et fait de l'enregistrement suivant, celui en cours.

Voir également : NEXT.

 
FLT
Syntaxe : f=FLT(<exp%>)
Convertit l'expression entière spécifiée entre parenthèses en un nombre à virgule flottante.
 
FREE
Syntaxe : f%=FREE
A pour résultat le nombre d'octets libres en mémoire interne de l'Organiseur.

Voir également : SPACE.

 
GET
Syntaxe : g%=GET
Attend qu'une touche soit frappée et détermine la valeur ASCII de la touche en question.

Voir également : GET$, KEY, KEY$, PAUSE.

 
HOUR
Syntaxe : h%=HOUR
Détermine l'heure du moment à partir de l'horloge système (0 à 23).

Voir également : SECOND, MINUTE, DAY, MONTH, YEAR, DATIM$.

 
IABS
Syntaxe : i%=IABS(<exp>)
Fournit la valeur absolue, c'est-à-dire sans signe, d'une entière. Par exemple IABS(-10.5) a pour valeur 11.
 
INT
Syntaxe : i%=INT(<exp>)
Fournit la partie entière (c'est-à-dire les unités) de l'expression entre parenthèses. Les chiffres négatifs sont arrondis à la valeur précédente, INT(-5.3) a donc pour résultat -6. Peut être utilisée à condition que la valeur du résultat soit comprise dans la gamme d'entiers de l'Organiseur.

Voir également : INTF.

 
INTF
Syntaxe : i=INTF(<exp>)
Elle fonctionne de la même façon que la précédente mais produit un nombre à virgule flottante et doit donc être utilisée lorsque le résultat produit se trouve hors de la gamme d'entiers de l'OPL.

Voir également : INT.

 
KEY
Syntaxe : k%=KEY
Produit la valeur ASCII de la touche frappée, si c'est le cas. Sinon, elle a pour résultat zéro. Cette commande n'attend pas qu'une touche soit frappée.

Voir également : PAUSE, GET, GET$, KEY$.

 
LEN
Syntaxe : l%=LEN(<exp$>)
Indique la longueur de l'expression chaîne entre parenthèses.

Voir également : LEFT$, RIGHT$, MID$, LOC, LOWER$, UPPER$, REPT$.

 
LN
Syntaxe : l=LN(<exp>)
Produit le logarithme naturel (base e) de l'expression entre parenthèses.
 
LOC
Syntaxe : l%=LOC(<exp$1>,<exp$2>)
Indique la position de <exp$2> dans <exp$1>. Si la seconde expression n'apparaît pas dans la première, LOC a pour résultat zéro. Par exemple LOC("MARIANNE","ANNE") produit la valeur 5 par ce que la sous-chaîne ANNE commence au cinquième caractère de la chaîne principale.

Voir également : LEFT$, RIGHT$, MID$, LEN, LOWER$, UPPER$.

 
LOG
Syntaxe : l=LOG(<exp>)
Calcule le logarithme de base 10 de l'expression entre parenthèses.

Voir également : LN

 
MENU
Syntaxe : m%=MENU(menu$)
La chaîne entre parenthèses sous la forme "élément1,élément2, élément3..." , est affichée à la manière du menu principal. Cette fonction permet de sélectionner une option du menu en procédant comme de coutume, avec les touches du curseur ou avec la première lettre de l'élément sélectionnée, puis produit le numéro rie cet élément (1 à ...). Elle a pour résultat zéro si l'on trappe la touche ON/CLEAR.
 
MINUTE
Syntaxe : m%=MINUTE
Détermine les minutes à partir de l'horloge système.

Voir également : SECOND, HOUR, DAY, MONTH, YEAR, DATIM$

 
MONTH
Syntaxe : m%=MONTH
Détermine le mois à partir de l'horloge système.

Voir également : SECOND, HOUR, DAY, MONTH, YEAR, DATIM$.

 
PEEKB
Syntaxe : p%=PEEKB(exp%>)
Produit la valeur rangée à l'adresse spécifiée par l'expression entre parenthèses. Cette valeur est comprise entre 0 et 255.

Voir également : PEEKW, POKEB, POKEW.

 
PEEKW
Syntaxe : p%=PEEKW(<exp%>)
Produit la valeur de l'entier de deux octets rangé aux adresses <exp%> et <exp%>+1.

Voir également : PEEKB, POKEB, POKEW.

 
PI
Syntaxe : p=PI
Produit la valeur de PI (3.142... ).
 
POS
Syntaxe : p%=POS
Calcule le numéro de l'enregistrement en cours dans le fichier utilisé.

Voir également : APPEND, BACK, ERASE, FIND, LAST, NEXT, POSITION, UPDATE.

 
RAD
Syntaxe : n=RAD(<exp>)
Convertit <exp> de degrés en radians.

Voir également : DEG.

 
RECSIZE
Syntaxe : r%=RECSIZE
Calcule le nombre d'octets occupés par l'enregistrement en cours. Un enregistrement est limité à 254 caractères, cette fonction permet donc de vérifier si l'on peut rajouter des données à un enregistrement sans dépasser la limite permise.
 
RND
Syntaxe : r=RND
Produit un chiffre aléatoire à virgule flottante compris entre 0 (compris) et 1 (exclus).

Voir également : RANDOMIZE.

 
SECOND
Syntaxe : s%=SECOND
Détermine les secondes à partir de l'horloge système (0 à 59).

Voir également : MINUTE, HOUR, DAY, MONTH, YEAR, DATIM$.

 
SIN
Syntaxe : s=SIN(<exp>)
Calcule le sinus de l'expression entre parenthèses qui représente un angle en radians.
 
SPACE
Syntaxe : s=SPACE
Calcule le nombre d'octets libres sur l'unité en cours. Un fichier doit être ouvert sur cette unité avant de lancer la fonction SPACE.

Voir également : FREE.

 
SQR
Syntaxe : s=SQR(<exp>)
Calcule la racine carrée de l'expression entre parenthèses.
 
TAN
Syntaxe : t=TAN(<exp>)
Calcule la tangente de l'expression entre parenthèses qui représente un angle en radians.
 
USR
Syntaxe : u%=USR(<exp%1>,<exp%2>)
La valeur de <exp%2> est transmise au registre D et la valeur de <exp%1> au registre PC du microprocesseur HD6303X qui exécute ensuite le programme en langage machine commençant à l'adresse <exp%1>. A la fin de cette routine, la valeur rangée dans le registre X est renvoyée au programme sous forme de nombre entier.

Note. Cette commande doit être utilisée avec précaution sous peine de perdre toutes les données mémorisées dans l'Organiseur,

Voir également : USR$, ADDR.

 
VAL
Syntaxe : v=VAL(<exp$>)
Produit le nombre à virgule flottante correspondant à l'expression chaîne entre parenthèses. Par exemple, VAL("470.0") donne 470.0. Une erreur se produit si tous les caractères de la chaîne ne sont pas de type numérique. Il est toutefois possible d'utiliser la notation scientifique, par conséquent VAL("1.3E10") aura pour résultat la valeur 1.3E10.
 
VIEW
Syntaxe : v%=VIEW(<exp%>.<exp$>)
Affiche <exp$> sur la ligne numéro <exp%> (1 ou 2) de l'écran. Si le texte contient plus de 16 caractères, la ligne défile automatiquement vers la gauche. Vous pouvez inverser le sens de défilement en appuyant sur la touche gauche ou droite du curseur. Les autres touches suspendent le défilement et produisent la valeur de la touche frappée. Si vous réutilisez VIEW et que <exp$> est une chaîne VIDE, l'affichage se poursuit à partir e l'endroit où il a été interrompu.

Voir également : DISP.

 
YEAR
Syntaxe : y%=YEAR
Détermine l'année en cours à partir de l'horloge système (1900 à 1999).

Voir également : SECOND, MINUTE, HOUR, DAY, MONTH, DATIM$.

FONCTIONS CHAÎNES

CHR$
Syntaxe : c$=CHR$(<exp%>)
Détermine le caractère ASCII associé à la valeur de l'expression entre parenthèses.
 
DATIM$
Syntaxe : d$=DATIM$
Fournit, sous forme de chaîne, la date et l'heure du jour qui lui sont spécifiées par l'horloge système ; ex. "LUN 17 FEV 1986 16:25:30".

Voir également : SECOND, MINUTE, HOUR, DAY, MONTH, YEAR.

 
DIR$
Syntaxe : DIR$("<unite>") / DIR$("")
Le premier cas, DIR$(<unite>) , affiche le nom du premier fichier rencontré sur l'unité spécifiée entre parenthèses. Le nom de l'unité (A, B ou C) doit être entouré de guillemets et de parenthèses. Il suffit ensuite de répéter cette fonction avec une chaîne vide pour obtenir, tour à tour, le nom des autres fichiers, jusqu'à ce qu'il ne reste aucun fichier sur l'unité, auquel cas la fonction produit une chaîne vide.
 
ERR$
Syntaxe : e$=ERR$(<exp%>)
Produit une chaîne décrivant une des erreurs qui se sont produites pendant l'exécution du programme. La fonction ERR affiche le numéro de l'erreur. On peut ensuite faire appel à ERR$ pour accéder au message d'erreur qui lui est associé. Si le numéro en question n'est pas compris entre 195 et 255, la chaîne d'erreur est "*** ERREUR ***"

Voir également : ERR, ONERR, RAISE.

 
FIX$
Syntaxe : f$=FIX$(<exp>,<exp%1>,<exp%2>)
Convertit <exp> en une chaîne contenant <exp%1> positions décimales dans une zone de <exp%2> caractères de largeur. Si <exp%2> est une valeur négative, la chaîne est justifiée droite. Exemple :

FIX$(123456.127,2,9) = "123456.13"
FIX$(1,2,-5) = " 1.00"

Si le nombre ne tient pas dans la largeur de zone spécifiée, la chaîne produite se compose d'astérisques.

Voir également : GEN$, NUM$, SCI$.

 
GEN$
Syntaxe : g$=GEN$(<exp>,<exp%>)
Convertit <exp> en une chaîne dans une zone de <exp%> caractères de largeur. GEN$ s'efforce de représenter le nombre sous forme entière, décimale ou scientifique, dans cet ordre. Si la valeur de <exp%> est négative, le résultat est justifié à droite. Si le nombre spécifié ne tient pas dans la largeur de zone, la chaîne produite se compose d'astérisques.

Voir également : FIX$, NUM$, SCI$.

 
GET$
Syntaxe : g$=GET$
Attend qu'une touche soit frappée et représente cette touche par une chaîne. Par conséquent, si vous appuyez sur la touche A minuscule, la chaîne a pour valeur "a".

Voir également : GET, KEY, KEY$.

 
HEX$
Syntaxe : h$=HEX$(<exp%>)
Calcule la valeur hexadécimale (base 16) de l'expression entière entre parenthèses. Par exemple, HEX$(255) a pour valeur "FF".
 
KEY$
Syntaxe : k$=KEY$
Produit une chaîne contenant la touche frappée, si c'est le cas. Sinon, elle produit une chaîne vide. Cette commande n'attend pas qu'une touche soit frappée.

Voir également : KEY, GET, GET$.

 
LEFT$
Syntaxe : l$=LEFT$(<exp$>,<exp%>)
Prélève les <exp%> premiers caractères de gauche de la chaîne <exp$>.

Voir également : RIGHT$, MID$, LOC, LOWER$, UPPER$, LEN.

 
LOWER$
Syntaxe : l$=LOWER$(<exp$>)
Convertit en minuscules les caractères majuscules de l'expression chaîne entre parenthèses et produit une chaîne entièrement en minuscules.

Voir également : UPPER$, LEFT$, RIGHT$, MID$, LOC, LEN, REPT$.

 
MID$
Syntaxe : m$=MID$(<exp$>,<exp%1>,<exp%2>)
Produit une chaîne contenant <exp%2> caractères de <exp$> , à partir du caractère à la position <exp%1>. Voir le chapitre traitant du découpage des chaînes.
 
NUM$
Syntaxe : n$=NUM$(<exp>,<exp%>)
Convertit en une chaîne, le nombre à virgule flottante <exp> en tant qu'entier dans une zone de <exp%> caractères de largeur. Si ce nombre ne tient pas dans la largeur de zone spécifiée, la chaîne finale se compose d'astérisques.

Voir également : FIX$, GEN$, SCI$.

 
RIGHT$
Syntaxe : r$=RIGHT$(<exp$>,<exp%>)
Prélève les <exp%> derniers caractères de droite de <exp$>.

Voir également : LEFT$, MID$, UPPER$, LOWER$, LOC, LEN, REPT$.

 
REPT$
Syntaxe : r$=REPT$(<exp$>,<exp%>)
Produit une chaîne composées de <exp%> fois <exp$>.

Voir également : LEFT$, RIGHT$, MID$, UPPER$, LOWER$, LOC, LEN.

 
SCI$
Syntaxe : s$=SCI$(<exp>,<exp%1>,<exp%2>)
Convertit <exp> en une chaîne en format scientifique, contenant <exp%1> positions décimales dans une zone de <exp%2> caractères de largeur.

SCI$(123456,2,8) = "1.23E+05" SCI$(1,2,8)= "1.00E00" SCI$(123456789,2,-9)= " 1.23E+08"

Si le nombre choisi ne tient par dans la largeur de zone spécifiée, la chaîne finale se compose d'astérisques.

Voir également : FIX$, GEN$, NUM$.

 
UPPER$
Syntaxe : u$=UPPER$(<exp$>)
Convertit en majuscules les caractères minuscules de l'expression entre parenthèses et produit une chaîne composée uniquement de majuscules.

Voir également : LEFT$, RIGHT$, MID$, UPPER$, LOWER$, LOC, LEN, REPT$.

 
USR$
Syntaxe : u$=USR$(<exp%1>,<exp%2>)
La valeur de <exp%2> est transmise au registre D et celle de <exp%1> au registre PC du microprocesseur HD6303X qui exécute ensuite la routine en langage machine commençant à l'adresse <exp%1>. A la fin de la routine, la valeur du registre X doit pointer sur une chaîne précédée d'un octet de longueur. Cette chaîne est ensuite affectée à la variable spécifiée.

Note. Cette commande doit être utilisée avec précaution sous peine de perdre toutes les données de l'Organiseur.

Voir également : USR, ADDR.


ANNEXE A

JEU DE CARACTÈRES DE L'ORGANISEUR

Le jeu de caractères de l'Organiseur est illustré dans le tableau au verso. Les caractères les plus fréquemment utilisés sont directement accessibles au clavier. Il en existe d'autres qui ne peuvent être tapés directement, les caractères accentués et grecs par exemple.

Il faut se servir de la fonction CHR$ pour les afficher. Il suffit de fournir à la fonction un nombre compris entre 0 et 255 pour pouvoir imprimer à l'écran ou sur imprimante n'importe lequel de ces caractères, ou les affecter a des variables chaînes.

UDG

Les caractères numérotés de 0 à 7 sont définissables par l'utilisateur, ce qui signifie en clair que vous pouvez vous même définir la façon dont les points s'affichent sur l'écran lorsque vous accédez à ces caractères par l'intermédiaire de CHR$.

Chaque caractère est défini par une série de sept octets, qui doivent être rangés dans une position de mémoire particulière. Dans les sept octets composant les différents caractères, les cinq bits de faible poids déterminent la taille du caractère, comme le montre la figure A.1. Les points de la première ligne proviennent du premier octet écrit à l'adresse $181.

Le programme UDG (graphiques définis par l'utilisateur) va nous permettrent de définir les caractères illustrés ci-dessous. Lorsqu'il est exécuté, il range les figures que vous lui fournissez en mémoire. Elles y resteront jusqu'à ce que vous vous serviez du programme pour les modifier. Vous devez toutefois retaper ce programme à chaque fois que vous vous servez de la machine.

Figure A.1

Définition d'un caractère

UDG: LOCAL num%,compte%,octet%(8) PRINT "CARACT. NO. "; INPUT num% compte%=1 DO PRINT "OCTET NO. ";compte% INPUT octet%(compte%) compte%=compte%+1 UNTIL compte%=8 PRINT "SAUVEGARDE..." POKEB $180,64+(num% AND 7)*8 compte%=1 DO POKEB $181,octet%(compte%) compte%=compte%+1 UNTIL compte%=8

Note. Sur l'écran de l'Organiseur, la seconde ligne de tout espace caractère est laissée vierge pour laisser suffisamment de place au curseur de soulignement et pouvoir ainsi le distinguer aisément du caractère proprement dit.

Caractères de contrôle

Ces caractères ayant un code ASCII compris entre 8 et 16 ont un usage spécial. Ils ne produisent pas de caractères visibles sur l'écran mais se comportent de la manière suivante :

CHR$(8) Déplace le curseur d'un caractère vers la gauche et supprime ce caractère
CHR$(9) Positionne le curseur à l'endroit le plus proche modulo 8
CHR$(10) Positionne le curseur sur la ligne suivante
CHR$(11) Positionne le curseur sur la première ligne de l'affichage (ligne d'origine)
CHR$(12) Efface l'affichage (équivalent de CLS )
CHR$(13) Positionne le curseur à l'extrême gauche de la ligne sur laquelle il se trouve
CHR$(14) Efface la première ligne de l'affichage et positionne le curseur en haut et à gauche
CHR$(15) Efface la dernière ligne de l'affichage et positionne le curseur en bas et à gauche
CHR$(16)   Déclenche l'avertisseur sonore de l'Organiseur

JEU DE CARACTERES DE L'ORGANISEUR

Les fonctions GET et KEY produisent le numéro correspondant au code ASCII du caractère représenté par la touche frappée.

Les touches ci-dessous ne figurent pas dans le jeu de caractères mais peuvent être lues par les fonctions ci-dessus. Le tableau suivant donne les codes associés à ces touches :

1 ON/CLEAR
2 MODE
3
4
5
6
7 SHIFT et DEL
8 DEL
13   EXE

ANNEXE B

DÉPANNAGE

AFFICHAGE VIERGE

Si rien ne s'affiche sur l'écran lors de la mise en marche, procédez comme suit:

  1. Réglez le contraste à fond.
  2. Débranchez la pile, rebranchez-la et remettez l'Organiseur en marche.
  3. Changez la pile.
  4. Débranchez les Datapaks et recommencez.

CLAVIER INACTIF

Si l'affichage fonctionne correctement mais que les touches n'ont aucun effet:

  1. Vérifiez que vous n'avez pas déjà tapé 255 caractères sur la ligne en cours.
  2. Appuyez plusieurs fois sur la touche ON et réessayez.
  3. Retirez la pile, attendez une minute et remettez-la en place.

Note. Dans ce cas, vous perdez toutes les données enregistrées dans la mémoire de l'Organiseur.

BOUCLE SANS FIN

Si, à la suite d'une erreur de structure dans une procédure OPL vous vous retrouvez dans une boucle sans fin, vous pouvez essayer d'en sortir en frappant d'abord la touche ON puis la touche Q, à condition de ne pas avoir employer la commande ESCAPE OFF.

Si cela ne produit aucun résultat, c'est sans doute parce que l'Organiseur II n'a pas le temps d'intercepter votre ON-Q (c'est le cas d'un INPUT ou d'un PRINT). Dans ce cas vous devez employer toute votre dextérité et frapper les touches ON-Q simultanément plusieurs fois de suite pour en sortir.

Malheureusement, il est parfois impossible de sortir de certaines situations. Il faut retirer la pile et... perdre le contenu de la mémoire centrale.

Consolez-vous ! C'est arrivé à tout le monde au moins une fois.


ANNEXE C

DONNÉES TECHNIQUES

Dimensions (étui protecteur en place)

Longueur : 142 mm
Largeur : 78 mm
Épaisseur : 29,3 mm

Poids (sans la pile) : 225 grammes.

Affichage

Affichage à cristaux liquides de deux lignes de seize caractères alphanumériques (matriciels).

Clavier

Trente-six touches au total, y compris touches d'édition, curseurs, alphabétiques, numériques, MODE et ON/CLEAR.

Microprocesseur : HD6303X

Mémoire

MEM   Modèle CM   32 K-octets
Modèle XP 32 K-octets
MEV Modèle CM 8 K-octets
Modèle XP 32 K-octets

EPROM 18/16/32/64 K-octets (modèle CM, jusqu'à 128 K-octets sur le modèle XP.)

Horloge

Horloge en temps réel à MOS complémentaire avec source de fréquence crystal de 36864 Hz

Datapaks

Support d'information EPROM (non effaçable électriquement).

Rampak (modèle XP uniquement)

Support de stockage effaçable électriquement (alimenté par sa propre pile d'une autonomie de 5 ans).

Conservation des données : moyenne des temps de bon fonctionnement 50 ans à une température pouvant aller jusqu'à 100'C.

Formatage : 30 minutes sur Psion Formatter - permet de réutiliser les Datapaks.

Durée : jusqu'à 100 formatages.

Capacité mémoire

Datapak 8 Ko 8.192 octets
Datapak 16 Ko 16.384 octets
Datapak 32 Ko 32.768 octets
Rampak 32 Ko 32.768 octets (modèle XP uniquement)
Datapak 64 Ko 65.536 octets
Datapak 128 Ko    131.072 octets (modèle XP uniquement)

Psion poursuit une politique de développement des produits. Les légères modifications en résultant ne sont pas toujours mentionnées dans le manuel.


ANNEXE D

PROGRAMMATION EN LANGAGE MACHINE

L'unité centrale de l'Organiseur est un microprocesseur HD6303X. Ce processeur sophistiqué peut être programmé directement dans son propre engage appelé langage machine ou code machine.

Les programmes en langage machine tournent bien plus vite que les routines en OPL et occupent moins de mémoire, mais ils sont aussi plus difficiles à écrire et à mettre au point. Par exemple, il se peut très bien qu'une seule erreur dans un programme en langage machine suffise à effacer toutes les informations enregistrées dans la mémoire interne de l'Organiseur, étant donné que les programmes de ce type contrôlent entièrement la puce formant le cœur de la machine.

Dans ce cas, il est préférable de sauvegarder toutes les données importantes sur Datapak avant de tester un programme en langage machine. En cas d'incident, il vous restera quand même une copie de votre travail.


ANNEXE E

TOPOGRAPHIE DE LA MEMOIRE DE L'ORGANISEUR

L'Organiseur se sert de la liste d'adresses suivante pour sauvegarder certaines variables systèmes. On peut accéder au moyen des commandes PEEKB, PEEKW, POKEB et POKEW :

ADRESSEDEFAUT    USAGE
$0069,$006A ($04) Compteur de délai de défilement horizontal.
$006B,$006C ($04) Compteur de délai de défilement vertical.
$0077 ($0E) Délai avant auto-répétition du clavier.
$0078 ($00) Compteur d'auto-répétition du clavier.
$007C <>0Indicateur d'arrêt automatique - zéro désactive l'arrêt automatique.
$20CB, $20CC Compteur de trames, augmente tous les 50 millièmes de seconde.
$20CD, $20CE   ($012C) Nombre de secondes par défaut avant l'arrêt automatique.
$00A4 ($00) Avertisseur silencieux - une valeur différente de zéro désactive l'avertisseur sonore.

ANNEXE F

LOGICIELS DE L'ORGANISEUR

A l'heure où nous écrivons ces lignes, les logiciels suivants ont été développes pour l'Organiseur II.

Finance Pack est un logiciel complétant les fonctions de calcul de l'Organiseur II par un certain nombre de fonctions financières, telles les annuités, les intérêts composés etc... De plus, il offre un très bon système de gestion de compte bancaire et de dépenses personnelles. Il est disponible en anglais, et bientôt en français.

Maths Pack est un logiciel qui se compose uniquement de procédures mathématiques et statistiques. Celles-ci peuvent être invoquées à partir de vos propres procédures, ll est disponible en anglais, et bientôt en français.

Oxford spelling checker est un vérificateur d'orthographe utilisant un dictionnaire de 23.000 mots. Il est disponible en anglais uniquement.

FilePak est un système de gestion de fichier offrant la particularité de dégager l'utilisateur de toute programmation. Il permet la création et la gestion de fichiers, l'impression d'états et l'import et l'export de données avec un autre micro-ordinateurs (formats Sylk, Dif, ASCII Tab, ASCII virgules et ASCII retour chariots). Il est disponible en français et en anglais.

Géompak est un carnet de terrain pour géomètres et topographes. Il offre à ces techniciens la possibilité d'enregistrer les données relevées sur le terrain et d'effectuer des calculs courants, afin de les transmettre vers un micro- ordinateur de bureau. Il est disponible en français.

Barpak est un logiciel dont la seule et unique fonction est de permettre la génération de codes à barres sur imprimante compatible Epson. Il est disponible en français.

Le Tableur de Poche (Pocket SpreadSheet) est un tableur, compatible avec Lotus 1-2-3, de 99 lignes sur 26 colonnes, comprenant plus de 40 fonctions. Si vous disposez du module de communication Comms-Link, vous pouvez échanger des feuilles de calcul avec des tableurs sur PC et Macintosh (Lotus 1-2-3, Symphony, Multiplan 3, Excel, ...). Il est disponible en français.

Top Finance, pour gérer efficacement vos comptes bancaires. Il offre aussi des modules de calculs d'emprunts, d'intérêts, de conversions de changes et de TVA. Un module d'analyse permet de regrouper vos dépenses. Vous pouvez imprimer vos états sur l'imprimante Printer II de Psion ou toute imprimante série.

Comms-Link, pour automatiser les communications RS232 avec un PC ou un Macintosh, correspond au câble de liaison entre l'Organiseur II et tout ordinateur possédant une liaison RS232, et au logiciel de communication. Disponible avec manuel français,

RamPaks (DataPaks avec une mémoire RAM) Existe en 32Ko de mémoire.

Le Développeur, un émulateur complet de votre Organiseur II sur PC. Pour écrire et debugger vos programmes OPL avec le confort d'un ordinateur de bureau. Nécessite Comms-Link pour l'échange de données entre l'Organiseur II et un PC. Il est disponible avec manuel français.

Diary-Link, pour échanger vos fichiers d'Agenda avec un PC en format texte ou Sidekick. Nécessite Comms-Link. Il est disponible en anglais.

Le Formulateur, pour calculer vos formules et équations sans programmer. Vous établissez vos formules comme sur une feuille de papier et l'Organiseur se charge de les résoudre. Il est fourni avec plus de 250 formules. Il est disponible en anglais, et bientôt en français.

Printer II, l'imprimante de Psion. Elle est alimentée soit par batterie rechargeable, soit à l'aide l'un adaptateur secteur, tous les deux fournis avec la machine. Un sabot permet d'incorporer l'Organiseur II dans l'imprimante pour constituer un ensemble compact et autonome. Elle utilise du papier thermique, et peut imprimer sur 20, 40, 60 ou 80 colonnes, en simple et double hauteur, avec ou sans soulignement. Elle peut de plus imprimer des graphiques.

Veuillez consulter votre revendeur pour obtenir un complément d'information sur tous ces produits ainsi que sur les autres logiciels disponibles.

Sidekick est une marque déposée de Borland International Inc.
Macintosh est une marque déposée de Apple Computer Inc.
Lotus 1-2-3 et Symphony sont des marques déposées de Lotus Dévpt Corp.
Multiplan 3 et Excel sont des marques déposées de Microsoft Corp.


ANNEXE G

GARANTIE

L'Organiseur II de Psion (à l'exception des piles) est couvert par une garantie d'un an contre toute panne électrique ou mécanique ne relevant pas d'une mauvaise utilisation ou de dommages par négligence. L'Organiseur ne contient aucune pièce pouvant être révisée par l'utilisateur et toute tentative de démontage ou de réparation de la machine, autre que par un agent d'entretien officiel de Psion, annulera cette garantie.

La boîte dans laquelle vous a été livré l'Organiseur contient une carte de garantie contenant tous les détails nécessaires sur l'importateur national. Il est essentiel de la remplir et de la renvoyer au plus tôt à l'importateur (comme indiqué sur la carte) afin de faire enregistrer la garantie.

En cas de problème, consultez le manuel et, plus particulièrement, la section consacrée au dépannage. Si elle ne permet pas de résoudre le problème, renvoyez votre Organiseur dans un emballage protecteur approprié à l'importeur, que se chargera de remplacer ou de réparer la machine si cette dernière est jugée défectueuse. Psion ne pourra être tenu responsable des dommages subis par les marchandises pendant l'expédition à l'importeur, pas plus que ce dernier. Cette garantie n'affecte nullement vos droits légaux.


INDEX

A

ABS ADDR AFFICHAGE, (2), (3) AGENDA, (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12) ALARME, (2), (3), (4), (5), (6), (7), (8), (9) ALLER, (2) APPEND ARRET, (2) ASC AT ATAN

B

BEEP BOUCLE, (2), (3), (4), (5), (6), (7), (8), (9), (10), (11) BREAK

C

CALC, (2) CARACTÈRES DE CONTRÔLE CARACTÈRES DEFINIS PAR L'UTILISATEUR CAT, (2), (3), (4), (5) CHAÎNE, (2), (3), (4), (5) CHANGEMENT DATAPAK CHR$ CLAVIER, (2), (3), (4), (5), (6) CLOSE CLS CONCATENATION CONTINUE COPIE, (2), (3), (4), (5), (6) COPY COS COUNT CREATE CURSEUR, (2) CURSOR

D

DATAPAK, (2) DATE, (2) DATIM$ DAY DECOUPAGE DEG DELETE DIR$ DISP DO/UNTIL

E

EDIT EDITION EDITION D'ENREGISTREMENTS EFFACE, (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12) EFFACEMENT, (2) ENREGISTREMENT, (2), (3), (4), (5) ENTIERS, (2), (3) EOF ERASE ERR ERR$ ERREURS, (2), (3), (4), (5), (6) ESCAPE ON/OFF ETEINDRE EXEC, (2), (3), (4) EXIST EXP

F

FICHIER, (2), (3), (4), (5), (6) FIND FIRST FIX$ FLT FONCTIONS DE L'OPL FORMATAGE, (2) FREE

G

GEN$ GET GET$ GLOBAL GOTO

H

HEX$ HORLOGE, (2) HOUR

I

IABS IF/ELSEIF/ELSE/ENDIF INFO, (2) INPUT INT INTF

J

JEU DE CARACTERES

K

KEY KEY$ KSTAT

L

LABELS DE PROGRAMME LANGAGE MACHINE LEFT$ LEN LISTE, (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13) LN LOC LOCAL LOG LOGIQUE, (2), (3) LOWER$

M

MAIN, (2), (3), (4) MAJ, (2) MENU, (2), (3), (4), (5), (6), (7), (8), (9) MENU MID$ MINUTE MISE A L'HEURE MISE EN MARCHE MOLETTE DE RÉGLAGE ou CONTRASTE, (2) MONTH

N

NEXT NOMBRES ENTIERS A VIRGULE FLOTTANTE NUM$

O

OFF ONERR OPEN OPERATEURS DE COMPARAISON, (2) OPL

P

PAGES, (2) PAUSE PEEKB PEEKW PI PILE, (2) POINT-VIRGULE POKEB POKEW PORT POUR PERIPHERIQUE POS POSITION PRINT/LPRINT PROCÉDURE, (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13)

R

RAD RAISE RANDOMIZE RAZ, (2) RECH, (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13) RECHARGE, (2) RECHERCHE, (2), (3) RECSIZE REM RENAME REPT$ RETURN RIGHT$ RND

S

SAUVE, (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14), (15) SAUVEGARDE SCI$ SECOND SIN SON SORTIE SPACE SQR STOP

T

TAN TOUCHES, (2) TRAN, (2), (3) TRANSCODAGE DES PROCÉDURES TRAP

U

UPDATE UPPER$ USE USR USR$

V

VAL VARIABLES, (2), (3), (4) VIEW

W

WHILE/ENDWH

Y

YEAR

Z

ZONE