Tuteur pour le langage DBASE

Texte du Tuteur écrit par Gilles HUNAULT d'après un texte de Laurence BRUNET.

Une liste des autres tuteurs (langages, logiciels, systèmes d'exploitations...) est accessible par Mosaic...


Table des Matières

Le langage Dbase
Vocabulaire et Opérations élémentaires


INTRODUCTION

 Le logiciel DBASE version " III plus " appelé plus
 couramment DBASEIII Plus est un système de gestion de base
 de données quasi-relationnelle muni d'un langage
 de programmation structuré orienté gestion. Il fonctionne en
 mode interactif et/ou en mode programmé - interprété.

 Toutes les commandes utilisables au niveau interactif sont
 programmables. Le mode interactif peut être utilisé à
 deux niveaux : le niveau " assisté " qui propose une
 utilisation par menus déroulants, le niveau interactif
 sans assistance pour les utilisateurs qui peuvent lancer
 les commandes DBASE en mode direct ou les programmes.

 Remarque : Ce langage peut se compiler grâce notamment à
 CLIPPER. La version IV de DBASE dispose d'un compilateur
 intégré. Des clones, tel FOXBASE sont compatibles et plus
 rapides que DBASE.

 Une base de donnée est par exemple l'ensemble des
 informations contenues dans un carnet d'adresses, ou
 celles contenues dans le fichier d'une bibliothèque,
 l'ensemble des informations concernant une classe.
 Techniquement, c'est un tableau rectangulaire à double
 entrée. Ces informations peuvent se répartir en fiches
 ou cartes et correspondent à l'ensemble des
 renseignements concernant un individu. Elle sont donc
 regroupées en entités unificatrices, fédératrices du
 tableau (du fichier). Chaque fiche contient le même
 type d'informations pour l'entité fédératrice.

 Le fichier de la bibliothèque permet le classement
 alphabétique des informations , l'ajout ou le retrait
 d'une fiche... Il est à ce titre plus facile, plus
 efficace dans son utilisation qu'un carnet d'adresses.
 Mais ce type de fichier ne permet pas d'accéder aisément
 aux informations secondaires, c'est à dire celles qui ne
 sont pas reconnues comme critères de classement.

 Il est difficile de rechercher un livre en fonction de
 l'année d'édition ou de la maison d'édition si le
 fichier n'a pas été organisé, classé en fonction de ce
 critère ou de cet autre. Encore plus difficile de faire
 une recherche sur deux critères simultanément.

 Une base de données informatisée permettra en outre ce
 genre de recherches, mais aussi des classements multi-
 critères, des comptages, des mises à jour ... .

    Chaque ligne du carnet d'adresses

      +-------------------------------------------------------------+
      ! nom     ! prénom     !  adresse               ! téléphone   !
      +-------------------------------------------------------------+
--->  ! TOTO    !  Lulu      !  12 rue du vin         ! 11 11 11 11 !
--->  ! LOULOU  !  Machin    !  75 avenue J. JAURES   ! 23 45 67 89 !

    est un enregistrement ou ligne  (RECORD, LINE)

VOCABULAIRE ET OPERATIONS ELEMENTAIRES

    Chaque fiche du fichier de la bibliothèque
           +------------------------------------------------+
           !                                                !
           !   Titre              :     L'HOMME DE PAROLES  !
           !   Nom de l'auteur    :     Claude HAGEGE       !
           !   Maison d'édition   :     Fayard              !
           !   Année d'édition    :     1985                !
           !   Nombre de pages    :     315                 !
           !                                                !

    est aussi un enregistrement ou ligne  (RECORD, LINE).

    Une  base  travaille  sur  des  spécifications de lignes
    plutôt que sur des numéros de lignes.  Au lieu de parler
    des lignes  17, 15  et 28,  on essaiera  de trouver  une
    relation qui définit ces lignes.  Ce sera par exemple la
    relation :  "dont l'année d'édition est 1985" ou "  dont
    le nombre de page est inférieur à 300 ET dont la  maison
    d'édition est Grasset".

  Chaque colonne du carnet d'adresses  +------------------------+
                                       ! adresse                !
                               +-------+--+---------------------+
                               ! prénom   ! 12 rue du vin       !
                       +-------+-+--------+ 75 avenue J. JAURES !
                       ! nom     ! Lulu   !
                       +---------+ Machin !
                       !  TOTO   !

    est un  champ ou colonne ( FIELD , COLUMN )

    Chaque type d'informations de la fiche de bibliothéque
                +---------------------------------------------+
                !                                             !
        ---->   !   Titre              :  L'HOMME DE PAROLES  !
        ---->   !   Nom de l'auteur    :  Claude HAGEGE       !
        ---->   !   Maison d'édition   :  Fayard              !

    est aussi un  champ ou colonne ( FIELD , COLUMN )

    Le type d'informations contenu dans le carnet d'adresse

                +----------+
                ! prénom   !
         +------+--+-------+
         ! nom     !       !
         +---------+
         !         !

    ou dans le fichier de la bibliothèque

                +----------------------
                !   Titre
                !   Nom de l'auteur
                !   Maison d'édition

  est toujours le même.   Son cadrage (format) a été  choisi
  comme   grille   de   construction.     Cette  grille  est
  communément appelée :  STRUCTURE de la base de données.

  *** Pour charger DBASE à partir du DOS il suffit de  taper
  suivant la configuration :

         DO 
      ou DBASE 

  *** On arrive sous l'espace de travail de DBASE, à  partir
  duquel  nous  pourons  passer  des  commandes  à DBase qui
  seront exécutées  de manière  interactive.   Cet espace se
  reconnait par son prompt, le "."  , en début de ligne  (en
  colonne 1).

  On y distingue trois espaces différents

       -  l'espace de travail interactif.
       -  l'environnement  " assist ".
       -  l'éditeur (dans lequel on écrit les programmes).

  *** Pour sortir de DBASE il suffit de taper :

       . QUIT 

  On se retrouve alors sous DOS.


  ***  Au  chargement  de  Dbase,  certains  paramètres sont
       activés. Ils sont affichables par :  . LIST STATUS
       et modifiables par des commandes  :  . SET ... ON/OFF ... TO

  ***  Il  n'est  pas  besoin  de  donner  une extension aux
  fichiers qui seront  créés sous DBase.   Le logiciel  s'en
  charge lui même en donnant les extensions suivantes :

        .DBF   pour une base de données.
        .MEM   pour un fichier contenant des variables.
        .NDX   pour un  fichier d'indices de tri.
        .PRG   pour un  programme.

QUELQUES COMMANDES UTILES
    ***   Consulter le fichier d'aide :
                . HELP
                . HELP  < mot_clé >

    ***   Adresser   par    défaut   une    unité   ou   un
          sous-répertoire :

                . SET DEFAULT TO  < unité: >
                . SET DEFAULT TO  < unité:\sous-répertoire >

    ***   Lister tous  les  fichiers  d'une  unité  ou  ceux
          spécifiés par  ABC*.XYZ  ( équivalent de DIR  sous
          DOS , DBase accepte  d'ailleurs  les mêmes notions
          anbiges que le DOS ) :

                . LIST FILES
                . DIR
                . ou LIST FILES ON < unité >
                . LIST ABC*.XYZ

    ***   Revenir  au  mode commande  reconnaissable à  son
          point  "."  de  "prompt" ,  par exemple en cas de
          programme qui  boucle :

                . appuyer sur La touche ESC
                  ("Escape" ou "Sortie")


    ***   Ecrire  à l'écran :

                . ? "bonJour"

bonJour
CREATION DE BASES
  La  création  d'une  base  de  données  supose en amont un
  travail   de   réflexion   sur   la   structuration    des
  informations.    De   cette  réflexion  dépend   la  bonne
  utilisation et la bonne maintenance de la base de données.
  Les thèmes de cette réflexion doivent éclairer les  points
  qui sont présentés ici.

  1. Le public (les utilisateurs) :

  A qui  va servir  la ou  les bases  de données créées pour
  déterminer  éventuellement   les  problèmes   des  niveaux
  d'interface.   Il faut  une définition  des besoins exacts
  des   utilisateurs,   en   termes   de  manipulations,  de
  spécifications d'actions  précises.   Ici on  doit bien se
  mettre  d'accord  avec  l'utilisateur  pour  construire le
  cahier des charges.


12 : CREATION DE BASES (2)

  2. Les manipulations (les requêtes) :

  A quoi va servir la ou  les bases de données créées ?   Il
  faut indiquer les spécifications précises des traitements,
  et/ou manipulations même les plus minimes avec toutes  les
  retombées que cela supose sur la base de données.

  Remarque  :    bien  des  bases  de  données  ne  sont pas
  utilisables  ou  de  maniements  très  difficiles faute de
  cette analyse.

  3. Les  données  (forme et stockage) :

  Sera-t-il  nécessaire  de  coder  les  données ? en ce cas
  comment les coder ?  Y  a t' il des données manquantes  ou
  aberrantes ?  en ce  cas comment  en tenir  compte dans le
  codage pour qu' elles ne faussent pas les traitements ?

    Une fois fait cet important travail de réflexion,  munis
    d'un cahier des charges  qui nous indique clairement  la
    marche à suivre, il reste à créer la base sur la machine
    avec Dbase.  Pour le logiciel toute création de base  de
    données commence par la construction de la structure  du
    tableau.  Pour reprendre des exemples d'actions que nous
    connaissons bien,  ce que  nous savons  déjà faire c'est
    construire un tableau sur le papier.  Pour cela il  faut

    a) -  donner un nom aux différentes colonnes  qui le
          composent,

    b) -  dimensionner    les     colonnes    pour   que
          l'information ne déborde pas.


    ***  Pour accéder à la création de la  structure il
         suffit de taper :  . CREATE < nom de fichier >

    Le logiciel Dbase demande pour chaque champ ( colonne ):

         -  son nom    --->  identificateur du  champ ( nom
                             de colonne )

         -  son  type  --->  N  pour  numérique,
                             C  pour caractère,
                             L  pour logique ( vrai/faux )
                             M  pour mémo  ( champs de type
                                texte )
                             D  pour date

         -  sa taille  --->  dimensionnement  du champ nombre
                             de caractères ou chiffres,  avec
                             éventuellement  le  nombre   de
                             décimales, virgule comprise. )
Limites de Dbase IIIplus

Restrictions :  au plus  128 champs  par base,  10 bases avec
                chacune  7  fichiers  d'indices  et  4 kO par
                enregistrement.

Précision maximale  : 19  décimales, avec  des nombres  entre
                      1.E-307 et 1.E+308 .

    La  suite  logique  de  l'opération  de  création  de la
    structure de la base de données consiste bien entendu  à
    SAISIR le contenu  ( remplir le  tableau ). La  première
    posibilité  qui  vous  est  offerte  de le faire, est de
    répondre O (oui) à la question :

      " Voulez-vous commencer la saisie des données ?  ",

    qui nous est posée à  la "sortie" du mode de  création .


    Une autre posibilité vous est offerte avec la commande :

          . APPEND

    exécutable à tout moment.

    Le logiciel  s'occupe seul  de sauvegarder  structure et
    données.  En fait Dbase sauvegarde au fur et à mesure de
    la saisie de l'information, il fonctionne avec des zones
    mémoire spécifiques  pré-dimensionnées ou  buffers qu'il
    va écrire sur  le disque ou  la disquette à  chaque fois
    qu'elles  sont  pleines.    Il  est  alors   extrèmement
    important  de  sortir  du  logiciel  en  respectant   la
    procédure  de  sortie  c'est  à  dire en tapant QUIT car
    avant de rendre  la main au  DOS, Dbase fait  toutes les
    sauvegardes nécessaires et ferme les fichiers.

OUVERTURE DE BASES et GESTION DES DONNEES
    La fois suivante c'est à dire la prochaine fois que vous
    utiliserez Dbase si vous  voulez travailler sur la  base
    de  données  que  vous  aviez  créée  il  vous faudra la
    charger  en  mémoire  après  bien  entendu  avoir chargé
    DBase.  Pour ce faire il vous faudra taper la commande :

            . USE 


    Remarque :  Ne  pas oublier la spécification  d'unité et
    éventuellement le chemin ( path ) si besoin est.


  Il peut être important de modifier la structure de la base
  de données.   On poura faire  2 types de  modifications au
  niveau de la structure :

   - les corrections au niveau de la structure déjà
     créée, noms des champs, longueur, type ...

   - les ajouts ou retraits de champs.

   L'ordre est : . MODIFY STRU(cture)

  On arrive alors sous le mode de création de structure avec
  à l'écran celle de la base de données active.


MODIFICATIONS DES DONNéES

  *** On peut afficher en mode plein écran le contenu de  la
  base de données en ayant  en même temps la possibilité  de
  corriger les données ainsi listées : . BROWSE

  *** On peut  aller chercher une  fiche dont on  connait le
  numéro d'enregistrement ( c'est  à dire son numéro  d'odre
  dans la base de données ) :

                . EDIT 

  *** On peut ajouter  un ou plusieurs enregistrements  à la
  base de données :

                . APPEND

  ***  Le  mode  "append"  ressemnble  au mode de saisie des
  données tant au niveau de la présentation qu' à celui  des
  manipulations.

20 : DESTRUCTION  DES DONNéES


  *** On  peut évidement  détruire des  enregistrements dans
  une base  de données.   Cette  destruction se  passe en  2
  temps  :    tout  d'abord  on  pose des marques devant les
  enregistremnts que l'on désire effacer :

           . DELETE [étendue] FOR 

  Ceci est considéré comme l'effacemnt logique des  données.
  Il reste donc à effacer physiquement les enregistrements :

           . PACK

  Cependant - et ceci avant  que l'ordre PACK soit taper  et
  validé - on peut revenir  en arrière c'est à dire  enlever
  les marques d'effacement posé par DELETE avec l'ordre :

              . RECALL [étendue] FOR 

ETENDUES ET REPERES

  Remarque :  L'éttendue désigne le nombre  d'enregistrments
  consernés  par  le  commande  à  partir  de la position du
  pointeur dans la base.


Pointeur

  Dbase repère les enregistrements par rapport à un  'index'
  qui  se  dépalce  en  fonction  des  actions.    Cet index
  s'appelle le  pointeur.   L'enregistremnt qui  est désigné
  par le pointeur est dit actif.

Fonctions

AFFICHAGE DE LA STRUCTURE

  Le premier et le plus utile, l' affichage de la  structure
  de la base de données en cours d'utilisation :
         . LIST STRUcture

  *** On obtient alors le descriptif comme par exemple
    Structure de la base de données : A:ESSAI2.DBF
    Nombre total d'enregistrements :      12
    Date de la dernière mise à jour : 02/06/87
    Champ  Nom champ    Type        Dim  Dec
        1  NOMS         Caractère    25
        2  NOTE_F       Numérique     5    2
        3  REDOUBLE     Logique       1
    ** Total **                      32
  On peut aussi utiliser la commande
         . DISPlay STRUcture

  L'affichage  est  le  même  ;  la seule différence est que
  l'ordinateur  s'arrête  dès  que  l'écran  est  rempli  et
  demande confirmation avant d'aficher la suite.

AFFICHAGES DES DONNEES

  Cet  affichage  se  fait  sans  aucune  présentation.  les
  enregistrements trop longs pour l'écran sont affichés  sur
  plusieurs lignes.  L'ordre est :
    . LIST  . DISP all (si on veut un défilement par page écran)

  L'affichage brut  des données  est très  difficile à lire,
  aussi quand  une base  de données  est très  grande il est
  plus aisé de ne faire  apparaître que les champs que  l'on
  veut consulter, ce qu'on appelle un affichage "sélectif".
    . LIST 

  Remarque :  Si il y a plus d'un champ à afficher les  noms
  des champs doivent être séparés par des virgules. On peut
  aussi utiliser des formules sur champ. Exemple :
    . list ampoule, durée, durée/60," minutes"
       Enreg. Nų  AMPOULE DUREE
             1    1        1300
             2    2        1200
             3    3        1300 etc.
AFFICHAGES DES DONNEES et OPERATIONS SUR CHAMPS

  L'affichage des  données peut  être présenté  de manière à
  faciliter leur lecture. Exemple :
   . list "l' ampoule nommée " , AMPOULE , " dure ", DUREE ," minutes "
   Enreg. Nų  "l' ampoule nommée "  AMPOULE  " dure "  DUREE " minutes "
         1    l' ampoule nommée     1         dure      1300  minutes
         2    l' ampoule nommée     2         dure      1200  minutes
         3    l' ampoule nommée     3         dure      1300  minutes
         4    l' ampoule nommée     3bis      dure      1100  minutes

AFFICHAGES "CONDITIONNELS"

  Cet affichage est encore  plus précis que le  précédent il
  permet la présentation de  données qui répondent à  une ou
  plusieurs conditions spécififiées par l'utilisateur.

     . LIST FOR 
  ou . LIST  FOR 

  Exemple 1 : . list for duree > 1250     Exemple 2 : . list ampoule for duree > 1250
         Enreg. Nų  AMPOULE DUREE                Enreg. Nų  ampoule
               1    1        1300                      1    1
               3    3        1300                      3    3

  Exemple 3 : . list noms for noms = "D"
         Enreg. Nų  NOMS
               1    DURAND
               4    DE SAINT VINCENT
               8    DUVAL
              12    DURAND

ENCHAINEMENT DE CONDITIONS

  Pour aller plus loin dans l'affichage et dans la précision
  notre   solution   est   d'employer   l'enchaînnement   de
  conditions.  Nous disposons  de 3 outils logiques  pour le
  faire : .AND; .OR. et .NOT.

  Exemple avec .AND.
   . list nom, prenom, note_fran  for redouble .and. note_fran >10
       Enreg. Nų  nom                       prenom            note_fran
             7    AVIATEUR                  Jean-Daniel           15.00
            11    DURAND                    Claude                10.50
            13    CHRETIEN                  Claudette             12.00
            19    FROMAN                    Michelle              15.00
  Exemple avec .OR. :
    . list nom, prenom, note_fran  for redouble .OR. note_fran <0
      Enreg. Nų  nom                       prenom            note_fran
            1    DURAND                    Joel                  10.00
            3    RATUIS                    Voncent                3.00
            7    AVIATEUR                  Jean-Daniel           15.00
           11    DURAND                    Claude                10.50

  Exemple avec .NOT. :
    . list nom, prénom, redouble for .not. redouble
      Enreg. Nų  nom                       prénom          redouble
            2    MERLOT                    Danielle        .F.
            4    DE SAINT VINCENT          Marie-Claude    .F.
            5    XORBA                     Anatole         .F.
            6    THOUPROV                  Mickael         .F.
            8    DUVAL                     Jean-luc        .F.
            9    HUN                       Marcel          .F.
           10    CONSTANT                  Daniel          .F.
           12    DURAND                    Frédérique      .F.
           15    KADO                      François        .F.
           16    GIBBRAN                   Khalil          .F.
           17    OCTAVE                    Thérèse         .F.
           20    ROBERT                    anne            .F.

COMPTAGES

  Nous   passons   maintemnant   à   d'   autres   types  de
  manipulations :   les  comptages.   Nous considérerons ici
  deux sortes de travaux sur  les données :  les  comptages,
  les  additions.    Le  résultat  de  ces  comptages pourra
  toujours  être  affecté  dans  une  variable, c'est à dire
  stocké dans une boite portant un nom et qui comtiendra  la
  valeur  trouvée  par  la  machine.    Nous  en reparlerons
  ultérieurement au cours de l'étude de la commande STORE et
  du moyen de  conserver l'ensemble de  ces boites dans  des
  fichiers de variables.

  Les comptages n'intéressent que les enregistrements de  la
  base de  données, autrement  dit ils  ne touchent  que les
  lignes du tableau.  On  comptera le nombre d'élèves de  la
  classe, ou le nombre de redoublants, ou le nombre d'élèves
  qui ont plus de 10 en français, ou le nombre d'élèves  qui
  ont plus de 10 en français et plus de 10 en maths...

  Un comptage se fait grâce à l'instruction
         . COUNT
         ***   Avec affectation du résultat dans une variable :
         . COUNT TO 

  On peut aussi déterminer un nombre d'enregistrements de la
  base de données par des condition(s)

         . COUNT  FOR  
         ***   Avec affectation du résultat dans une variable :
         . COUNT  FOR    TO  

Enchaînement de conditions

  Comme  nous  avons   pu  enchaîner  des   conditions  pour
  "perfectionner" un affichage, nous pourrons le faire  pour
  les  comptages  qu'ils  soient  ou  nom  affectés dans des
  variables.    Nous  disposons  des  mêmes  outils que pour
  l'affichage :  .AND.  .OR.  .NOT.

  . COUNT  FOR   .enchaînement. 
  ***   Avec affectation du résultat dans une variable :
  . COUNT  FOR   .enchaînement.  to 

Additions

  Nous allons maintenant  additionner des champs,  colonnes.
  Il  va  sans  dire  que  ces  champs  doivent être de type
  NUMERIQUE, le logiciel ne sachant pas faire d'addition sur
  un autre type de champs.


Total d'un champ numérique pour toute la base de données :

  Pour que Dbase puisse  additionner un champ (  numérique )
  il faut toujours lui indiquer  le nom du champ sur  lequel
  porte l'opération. On utilise l'instruction :

         . SUM 

SOMMES DE CHAMPS

Addition d'un champ numérique :

        .SUM  
        ***   Avec affectation du résultat dans une variable :
        . SUM   TO  

Addition " conditionnelle " d'un champ numérique :

         . SUM  FOR  
         ***   Avec affectation du résultat dans une variable :
         . SUM  FOR    TO  

Enchaînement de conditions

  Comme  nous  avons   pu  enchaîner  des   conditions  pour
  "perfectionner" un comptage,  nous pourrons le  faire pour
  les additions  qu'elles soient  ou nom  affectées dans des
  variables.  Nous  disposons des mêmes  outils que pour  le
  comptage :  .AND.  .OR.  .NOT.


 . SUM   FOR   .enchaînement.  
  ***   Avec affectation du résultat dans une variable :
 . SUM  FOR  .enchaînement.  TO  

STOCKAGE DANS UNE VARIABLE ET SAUVEGARDE DE VARIABLES DANS UN FICHIER

  Nous avons testé , au  tout début du cours, la  posibilité
  qu'avait  le  logiciel  d'écrire  sur  l'écran le résultat
  d'une opération :
                        +----------------------+
                        ! . ? 2+2              !
  . ? 2+2        --->   !       4              !
                        !                      !
                        â----------------------Ł

(sur écran)
  Nous  avons  aussi  vu  au  cours  des  comptages que nous
  pouvions  affecter  le  résultat  d'un  comptage  ou d'une
  addition dans une variable,  c'est à dire le  stocker dans
  une boite par les ordres COUNT TO  ou SUM
   TO .

STOCKAGE ET SAUVEGARDE

  Nous  pourrons  donc  maintenant  stocker le résultat d'un
  opération   quelconque   dans   une   variable  dont  nous
  indiquerons le nom au logiciel.

    . STORE  TO  

   Exemple :

    . STORE 2 + 2  TO  TOTAL

  Si l'on regarde  le contenu de  la variable total  il sera
  égal  à  4.  Nous  pourrons  aussi  stocker  des chaine de
  caractères dans un variable.

    . STORE "bonjour"  TO  HELLO

  Si l'on regarde  le contenu de  la variable hello  il sera
  égal à bonjour.

REMARQUES SUR LES AFFICHAGES ET LES OPERATIONS

  Remarques :   Les  chaînes de  caractères doivent toujours
  être mises entre " ". L'affichage par ? ne correspond  pas
  toujours au stockage ;  ainsi 1/3 peut être  calculé comme
  0.333333333 et affiché comme 0.33 seulement.


 Les opérations standard utilisent les symboles classiques :

         - addition ---> +                  - soustraction ---> -
          . ? 2+2                             . ? 9-5
           4                                   4

          - multiplication ---> *           - division ---> /
          . ? 12*3                             . ? 12/3
            36                                   4.00

         *** Pour avoir plus de décimales :
          . ? 12/3.000
               4.000

  On  peut  aussi  effectuer  des  opérations logiques :  (T
  signifie TRUE, soit vrai et F veut dire FALSE, soit faux.

         - egalité ---> =                   - Différence ---> <>
           . ? 2 = 2                           . ? 2 <> 2
           .T.                                 .F.

         - Plus grand que ---> >             - Plus petit que ---> <
           . ? 2 > 8                           . ? 2 < 8
           .F.                                 .T.

  Remarque :   Attention  les opérations  de comparaisons et
  l'addition peuvent  aussi s'effectuer  sur les  chaines de
  caractères. AInsi :

      . ? "bon" + "jour"
      bonjour

  *** Vous testerez vous-mêmes les comparaisons de chaîne de
  caractères.  Sachez seulement qu'elles se font en fonction
  du codage ASCII.

Affichage du contenu des variables stockées en mémoire


  Les  variables  qui  sont  créées  par  l'utilisateur sont
  stockées en  mémoire vive  par le  logiciel qui  peut donc
  nous indiquer l'état des variables qu'il a en mémoire :

         . DISPLAY MEMO(ry)

AFFICHAGE DES VARIABLES

 On effectue les affectations suivantes :
 . store 12*3 to totmuult

  36
 . store 2+3 to totmuult

   5
 . store 2+3 to totadd
   5

 . store 12*3 to totmuult
  36

 . store 9-5 to totmin
   4

 . store 12/3 to totdiv
   4.00

 . store "bonjour" to hello
  bonjour

 . store 2>8 to peut_etre
  .F.

 . store 2<8 to surement
  .T.

          . display memo
          TOTMUULT    pub   N  36    (36.00000000)
          TOTADD      pub   N   5    ( 5.00000000)
          TOTMIN      pub   N   4    ( 4.00000000)
          TOTDIV      pub   N   4.00 ( 4.00000000)
          HELLO       pub   C  "bonjour"
          PEUT_ETRE   pub   L  .F.
          SUREMENT    pub   L  .T.
               7 variable(s) définie(s),
              49 octet(s) utilisé(s)
             249 variable(s) disponible(s),
            5951 octet(s) disponible(s)


    - la  première colonne  correspond au  nom des varaibles
      (pas plus de 10 caractères pour les nommer).

    - La seconde colonne indique si ces variables sont
      publiques ou privées

    - La troisème colonne correspond au type  d'informations
      stocké dans la variable.

    - La quatrième colonne  correspond à la valeur  affichée
      pour cette variable.

    - La  cinquième colonne  donne la  valeur exacte stockée
      pour   cette   variable   est   stockée     (seulement
      pour les variables numériques).


SAUVEGARDE DES VARIABLES

  Toutes les variables qui sont créées à un moment donné  de
  la session de travail le sont en mémoire vive ( RAM ) donc
  elles   sont   volatiles   c'est   à  dire  qu'elles  vont
  disparaître lorsqu'on éteindra la machine.  Il est souvent
  intéressant  de   conserver  les   résultats  d'opérations
  pratiquées sur la base de données dans un fichier.   Ainsi
  tout  le  travail  fait  pourra  être  conservé et utilisé
  ultérieurement.

  Dbase permet de le faire grace à la commande :

    . SAVE TO 

  Remarque :   Ne  pas oublier  la spécification  d'unité et
  éventuellement le chemin (path) si besoin est.


Regénération des variables

  Inversement lorsqu' on aura besoin au début d'une  session
  d'utiliser  un  fichier  de  variables  il  suffira  de le
  charger en mémoire avec la commande :

    . RESTORE FROM 


TRIS ET INDEXATIONS

  Jusqu'à présent nous avons travaillé sur les données  dans
  l'ordre  où  elles  étaient  entrées  (ce  qu'on  appellle
  l'ordre historique) . D'ailleurs au moment de leur  saisie
  nous n'avons pas fait attention au fait qu'elle soient  ou
  non classées  en fonction  de l'ordre  alphabétique sur le
  nom des élèves  ou leur prénom,  ou encore en  fonction de
  leur notes ou même de leur moyenne ...

  Cependant  ce  type  d'informations,  ces données sont par
  essence  celles  qu'on  cherche  à  classer  ou à trier en
  fonction de tel ou tel critère . Dbase permet de faire  ce
  genre de travail sur les données  selon 2 modes :  le  tri
  et  l'indexation.    Le(s)  critère(s)  de  classement est
  (sont) toujours celui (ceux)  que l'on fait porter  sur un
  ou plusieurs champs de la base de données.  En fonction de
  la  "nature"  ,  du  type  du  champ  un certain nombre de
  critères seront ou non acceptables.

TRI PHYSIQUE

  Cette méthode  va nous  permettre de  recopier la  base de
  données originale  dans une  autre organisée,  classée sur
  le(s) critère(s) que nous aurons entré(s).  L'ordre est :

    . SORT ON  TO 

  A la  suite de  cette opération  on dispose  de 2 bases de
  données sur  le disque  :   une qui  contient les  données
  telles qu'elles  ont été  saisies et  l'autre qui contient
  les données classées  en fonction du  critère de tri.   En
  mémoire cependant on n'a que la base de données originale.
  Pour obtenir la base classée il faut la charger avec USE.


  Remarque :  Si on  ajoute une ou plusieurs fiches  dans la
  base de données triée, elles  seront ajoutées à la fin  de
  cette dernière et non intégrés en fonction du tri.


OPTIONS DE TRI PHYSIQUE

  Dbase  vous   propose  plusieures   options  de   tri  qui
  permettent  de  choisir  l'ordre  de  croissant  [/A],  ou
  décroissant [/B], de faire en sorte que la machine  ignore
  la distinction majuscule minuscule [/C]. Syntaxe :
    . SORT ON  [option] TO 
  Exemple  :
    . sort on age /D, nom /C to clastan

  Ici on  obtient la  base de  données classeée  par âge  en
  ordre  décroissant  (  critère  primaire  ),  et  en   cas
  d'égalité sur  l'âge en  fonction de  l'ordre alphabétique
  croissant.  Il  n'y a pas  de majuscules et  de minuscules
  donc  l'option  [/C]  qui  fait  que  la machine ignore la
  différence entre majuscules et minuscules est ici inutile.

  Remarque :  Pour Dbase il n'y a pas de lettres comme  nous
  avons l'habitude de l'entendre mais des codes ASCII.  Dans
  ce code les numéros des majuscules sont inférieurs à  ceux
  de minuscules.

TRI PAR INDEXATION

  L'indexation est l'autre  mode de tri  d'une base ;  il ne
  consiste pas en la création  d'une autre base copie de  la
  base originale mais en la création d'un fichier qui  donne
  les numéros d'ordre des enregistrements en fonction du  ou
  des critères choisis.  Ce fichier d'index est associé à la
  base de données. l'ordre est :

    . INDEX ON  TO 

  L'expression clef peut être un nom de champ ce qui est  le
  cas lorsqu'on fait l'indexation  sur un seul critère.   Si
  cette indexation doit être  multi-critères on ne peut  pas
  comme pour le  tri donner les  noms des champs  supportant
  les  critères  séparés  par  des  virgules.  Il faut alors
  transformer cette suite de noms en une expression de  même
  type, c'est à dire une expression de type Caractère ou  de
  type Numérique.   Nous ferons des  exemples en cours  pour
  illustrer les difficultés de cette transformation.

EXEMPLES D'INDEXATION

  Pour trier  la base  CLASSE par  ordre croissant  de notes
  d'Anglais :
    . index on note_angl to indangl
  On veut indexer sur le nom et sur l'âge :
    . index on str(age,2) + nom to indagn

  L'expression qui sert de  support à l'indexation n'est  en
  fait que la transforamtion de de champs de type différents
  en une seule expression concaténée  par la + qui elle  est
  de type carractère.

  Les notes sont classées en ordre croissant c'est seulement
  lorsqu'il y a égalité d'âge que le nom de l'élève est pris
  en compte.

MISES A JOUR D'UNE BASE

  Nous avons créé dans la base de données CLASSE deux champs
  qui sont  jusqu'à présent  vides :   les  champs TOTAL  et
  MOYENNE.  Comment faire pour les mettre à jour.  Dbase  va
  vous permettre faire ces mises à jours avec la commande :

    . REPLACE  WITH  FOR 

  Exemple :  pour  mettre à jour le  champ TOTAL de la  base
  CLASSE.  :   on effectue  l'addition des champs  contenant
  les notes de français,  les notes d'anglais, les  notes de
  maths, pour  chaque élève  de la  classe.   Sauf pour  les
  élèves  qui  ont  une  de  leurs  notes  inférieures  à 0.
  Commande :

    . REPLACE total WITH (note_fran+note_angl+note_math)
      for note_fran>=0 .and. note_angl>=0 .and. note_math>=0

COMMANDES DE CONFIGURATION

  Redirection  des  sauvegardes  :    en  chargeant Dbase le
  logiciel  prévoit  de  faire  les  sauvegardes,les actions
  d'écriture sur fichiers sur  l'unité à partir de  laquelle
  il a été lancé, quelque soit l'unité ou la sous  directory
  qui contient  les fichiers  du programme  Dbase.   On peut
  bien  sûr  spécifier  au  moment  de la création de chaque
  fichier l'unité de sauvegarde.  Mais alors il sera par  la
  suite  toujours  nécessaire   de  l'indiquer  lors   d'une
  sauvegarde ou d'un chargement  ... sans oublier le  chemin
  d'accès au fichier si  nécessaire.  Toutes ces  manoeuvres
  sont longues et  dangeureuses parce qu'elles  sont sources
  d'erreurs de frappe.

  Dbase  prévoit  une  commande  qui  permet  de diriger les
  sauvegardes   vers   une   unitée   désigné   et/ou    une
  sous-directory spécifique :
    . SET DEFAULT TO 

  Vous pouvez faire ne  sorte que la machine  soit bruyante,
  c'est à  dire qu'elle  emette un  BIP à  la fin  de chaque
  saisie ou non  avec l'option :   (par défaut  l'option est
  ON)

    . SET BELL  on/off

  Aussi vous pouvez la  rendre bavarde c'est à  dire qu'elle
  peut se  mettre à  vous donner  plus ou  moins de  détails
  quand  elle  execute  des  opérations.   Dbase met à votre
  disposition 2 commandes : (par défaut OFF)

    . SET ECHO on/off

  Lors qu'il est en ON  affiche la commande qui est  executé
  avant de donner le résultat : (par défaut ON)

    . SET TALK on/off




  Nous  ne  verrons  pas  en  détail toutes les commandes de
  configuration  modifiables  par  SET  vous  pouvez  savoir
  comment est  configuré Dbase  au moment  du chargement  de
  Dbaseen tapant la commande :

            . SET
  Les options sont listées ci-dessous :

   Alternate   OFF                 Dohistory   OFF
   Bell        ON                  Escape      ON
   Carry       OFF                 Exact       OFF
   Catalog                         Fields      OFF
   Century     OFF                 Fixed       OFF
   Confirm     OFF                 Heading     ON
   Deleted     OFF                 Help        ON
   Delimiters  OFF                 History     ON
   Device      SCREEN              Intensity   ON



   De même la commande :

    . DISPLAY STATUS

  donne la configuration de tout le logiciel ainsi que  tous
  les paramètres.  A vous de  les tester au fur et à  mesure
  de vos besoins.


  Elle affcihe notamment :

  Chemin d'accès:
  Unité de disque par défaut: C:
  Destination de l'impression:  PRN:
  Marge =     0
  Zone de travail sélectionnée =    1


  ALTERNATE  - OFF   DELETED    - OFF   FIXED      - OFF  SAFETY     - ON
  BELL       - ON    DELIMITERS - OFF   HEADING    - ON   SCOREBOARD - ON
  CARRY      - OFF   DEVICE     - SCRN  HELP       - ON   STATUS     - OFF
  CATALOG    - OFF   DOHISTORY  - OFF   HISTORY    - ON   STEP       - OFF
  CENTURY    - OFF   ECHO       - OFF   INTENSITY  - ON   TALK       - ON
  CONFIRM    - OFF   ESCAPE     - ON    MENU       - ON   TITLE      - ON
  CONSOLE    - ON    EXACT      - OFF   PRINT      - OFF  UNIQUE     - OFF
  DEBUG      - OFF   FIELDS     - OFF

  Touches de fonction programmables:

  F1  - help                     F6  - display status;
  F2  - assist;                  F7  - display memory;
  F3  - list;                    F8  - display;
  F4  - dir;                     F9  - append;
  F5  - display structure;       F10 - edit;