Cours BASIC

BoTTom |    Changer de couleur
 
                      LE BASIC
 
 
La compilation et l'exécution des programmes BASIC diffèrent de celles des
programmes écrits dans d'autres langages car, en BASIC ces 2 étapes se déroulent
simultanément. C'est pourquoi BASIC, et les langages de même type, sont dits
INTERPRETATIFS. En d'autres termes, les instructions de programme sont
interprètées et traduites en instructions machine juste avant l'exécution.
Il n'y donc pas d'étape de compilation distincte : la TRADUCTION et l'exécution
ont lieu lorsque le programmeur ou l'opérateur demande l'exécution du programme.
 
Nous verrons plus tard qu'il est possible de compiler un programme BASIC
avant de l'exécuter.
 
 
 
 
 
 
 
 


|    Changer de couleur
 
1 OUVERTURE D'UNE SESSION BASIC.
--------------------------------
 
  Avant de pouvoir programmer en mode BASIC il faut ouvrir une session
BASIC.
  Pour cela entrer la commande STRBAS, un espace mémoire de 256 Ko est
crée.
 
  Pour sortir d'une session BASIC taper OFF ou faites F3.
 
 
 
2 LES VARIABLES.
----------------
 
  Il existe 2 types de variables, les variables numériques et les
variables caractères.
 
 
 
 


|    Changer de couleur
 
2.1 VARIABLES NUMERIQUES.
-------------------------
 
    Le nom de ces variables sont soumis à des règles:
      - Nom de 1 à 8 caractères.
      - 1er caractère une lettre, les autres des lettres ou des chiffres.
      - Pas de blanc.
 
    Ex: A ou SALNET
 
2.2 VARIABLES CARACTERES.
-------------------------
 
    Le nom de ces variables sont soumis à des règles:
      - Nom de 1 à 9 caractères.
      - 1er caractère une lettre, les autres des lettres ou des chiffres.
      - Pas de blanc.
      - Dernier caractère doit être un $.
 
 
 


|    Changer de couleur
 
3 LES CONSTANTES.
-----------------
 
  Il existe 2 types de constantes, les constantes numériques et les
constantes caractères.
 
 
3.1 CONSTANTES NUMERIQUES.
--------------------------
 
    Ex: 12    132,15
 
 
3.2 CONSTANTES CARACTERES.
--------------------------
 
    Elles sont entre parenthèses ou apostrophes, elles peuvent comprendre
  n'importe quelle chiffres, lettres ou caratères spéciaux.
 
     Ex:     "ENTRER HEURES DE TRAVAIL NORMALES"
         ou  'ENTRER HEURES DE TRAVAIL NORMALES'


|    Changer de couleur
 
4 NUMEROTATION DES INSTRUCTIONS.                                             2
--------------------------------
 
  Chaque instruction doit commencer par un numéro de lignes de 1 à 5
chiffres.
  Ce numéro a les fonctions suivantes:
 
     - Le stockage des instructions dans l'ordre des numéros.
     - L'exécution des instructions dans l'ordre des numéros.
     - Retrouver une instruction par son numéro.
     - Insérer une instruction.
     - Comme points de branchements.
 
  Les numéros peuvent être compris entre 00000 et 99999. Il est
préférable de numéroter de 10 en 10 ce qui facilitera l'insertion.
 
  Les numéros sont suivis d'au moins 1 espace.
 
 
 
 


|    Changer de couleur
 
5 OPERATEURS NUMERIQUES.
------------------------
 
  Pour les opérations arithmétiques on utilise les symboles:
    - ^ ou **   pour l'exponentiation.
    - *         pour la multiplication.
    - /         pour la division.
    - +         pour l'addition.
    - -         pour la soustraction.
 
  Les symboles + et - indiquent aussi le signe d'une donnée.
 
    Ex:   SALNORM = HEURNORM * TAUXNORM
          SALNET  = SALBRUT - TAXES
          BRUTINDI = 12 ** 2
 
  Les parenthèses jouent également un role spécifique dans les
opérations arithmétiques.
  Les expressions entre parenthèses sont effectuées avant les autres.
 
 


|    Changer de couleur
 
   Ex: SALMOYEN =  (SALNORM + AUTSOM) / (HEURNORM + AUTRHEUR)
                            1         3           2
 
  Il existe une hiérarchie entre les opérateurs, l'opération sera
exécutée dans l'ordre de cette hierarchie et de la gauche vers la
droite pour un même niveau.
 
      - 1   Expression entre parenthèse.
      - 2   ^ ou **
      - 3   / et *
      - 4   + et -
 
   Ex : ((QTEPROD - REBUT) * TAUPROD) + ((TEMPREP - 1) * TAUCOMP)
                  1        2          5           3    4
 
 
 
 
 
 
 


|    Changer de couleur
 
6 OPERATEURS LOGIQUES.
----------------------
 
   On utilise les symboles suivants pour les opérations logiques:
     -   =          égal à
     -   <>         différent de
     -   >= ou =>   supérieur ou égal à
     -   <= ou =<   inférieur ou égal à
     -   >          supérieur à
     -   <          inférieur à
 
   De plus nous pouvons utiliser les mots AND (et) et OR (ou)
pour combiner plusieurs conditions logiques.
 
    Ex: AUTSOM = 0 AND PRIME = 0
        AUTSOM = 0 OR BONUS = 0
 
 
 
 
 


|    Changer de couleur
 
7 INSTRUCTIONS BASIC.                                                       3
---------------------
 
   7.1 INSTRUCTIONS LES PLUS COURANTES.
   -----------------------------------
 
     Instructions d'Entree/Sortie.
      INPUT    PRINT
 
     Instructions de traitement.
      LET   END   REM   OPTION   DIM   PAUSE
 
     Instructions de décision.
      GOTO   FOR   NEXT  IF
 
         Un branchement à une instruction peut être fait aussi bien
      en utilisant un numéro de ligne que son label.
        Ex:  00100 GOTO TRAIT                  00100 GOTO 00180
             .                                 .
             .                    identique à  .
             00180 TRAIT: A = 11               00180 A = 11


|    Changer de couleur
 
     7.1.1 FONCTION DES INSTRUCTIONS.
     --------------------------------
       INPUT:  Introduction  des données à partir d'1 clavier.
 
       PRINT:  Visualisation des variables et des constantes sur 1 écran ou
               sur une imprimante.
 
       DIM:    Définition d'une variable caractère, par défaut (sans DIM)
               la variable a une longueur de 18 caratères.
 
       END:    Fin physique d'1 programme et arret de l'exécution.
 
       LET:    Affectation d'une valeur à une variable. Elle permet aussi
               l'exécution d'une opération arithmétique. Il n'est pas
               obligatoire.
                  Ex: A = 1    idem LET A = 1
 
       OPTION: Spécifie une série d'option devant être appliquée à
               l'ensemble du programme.
 
 


|    Changer de couleur
 
 
 
 
       PAUSE:  Arrete l'exécution du programme jusqu'à ce que la touche
               ENTREE soit actionnée.
 
       REM:    Utilisé pour inclure des commentaires. Instruction non
               exécutable.
 
       FOR
       NEXT:   Utilisés en association. Elles délimitent une boucle.
 
       GOTO:   Transfert inconditionnel à une instruction dont le numéro
               ou le label est spécifié.
 
       IF:     Décision logique. Elle se compose d'une expression logique et
               des instructions à exécuter suivant le résultat du test.
 
 
 
 


|    Changer de couleur
 
 
 
 
       Exemple programme simple.
       -------------------------
 
           1 L'opérateur doit frapper au clavier deux nombres correspondants
             respectivement à la production d'un employé, le matin et
             l'après-midi, pour un certain article.
 
           2 Les deux nombres doivent être additionnés pour donner la
             production totale quotidienne d'un employé.
 
           3 Le total des deux nombres doit être ensuite affiché sur l'écran
             du poste de travail.
 
 
 
 
 
 


|    Changer de couleur
                          ----------
ORGANIGRAME.             (  Début   )   REM
                          ----------
                              !
                          ------------
                         / lire      /  INPUT
                        /production /
                       -------------
                             !
                       --------------
                       !addition des!
                       !2 chiffres  !   LET
                       --------------
                             !
                          ------------
                         /affichage  /  PRINT
                        /prod. tot. /
                       -------------
                             !
                         ----------
                        (  fin     )   END
                         ----------


|    Changer de couleur
 
         LE PROGRAMME BASIC.
              00010 REM EXEMPLE DE PROGRAMME BASIC
              00020 INPUT "ENTRER PREMIER NOMBRE, PUIS SECOND" PRMAT,PRAM
              00030 LET TOTAL = PRMAT + PRAM
              00040 PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
              00050 END
 
 
         EXPLICATION DES INSTRUCTIONS
 
              - REM    : REM ou ! ou § peut-etre suivi d'1 nombre quelconque
                         de caractères.
                     00010 REM EXEMPLE DE PROGRAMME BASIC
               ou    00010 ! EXEMPLE DE PROGRAMME BASIC
               ou    00010 § EXEMPLE DE PROGRAMME BASIC
 
              - INPUT se compose des paramètres suivants.
 
                   INPUT  "guide opérateur":  variable,variable,.....
                          ------------------          ---------------
                     00020 INPUT "ENTRER PREMIER NOMBRE, PUIS SECOND" PRMAT,PRAM


|    Changer de couleur
 
                  La virgule sépare les variables si plusieurs variables doivent
                être entrées.
 
                  Chaque instruction INPUT doit contenir au moins une variable.
 
                  ATTENTION: les expressions soulignées sont facultatives.
 
              - LET   se compose des paramètres suivants.
 
                   LET variable = expression
                   ---
 
                     L'expression peut être : - une constante
                                              - une variable
                                              - une expression arithmétique
 
              - PRINT se compose des paramètres suivants.
 
                 PRINT  £n°fichier "constante", "constante",.....
                        £n0         variable  ;  variable  ;.....
                        ----------  ----------  -----------


|    Changer de couleur
                        Détail des paramètres.
 
                           - £n° fichier : il s'agit du caractère £ suivi d'1
                                           nombre entre 0 et 255 qui indique
                                           si les données doivent affichées ou
                                           non.
                                           £0 indique l'affichage sur l'écran,
                                           c'est l'option par défaut.
 
                           - constante ou variable:
                                           ces paramètres indiquent ce que nous
                                           voulons afficher.
 
                           - séparateur , ou ;:
                                           ils servent à séparer les paramètres
                                           sont obligatoires lorsque plusieurs
                                           constantes et variables sont
                                           spécifiés.
                                           Ils déterminent l'espacement entre
                                           les données.
 
 


|    Changer de couleur
                               Regardons l'espacement.
                                 Le ; indique que vous ne voulez aucun espace
                                 entre les données.
 
                                  PRINT "LA PRODUCTION TOTALE EST DE :"; TOTAL
                                    aurait donner comme affichage
                                  LA PRODUCTION TOTALE EST DE :XXXXX
 
                                 La , indique que le paramètre suivant sera
                                 affiché  au début de la zone d'immpression
                                 suivante.
                                 Il faut savoir que sur l'écran une ligne
                                 est divisée en 5 zones de 16 caractères
                                 (nous apprendrons ultérieurement comment
                                  modifier la longueur d'une zone d'impresion)
 
                                  PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
                                    aurait donner comme affichage
                                  LA PRODUCTION TOTALE EST DE :   XXXXX
                                  1             161             161
 
 


|    Changer de couleur
                               La ligne d'impression
 
12345678901234561234567890123456123456789012345612345678901234561234567890123456
               !               !               !               !
LA PRODUCTION TOTALE EST DE :   XXXXX          !               !
               !               !               !               !
               !               !               !               !
               !               !               !               !
               !               !               !               !
               !               !               !               !
               !               !               !               !
               !               !               !               !
               !               !               !               !
               !               !               !               !
 
              - END   fin du programme, si vous l'oubliez BASIC va l'inclure
                      avec le numéro d'instruction 99999.
 
 
 
 
 


|    Changer de couleur
 
    EXERCICE 1 : L'opérateur devra entrer deux nombres; le premier
    ----------   représentera la longueur d'un rectangle et le second,
                 la largeur (en centimetre)
                 Ces deux nombres devront être multipliés pour calculer
                 la surface du rectangle.
                 La surface (en centimetre carré) devra être affiché
                 à l'écran.
 
 
 
 
 
                                                                basic page 6
       CORRECTION :  00010 REM CE PROGRAMME CALCULE LA SURFACE D'UN RECTANGLE
       ----------    00020 INPUT "ENTRER LONGUEUR; PUIS LARGEUR EN CM": LO,LA
                     00030 LET SURFACE = LO * LA
                     00040 PRINT "LA SURFACE EST EGALE A :", SURFACE
                     00050 END
 
 
 


|    Changer de couleur
         LIMITE DU PROGRAMME.
                   Il ne fonctionne que pour une seule entrée de données, nous
                   allons voir comment remédier à ce problème.
 
              - GOTO  Elle permet d'effectuer un branchement d'un point du
                      programme à un autre.
 
                      GOTO  numéro ligne   !remarque
                            étiquette      ---------
 
                      Ajoutons l'instruction GOTO à notre exercice.
 
                     00010 REM CE PROGRAMME CALCULE LA SURFACE D'UN RECTANGLE
                     00020 INPUT "ENTRER LONGUEUR; PUIS LARGEUR EN CM": LO,LA
                     00030 LET SURFACE = LO * LA
                     00040 PRINT "LA SURFACE EST EGALE A :", SURFACE
         ------------00045 GOTO 20 !RETOUR A INSTRUCTION INPUT
                     00050 END
 
                  Remarques: - Insertion avec le n° 00045.
                             - ! obligatoire lorsqu'une remarque est comprise
                               dans une instruction.


|    Changer de couleur
 
                   Maintenant notre programme peut se dérouler plusieurs fois,
                   combien d'après vous, eh oui! il va se dérouler INFINIMENT.
                   Nous allons voir comment remédier à ce nouveau problème.
 
              - IF Utilisée pour les décisions.
 
                    IF condition THEN  n°ligne      ELSE n°ligne     !remarque
                                       instruction       instruction ---------
 
                      le n°ligne correspond a un GOTO n°ligne
 
                 Ex: IF QTE = 0 THEN 00050 ! BRANCHEMENT A END
 
                     IF SOLDE <= 0 THEN GOTO 00250 ELSE LET SOLDE = SOLDE - QS
 
                   IF peut définir plusieurs conditions.
 
                      IF condition  OR  condition THEN etc...
                                    AND
 
 


|    Changer de couleur
                     Supposons dans notre exercice. Si l'opérateur rentre 0
                     pour la longueur et 0 pour la largeur c'est la fin du
                     programme.
 
                     00010 REM CE PROGRAMME CALCULE LA SURFACE D'UN RECTANGLE
                     00020 INPUT "ENTRER LONGUEUR; PUIS LARGEUR EN CM": LO,LA
                     00025 IF LO = 0 AND LA = 0 THEN GOTO 50
                     00030 LET SURFACE = LO * LA
                     00040 PRINT "LA SURFACE EST EGALE A :", SURFACE
                     00045 GOTO 20 !RETOUR A INSTRUCTION INPUT
                     00050 END
 
 
              - FOR et NEXT elles permettent de réexécuter un groupe
                            d'instructions BASIC plusieurs fois.
                            Elles délimitent une boucle.
                            FOR marque le début et NEXT la fin.
 
                     FOR variable numérique = expression num. TO expr. num.
 
                     NEXT variable numérique   !remarque
                                               ---------


|    Changer de couleur
 
 
                       Ex:  FOR A = 1 TO 5
                            ......
                            ......  instructions BASIC
                            ......
                            NEXT A ! RETOUR DEBUT BOUCLE
 
                           A 1ère fois A prendra la valeur 1, puis 2 etc..
                           jusqu'à ce que A soit supérieur à 5.
 
                       Nous pouvons l'écrire avec une variable après TO
 
                       Ex:  FOR A = 1 TO NBRFOI
                            ......
                            ......  instructions BASIC
                            ......
                            NEXT A ! RETOUR DEBUT BOUCLE
 
                       Nous pouvons l'écrire avec une variable avant et après TO
 
 


|    Changer de couleur
 
 
                       Ex:  FOR A = DEB TO NBRFOI
                            ......
                            ......  instructions BASIC
                            ......
                            NEXT A ! RETOUR DEBUT BOUCLE
 
                     L'incrément de A par défaut est 1, si vous voulez que A
                     s'incrémente de plus d'1 utiliser le mot STEP dans
                     l'instruction FOR.
 
                       Ex:  FOR A = DEB TO NBRFOI STEP 5
 
 
              - OPTION  elle permet de sélectionner un certain nombre d'options
                        qui influeront sur l'exécution du programme. Pour cela
                        elle doit être placée en début du programme.
                        Elle est composée de plusieurs paramètres.
 
                  BASE 0 ou BASE 1 : point de départ pour les informations
                                     contenues dans un tableau.


|    Changer de couleur
                                     Si BASE 0 (valeur par défaut) le 1er poste
                                     du tableau aura le numéro 0.
                                       0 AMSTERDAM
                                       1 CHICAGO
                                       2 DENVER
                                       3 COPENHAGUE
                                       4 NANTES
                                     Si BASE 1 le 1er poste du tableau aura le
                                     le numéro 1.
                                       1 AMSTERDAM
                                       2 CHICAGO
                                       3 DENVER
                                       4 COPENHAGUE
                                       5 NANTES
 
                  Nous verrons plus tard comment définir un tableau.
 
                  SPREC ou LPREC
                     SPREC spécifie l'utilisation de la simple précision.
                     LPREC spécifie l'utilisation de la double précision.
 
 


|    Changer de couleur
                      La simple précision permet 6 chiffres significatifs.
                          100 000,00
 
                      La double précision permet 14 chiffres significatifs.
                          10 000 000 000 000,00
 
                      Si une valeur en simple précision dépasse 6 chiffres, elle
                      est affichée en virgule flottante.
                        1 000 000 sera affiché 1E+6
 
                  PRTZO détermine la longueur de la zone d'impression.
 
                        Pour la simple précision par défaut la longueur est de
                        16 caractères PRTZO 16
 
                        Pour la double précision par défaut la longueur est de
                        26 caractères PRTZO 26
                        Dans les 2 cas la longueur de la zone d'impression
                        peut être modifié en entrant PRTZO suivi d'un nombre
                        correspondant au nombre de caractères dans la zone
                        d'impression.
                              Ex: PRTZO 19


|    Changer de couleur
 
                  RD   spécifie le nombre de décimales après la virgule par
                       défaut 0 (ce qui signifie aucun arrondi tous les chiffres
                       après la virgule seront affichés).
                         Ex: RD 2
 
                  INVP spécifie que la virgule décimale appraitra en place du
                       point décimal.
 
                  COLLATE spécifie la séquence de classement à utiliser dans
                          les comparaisons.
 
                          NATIVE classé suivant EBCDIC (valeur par défaut)
                            ou
                          STANDARD classé suivant ASCII
 
                 Exemple d'utilisation de OPTION:
                   OPTION LPREC, PRTZO 20, RD 3,COLLATE STANDARD
                    Qu'avons-nous définis ?
 
 
 


|    Changer de couleur
              - DIM spécifie la longueur maximale des variables caractères.
 
                     DIM variable-caractère*longueur
 
                       Ex: DIM NOMEMP$*25
                           DIM ADRES$*30
                              ou
 
                           DIM NOMEMP$*25, ADRES$*30
 
 
              - PAUSE arrete l'exécution du programme jusqu'à ce que l'opérateur
                      appuie sur la touche ENTREE.
 
                    PAUSE expression-caractére !remarque
                          -------------------- ---------
 
                    L'expression caractère sera affichée à l'écran.
 
                     Ex: PAUSE "PLACER CHEQUES DANS L'IMPRIMANTE" !VERIF. CHEQ.
 
 


|    Changer de couleur
 
 
 
 
     Vous avez appris les instructions BASIC les plus courantes.
 
     Si vous voulez exécuter un programme BASIC passez en mode BASIC
     en entrant la commande BGNBAS, puis saisissez une à une les
     instructions BASIC (vous pouvez saisir plusieurs instructions
     sur une même ligne à condition de séparer chaque instruction
     par :  ex: 00050 A = B + C : D = A * E ).
 
     Pour exécuter le programme entrer la commande RUN.
 
 
     ATTENTION: Si vous sortez du mode BASIC l'espace mémoire est
                supprimé, vous perdez tout ce que vous avez fait.
                Nous allons apprendre maintenant comment sauvegarder
                source BASIC, le modifier, le charger dans l'espace
                mémoire BASIC.
 
 


|    Changer de couleur
 
8 QUELQUES COMMANDES BASIC.
---------------------------
 
  Si vous voulez écrire sur disque un programme qui se trouve en
  zone de travail utiliser soit la commande SAVE si c'est un
  nouveau programme soit REPLACE si le programme est déjà existant.
 
      - SAVE nom du membre  fichier source.biblio
                            ---------------------
 
          Ex: Reprenons notre exercice de calcul d'une surface.
 
               SAVE CALSUR
 
               J'appelle CALSUR mon programme, je n'ai pas indiqué
               de fichier source ni de bibliothèque, il se placera
               par défaut dans le fichier source QBASSRC avec pour
               bibliothèque *LIBL.
 
      - REPLACE nom du membre  fichier source.biblio
                               ---------------------


|    Changer de couleur
 
           Ex: REPLACE CALSUR
 
               Je remplace CALSUR, je n'ai pas indiqué
               de fichier source ni de bibliothèque, il se placera
               par défaut dans le fichier source QBASSRC avec pour
               bibliothèque *LIBL.
 
 
  Maintenant je veux placer dans mon espace de travail un programme
  BASIC existant sur disque pour le modifier ou l'exécuter, pour
  cela j'utiliserais la commande LOAD.
 
      - LOAD nom du membre  fichier source.biblio
 
           Ex: LOAD CALSUR
 
               Je charge CALSUR, je n'ai pas indiqué
               de fichier source ni de bibliothèque, il se chargera
               par défaut à partir du fichier source QBASSRC avec pour
               bibliothèque *LIBL.
 


|    Changer de couleur
     Comment utiliser ces nouvelles commandes?
 
        Vous saisissez votre programme.
 
           00010 REM CE PROGRAMME CALCULE LA SURFACE D'UN RECTANGLE
           00020 INPUT "ENTRER LONGUEUR; PUIS LARGEUR EN CM": LO,LA
           00025 IF LO = 0 AND LA = 0 THEN GOTO 50
           00030 LET SURFACE = LO * LA
           00040 PRINT "LA SURFACE EST EGALE A :", SURFACE
           00045 GOTO 20 !RETOUR A INSTRUCTION INPUT
           00050 END
 
        Si vous voulez l'exécuter taper.
 
           RUN
 
        Si vous voulez créer un source sur disque taper.
 
           REPLACE CALSUR
 
        Vous sortez de la session BASIC en faisant F3  ou en tapant
           OFF (votre zone de travail est supprimée)


|    Changer de couleur
 
        Vous revenez en mode basic en tapant STRBAS (une zone de
        travail de 256 Ko est crée), vous voulez à nouveau exécuter
        le programme CALSUR.
 
        Vous chargez le programme CALSUR dans la zone de travail.
 
           LOAD CALSUR
 
        Si vous l'exécutez.
 
           RUN
 
 
Vous trouvez peut-etre la saisie de programme fastidieuse. Vous ne savez
comment lister votre programme, en plus il faut saisir les numéros
d'instructions. Voici quelques commandes qui vont vous faciliter la
saisie de programmes.
 
 
 
 


|    Changer de couleur
 
      - AUTO Déclenche automatiquement la numérotation des instructions
 
           AUTO ligne-début,ligne-fin
                ----------- ---------
             Entrer cette commande avant de commencer la saisie des
             instructions.
 
            Ex: AUTO 00010,10 (sur la ligne suivante vous aurez)
 
                00010 (vous taperez derrière votre instruction)
 
      - LIST Affiche sur l'écran les lignes du programme en cours,
             vous pouvez utiliser les touches ROLLUP et ROLLDOWN
             pour faire défiler les lignes à l'écran.
 
          LIST ligne-début,ligne-fin
               ---------------------
          Ex: LIST 00020,00050
 
              Affiche le programme dans la zone de travail de
              l'instruction 00020 à 00050.


|    Changer de couleur
 
              LIST seul affiche le programme en entier.
 
 
      - LISTP imprime les lignes du programme en cours dans le fichier
              d'impression QSYSPRT.
 
              Meme format que l'instruction LIST.
 
 
  RAPPELEZ-VOUS QU'A TOUT MOMENT VOUS POUVEZ UTILISER LE GUIDE "BASIC"
  EN APPUYANT SUR LA TOUCHE "AIDE".
 
 
  Vous savez maintenant ecrire un programme BASIC, le sauvegarder,
  le charger, l'exécuter, mais si votre programme contient des erreurs
  saurez-vous les corriger? A priori NON, la suite de ce cours va vous
  apprendre à modifier un programme.
 
 
 
 


|    Changer de couleur
 
 
 Votre programme nécessite l'ajout d'une nouvelle instruction entre
 des instructions déjà existantes.
 
  Après avoir charger votre programme dans l'espace de travail donner
  un numéro d'instruction compris entre les numeros des instructions
  où vous voulez insérer.
 
       Ex:
           00010 REM CE PROGRAMME CALCULE LA SURFACE D'UN RECTANGLE
           00020 INPUT "ENTRER LONGUEUR; PUIS LARGEUR EN CM": LO,LA
           00030 LET SURFACE = LO * LA
           00040 PRINT "LA SURFACE EST EGALE A :", SURFACE
           00050 END
 
           Cette exemple ne vous rappelle rien.
 
           Je veux insérer le test entre l'instruction 00020 et 00030
           je rentre:
           00025 IF LO = 0 AND LA = 0 THEN GOTO 50
 


|    Changer de couleur
           Je veux insérer le branchement entre l'instruction 00040 et
           et 00050 je rentre:
           00045 GOTO 20 !RETOUR A INSTRUCTION INPUT
 
           Si je veux m'assurer de la bonne séquence des instructions
           j'utilise la commande LIST.
 
           LIST (le programme apparait comme suit)
 
           00010 REM CE PROGRAMME CALCULE LA SURFACE D'UN RECTANGLE
           00020 INPUT "ENTRER LONGUEUR; PUIS LARGEUR EN CM": LO,LA
           00025 IF LO = 0 AND LA = 0 THEN GOTO 50
           00030 LET SURFACE = LO * LA
           00040 PRINT "LA SURFACE EST EGALE A :", SURFACE
           00045 GOTO 20 !RETOUR A INSTRUCTION INPUT
           00050 END
 
 
 Votre programme nécessite l'ajout d'une ou plusieurs instructions à
 la fin du programme.
 
 


|    Changer de couleur
 
  Après avoir charger votre programme dans l'espace de travail utiliser
  la commande AUTO pour indiquer le numéro de ligne où commence votre
  ajout. Puis entrer les lignes à ajouter.
 
      Ex: reprenons notre premier exemple.
 
        00010 REM EXEMPLE DE PROGRAMME BASIC
        00020 INPUT "ENTRER PREMIER NOMBRE, PUIS SECOND" PRMAT,PRAM
        00030 LET TOTAL = PRMAT + PRAM
        00040 PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
        00050 END
 
        Supposons que je veuille boucler tant que TOTAL est <> 0
        et que je veuille cumuler tous les TOTAL.
 
        Il faudrait que j'ajoute les instructions
 
           FINAL = FINAL + TOTAL
           IF TOTAL <> 0 GOTO 20
           PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
 


|    Changer de couleur
 
         Pour cela j'entrerais:
           AUTO 50,10
         il m'affichera 00050 et je saisirais ma 1ère instruction
         puis ma seconde avec 00060 etc...
 
         00050 FINAL = FINAL + TOTAL
         00060 IF TOTAL <> 0 GOTO 20
         00070 PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
 
 
       Attention le numéro 00050 existait déjà pour l'instruction END
       mais la nouvelle remplace l'ancienne même si pour les deux
       00050 est affiché. Pour vérifier j'entre LIST:
        00010 REM EXEMPLE DE PROGRAMME BASIC
        00020 INPUT "ENTRER PREMIER NOMBRE, PUIS SECOND" PRMAT,PRAM
        00030 LET TOTAL = PRMAT + PRAM
        00040 PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
        00050 FINAL = FINAL + TOTAL
        00060 IF TOTAL <> 0 THEN GOTO 20
        00070 PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
        00080 END


|    Changer de couleur
 
 
 Votre programme nécessite la suppression d'une ou plusieurs instructions.
 
  Pour cela vous utiliserez la commande:
 
     - DEL n°1ère-instr , n°2ème-instr
                        --------------
 
         Ex: DEL 20
 
             Cette commande supprimera dans le programme en zone
             de travail l'instruction 00020.
 
 
             DEL 20,50
 
             Cette commande supprimera dans le programme en zone
             de travail les instructions 00020 à 00050.
 
 
 


|    Changer de couleur
 
 
 Votre programme nécessite la modification d'une instruction.
 
   Pour cela vous listerez l'instruction:
 
           LIST N°instruction à modifier
 
   puis vous rentrerez la nouvelle instruction.
 
        Ex: reprenons notre 1er exemple.
 
 
        00010 REM EXEMPLE DE PROGRAMME BASIC
        00020 INPUT "ENTRER PREMIER NOMBRE, PUIS SECOND" PRMAT,PRAM
        00030 LET TOTAL = PRMAT + PRAM
        00040 PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
        00050 FINAL = FINAL + TOTAL
        00060 IF TOTAL <> 0 THEN GOTO 30
        00070 PRINT "LA PRODUCTION TOTALE EST DE :", TOTAL
        00080 END
 


|    Changer de couleur
        A l'instruction 00060 j'effectue un GOTO 30 ce qui provoque
        a l'exécution de mon programme une boucle sans entrée de
        données, je veux corriger cette instruction en :
                IF TOTAL <> 0 THEN GOTO 20
 
        Pour cela je liste l'instruction en erreur.
 
               LIST 60
 
        Puis je tape la nouvelle instruction.
 
         00060 IF TOTAL <> 0 THEN GOTO 20
 
 
   Maintenant vous savez corriger un programme, mais la numérotation
   des instructions n'est peut-etre plus aussi bonne. Il est nécessaire
   peut-etre de renuméroter les instructions. pour cela vous utiliserez
   la commande  RENUM.
 
 
 
 


|    Changer de couleur
 
   RENUM ligne-début , incrément , instruction-de-début , instr. de fin
(par défaut) 10            10         début de programme    fin de pgm
         -----------   ---------   --------------------   -------------
                                                                basic page 13
      Si vous voulez renuméroter un programme en entier tapez:
            RENUM
 
         Vous pouvez aussi le renuméroter à partir d'un numéro
         d'instruction.
 
 
 
 
 
 
 
 
 
 
 
 


|    Changer de couleur
 
8 UTILISATION DES FICHIERS SUR DISQUE                                       4
-------------------------------------
 
   Il est souvent nécessaire de conserver les données sous forme
de fichier placer sur disques magnétiques. La suite de ce cours va
vous indiquer comment procéder pour les utiliser.
 
8.1 UTILISATION EN LECTURE.
---------------------------
 
   Pour que des données soient lues à partir d'un fichier sur disque
   le programme doit:
 
      - Nommer le fichier à utiliser.
      - Désigner le type de fichier (organisation) dont il s'agit.
      - Indiquer la méthode d'accès à utiliser.
      - Lire les données selon le format prédéterminé.
      - Indiquer la fin d'utilisation du fichier.
 
 
 


|    Changer de couleur
 
   Les instructions BASIC pour cette lecture sont:
 
        OPEN  READ   FORM   CLOSE
 
8.1.1 OPEN
----------
 
      L'instruction OPEN va nous indiquer le fichier à utiliser
      son mode d'organisation, son mode d'accès et son utilisation.
 
      OPEN £nombre:"NAME=nom-du-fichier",INPUT
 
        -£nombre : nombre entre 0 et 255 cette constante va être
                   utilisée en lieu et place du nom de fichier.
 
          Ex: OPEN £1:"NAME=CLIENT",INPUT
 
              J'utilise le fichier CLIENT, je l'appelle dans mon
              programme £1, son organisation et son accès est
              séquentiel, il sera utilisé en ENTREE.
 


|    Changer de couleur
 
8.1.2 READ
----------
 
     L'instruction READ va nous permettre d'accéder à un enregistrement
     et de placer le contenu dans les zones du programmes.
 
 
     READ £0à255,USING numéro d'instruction:nom de zone, nom de zone...
           EOF numéro d'instruction
 
       - £n indique le fichier à lire.
 
       - USING  nous indique la ligne d'instruction qui contient le
                dessin d'enregistrement.
 
       - nom de zone   les zones utilisées du fichier seront indiquées.
 
       - EOF   permet de se débrancher lorsque le programme détectera la
               fin de fichier.
 
            Ex: READ £1,USING 80:NOCLI,NOMCLI,ADRCLI EOF 120


|    Changer de couleur
 
8.1.3 FORM
----------
       L'instruction FORM est associée au READ(USING), elle permet
       de donner la définition les zones du fichier.
 
       FORM C nombres de position.
            Indique une zone de type alphanumérique.
 
          Ex: FORM C 20 zone alphanumérique de 20 positions.
 
       FORM ZD positions,décimales
             Zone type numérique étendue
 
          Ex: FORM ZD 6,2  zone numérique étendue de 6 positions dont
              2 décimales.
 
       FORM PD positions,décimales
             Zone type numérique packée
 
          Ex: FORM PD 3,2  zone packée étendue de 3 positions donc
              de 5 chiffres dont 2 décimales.


|    Changer de couleur
 
       FORM B position(2 ou 4)
             Zone type numérique binaire
 
 
8.1.4 CLOSE
-----------
 
     Cette instruction permet de fermer les fichiers.
 
       CLOSE £nombre(0 à 255)
 
        Ex: CLOSE £1
 
 
 
 
 
 
 
 
 


|    Changer de couleur
 
      Exemple de programme utilisant ces instructions.
 
          Je veux lire un fichier ARTICL et afficher son contenu
          à l'écran.
 
          Le fichier ARTICL a la descritption suivante
 
              type article   3 num. packée
              numéro article 6 num. packée.
              Libellé        25 alphanum.
              stock mini     6 num. packée
              stock          6 num. packée
              prix unitaire  9,2 num packée
 
 
 
 
 
 
 
 


|    Changer de couleur
 
           Le programme donnera:
 
     00010 REM EXEMPLE UTILISATION INTERNE FICHIER ARTICL
     00015 DIM LIB$*25
     00020 OPEN £1:"NAME=ARTICL", INPUT
     00040 READ £1,USING 50:TYPART,NOART,LIB$,STM,ST,PU EOF 80
     00050 FORM PD 2,PD 4,C 25,PD 4,PD 4,PD 5.2
     00060 PRINT "L'ARTICLE EST:"; NOART;' ';LIB$;' ';STM;' ';ST;' ';PU
     00070 GOTO 40
     00080 END
 
     00015 DIM LIB$*25 ? Une zone alphanumérique par défaut est de
                         longueur égal à 18 caractères.
 
 
 
 
 
 
 
 


|    Changer de couleur
 
8.2 UTILISATION EN ECRITURE SUR IMPRIMANTE.
-------------------------------------------
 
   Pour que des données soient ecrites sur un fichier d'impression
   le programme doit:
      - Nommer le fichier à utiliser.
      - Ecrire les données selon le format prédéterminé.
      - Indiquer la fin d'utilisation du fichier.
 
   Les instructions BASIC pour cette lecture sont:
        OPEN  PRINT  FORM   CLOSE
                                                                            6
8.2.1 OPEN
----------
    Cette fois-ci nous écrirons
 
      OPEN £nombre:"NAME=nom-du-fichier",OUTPUT,DISPLAY
 
       £nombre: identique à un fichier en lecture
                Excepté si on veut utiliser le fichier d'impression
                standard QPRINT,il suffira d'indiquer


|    Changer de couleur
 
          OPEN £21:"PRINTER",OUTPUT,DISPLAY
 
      OUTPUT,DISPLAY: OUTPUT indique un fichier en sortie.
 
                      DISPLAY un fichier imprimante.
 
 
8.2.2 PRINT
-----------
 
      Nous avons déjà vu PRINT précédemment, nous allons l'apprendre
      dans le cas d'une écriture sur fichier d'impression.
 
      PRINT £nombre,USING num. istr.:variable ou constante,vari. ou cons.,...
 
       Le format est similaire à l'instruction READ, supposons que
       nous voulions écrire sur QPRINT, une ligne avec la zone
       DATE et le titre "EXEMPLE DE LIGNE"
 
       J'écrirais PRINT £21,USING 60: DATE,"EXEMPLE DE LIGNE"
 


|    Changer de couleur
 
8.2.3 FORM
----------
 
     FORM identique à la lecture, il sera associé au PRINT par la
     clause USING. Nous allons voir d'autres utilisations du FORM.
 
      Reprenons notre exemple du PRINT:
 
           00050 PRINT £21,USING 60: DATE,"EXEMPLE DE LIGNE"
 
      Je définirais un FORM qui définiras la zone DATE en sortie
      et la constante "EXEMPLE DE LIGNE".
 
           00060 FORM ZD 6,C 16
 
               ZD 6 Zone numérique étendue de 6 positions.
               C 16 Zone alphanumérique de 16 positions.
 
      Nous aurions pu l'écrire aussi.
 
           00060 FORM N 6,C 16


|    Changer de couleur
 
           N 6 zone numérique étendue de 6 positions avec remplacement
               des zéros non significatifs par des blancs.
               Si la zone comportait des chiffres après la virgule
               décimale .N 6,2
 
          Nous aimons bien écrire les dates sous la forme
          XX/XX/XX
 
          Pour faire cela nous utilisons la clause PIC de l'instruction
          FORM. Pour notre exemple :
 
           00060 FORM PIC(££/££/££),C 16
 
             PIC indique un masque d'édition.
 
                   £ le caractère situé à la position du £ sera edité.
                   Dans notre exemple il y a 6 £ tous les chiffres
                   seront édités.
                   / sera inséré à l'endroit indiqué s'il y a
                     un caratère devant.
                                                                            17


|    Changer de couleur
                Supposons DATE = 130186 elle sera éditée sous la forme
 
                  13/01/86
 
                Supposons DATE = 010186 elle sera éditée sous la forme
 
                  01/01/86
 
                On peut insérer les caractères /  , . et le blanc
 
                Supposons PIC(££ ££ ££)  on aura
 
                  01 01 86
 
      En résumé nous aurons les 2 instructions suivantes:
 
           00050 PRINT £21,USING 60: DATE,"EXEMPLE DE LIGNE"
           00060 FORM PIC(££/££/££),C 16
 
 
 
 


|    Changer de couleur
 
      Nous aurions pu mettre la constante dans l'instruction FORM
 
           00050 PRINT £21,USING 60: DATE
           00060 FORM PIC(££/££/££),"EXEMPLE DE LIGNE"
 
     Un problème apparait lors de l'édition, il n'y a pas d'espaces
     entre la zone DATE et la constante.
 
13/01/86EXEMPLE DE LIGNE
 
     Pour insérer des espaces nous pourrions utiliser la clause
     X de l'instruction FORM.
 
       X nombre : indique un nombre de position à sauter dans la ligne
 
          X 19 indique un espace de 19 caractères.
 
        Reprenons notre exemple:
 
           00050 PRINT £21,USING 60: DATE,"EXEMPLE DE LIGNE"
           00060 FORM PIC(££/££/££),X 19,C 16


|    Changer de couleur
 
        Nous aurions:
 
         1         2         3         4         5         6         7
1234567890123456789012345678901234567890123456789012345678901234567890
13/01/86                   EXEMPLE DE LIGNE
 
         Nous pouvons l'écrire aussi en utilisant la clause POS
         de l'instruction FORM
 
           POS position   indique l'emplacement de la zone suivante
                          à éditer ce qui suppose la connaissance
                          de la position du début de zone.
 
         Dans notre exemple la constante doit s'éditer à partir
         de 28. Nous aurions donc:
 
           00050 PRINT £21,USING 60: DATE,"EXEMPLE DE LIGNE"
           00060 FORM PIC(££/££/££),POS 28,C 16
 
 
 


|    Changer de couleur
 
 
 
         1         2         3         4         5         6         7
1234567890123456789012345678901234567890123456789012345678901234567890
13/01/86                   EXEMPLE DE LIGNE
 
      Maintenant si je veux décaler la zone DATE de 3 positions vers
      la droite je pourrais l'ecrire de 2 façons:
 
           00050 PRINT £21,USING 60: DATE,"EXEMPLE DE LIGNE"
           00060 FORM X 3,PIC(££/££/££),POS 28,C 16
 
        ou
 
           00050 PRINT £21,USING 60: DATE,"EXEMPLE DE LIGNE"
           00060 FORM POS 4,PIC(££/££/££),POS 28,C 16
                                                                            8
 
 
 
 


|    Changer de couleur
 
 
 
         1         2         3         4         5         6         7
1234567890123456789012345678901234567890123456789012345678901234567890
   13/01/86                EXEMPLE DE LIGNE
 
       Maintenant je veux que cette ligne soit toujours editée à la
       3ème ligne de mon état.
        J'utiliserais pour cela la clause CUR de l'instruction FORM
 
         CUR(ligne,colonne) Indique la ligne et la colonne d'édition
                            de la ligne.
 
         J'écrirais donc CUR(3,4)
 
         Avec mon exemple cela donnera:
 
           00050 PRINT £21,USING 60: DATE,"EXEMPLE DE LIGNE"
           00060 FORM CUR(3,4),PIC(££/££/££),POS 28,C 16
 
 


|    Changer de couleur
 
 
 
         1         2         3         4         5         6         7
1234567890123456789012345678901234567890123456789012345678901234567890
 
 
   13/01/86                EXEMPLE DE LIGNE
 
 
8.2.4 CLOSE
-----------
 
      CLOSE identique à un fichier en lecture.
 
        CLOSE £21
 
 
 
 
 
 


|    Changer de couleur
 
Exemple d'utilisation:
 Supposons un fichier ARTICLE à éditer sous la forme
 
         1         2         3         4         5         6         7
12345678901234567890123456789012345678901234567890123456789012345678901
                  LISTE ARTICLE
 
  NUMERO       LIBELLE                QUANTITE     PRIX UNITAIRE
  XXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX       X.XXX.XXX,XX
  XXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX       X.XXX.XXX,XX
  XXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX       X.XXX.XXX,XX
  XXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXX   XXXXXXX       X.XXX.XXX,XX
   6N            25 alphanum            7N           9N,2
 
  La description du fichier ARTICLE est la suivante.
    type article 3 N packé
    num. article 6 N packé
    libellé      25 alphanum.
    stock mini   7 N packé
    quantité     7 N packé
    prix unit.   9 N packé dont 2.


|    Changer de couleur
 
  Le programme qui effectuera l'édition est le suivant:
 
00010 REM EXEMPLE UTILISATION INTERNE FICHIER ARTICL
00020 DIM LIB$*25
00030 OPEN £1:"NAME=ARTICL,RECL=45", INPUT
00040 OPEN £21:"PRINTER",OUTPUT,DISPLAY
00050 PRINT £21:NEWPAGE
00060 PRINT £21,USING FORENT:
00070 FORENT: FORM CUR(3,19),"LISTE ARTICLE",SKIP 2
00080 PRINT £21,USING FOREN2:
00090 FOREN2: FORM POS 3,"NUMERO",POS 16,"LIBELLE",POS 39,"QUANTITE",P&
&OS 51,"PRIX UNITAIRE"
00100 READ £1,USING 110:TYPART,NOART,LIB$,STM,ST,PU EOF 150
00110 FORM PD 2,PD 4,C 25,PD 4,PD 4,PD 5.2
00120 PRINT £21,USING DETAIL: NOART,LIB$,ST,PU
00130 DETAIL:FORM POS 3,N 6,X 2,C 25,X 3,N 7,X 8,PIC(ZZZZZZ£,££)
00140 GOTO 100
00150 END
 
 
 


|    Changer de couleur
 
 Quelques informations sur les instructions que vous ne connaissez
  pas encore.
 
00050 PRINT £21:NEWPAGE
                -------
 
     NEWPAGE permet d'effectuer un saut de page ,à utiliser aussi
             quand l'édition de la première ligne s'effectue par
             FORM CUR   , pour cette instruction il faut être
             positionné dans l'édition.
 
 
00070 FORENT: FORM CUR(3,19),"LISTE ARTICLE",SKIP 2
                                             ------
 
     SKIP 2  SKIP permet de faire un saut de ligne, ici 2 la prochaine
             ligne sera éditée 2 lignes plus bas. Par défaut SKIP 1:
 
 
 
 


|    Changer de couleur
 
00090 FOREN2: FORM POS 3,"NUMERO",POS 16,"LIBELLE",POS 39,"QUANTITE",P&
                                                                      -
 
        & indique la continuation d'une instruction sur la ligne
          suivante. Vous pouvez écrire une instruction sur 2, 3
          voire plus lignes.
 
 
00130 DETAIL:FORM POS 3,N 6,X 2,C 25,X 3,N 7,X 8,PIC(ZZZZZZ£,££)
                                                 ---------------
 
     PIC(ZZZZZZ£,££) nouvel forme de la clause PIC
 
         Z   permet de remplacer les zéros non significatifs
             par des blancs.
 
         ,   permet d'inclure une , à l'endroit indiqué.
 
 
 
 


|    Changer de couleur
 
        Si ma zone contient 000006000 en sachant qu'elle a 2 chiffres
        décimaux elle sera éditée comme suit:
 
                      60,00
 
        Si ma zone contient 000000050
 
                       0,50
 
        Si ma zone contient 108000025
 
                     1080000,25
 
 Si j'avais utilisé le PIC(Z.ZZZ.ZZ£,££) j'aurais eu pour les exemples
 précédents.
 
     60,00 0,50 1.080.000,25
 
 
  Cette édition n'est pas parfaite, si j'ai plusieurs pages à éditer
  cela va être fait en continu.


|    Changer de couleur
 
  Nous allons donc utiliser la fonction fin de page BASIC.
 
  Pour cela nous indiquerons la ligne fin de page dans l'instruction
  OPEN
 
 OPEN £21:"PRINTER,RECL=198,SIZE=98,PAGEOFLOW=30",OUTPUT,DISPLAY
 
  Et nous indiquerons un numéro d'instruction pour un débranchement
  en cas de fin de page dans l'instruction PRINT.
 
00120 PRINT £21,USING DETAIL: NOART,LIB$,ST,PU PAGEOFLOW 50
 
 
 
 
 
 
 
 
 
 


|    Changer de couleur
 
9 UTILISATION DES FICHIERS EN DESCRIPTION EXTERNE.
--------------------------------------------------
 
 Comme vous le savez, la création d'un fichier sur disque peut se
 faire à l'aide des S.D.D. qui contiendra la description des
 enregistrements.
 
 Il est possible en BASIC d'utiliser cette description dans votre
 programme, cela vous evitera bien des peines lors de la codification
 de l'instruction READ.
 
 Pour utiliser cette fonction il faudra:
 
  - Déclarer le fichier et les formats à utiliser.
 
  - Indiquer les formats utilisés à l'ouverture du fichier.
 
  - Indiquer le format utiliser lors des opérations d'E/S.
 
 
 


|    Changer de couleur
 
 9.1 DECLARATION DU FICHIER EN EXTERNE.
 --------------------------------------
 
    Pour déclarer un fichier nous utiliserons l'ordre DECLARE FILE
 
    DECLARE FILE £1 à 255:'nom de fichier.biblio' EXTDESCR = nom format1,.....
                                          ------             -----------------
 
    Cette instruction va associer la référence £n au fichier
    ecrit entre quote, la bibliothèque est facultative (par défaut
    *LIBL).
    EXTDESCR signale l'utilisation de la descrition S.D.D.
 
    = nom format1,...  indique les formats utilisés par le programme
                       S'il n'est pas indiqué par défaut tous les
                       formats sont utilisables.
 
    Ex:
      DECLARE FILE £1:'ARTICL.STAGIAIR40' EXTDESCR= ARTICLF1
 
 


|    Changer de couleur
 
 9.2 OUVERTURE DU FICHIER EN EXTERNE.
 ------------------------------------
 
 L'instruction OPEN va très peu changé.
 
  OPEN £1 à 255:"NAME=nom de fichier.biblio, FORMAT=(nom de format1,.  .)",INPUT
                                       ------        --------------------
 
   biblio : facultatif par défaut *LIBL
 
   FORMAT indique la description du fichier en externe, elle est
          suivie des noms de format utilisés dans le programme
          si pas de nom de format utilisation de tous les formats.
 
   Ex:
 
00030 OPEN £1:"NAME=ARTICL,FORMAT=(ARTICLF1)", INPUT
 
 
 
 


|    Changer de couleur
 
 9.3 LECTURE DU FICHIER EN EXTERNE.
 ------------------------------------
 
  L'instruction va être énormément simplifiée pour un fichier décrit
  en externe. Elle ne sera plus associée à l'instruction FORM.
 
   READ £1 à 255,EXTDESCR'nom de format': EOF numéro d'instruction
 
  EXTDESCR indique l'utilisation de la description externe, le nom
           du format est obligatoire et doit être unique.
 
   Ex:
 
00100 READ £1,EXTDESCR'ARTICLF1': EOF 150
 
 
 
 
 
 
 


|    Changer de couleur
 
10 UTILISATION D'UN FICHIER IMPRIMANTE DECRIT EN EXTERNE.
---------------------------------------------------------
 
  Comme pour un fichier base de donnée il est possible d'utiliser
  dans un programme BASIC les S.D.D. d'un fichier imprimante.
 
  Mais attention le fichier sera utilis comme un fichier base de
  donnée, donc nous le définirons comme un fichier base de donnée
  en séquentiel  utilisé en sortie.
 
  grâce a ce cours vous connaîtrez à la fois le traitement d'un
  fichier base de donné et d'un fichier imprimante en sortie.
 
 
 Comme précédemment il faudra déclarer, ouvrir le fichier et faire
 des opérations d'entrée-sortie.
 
 
 
 
 


|    Changer de couleur
 
10.1 DECLARATION DU FICHIER EN EXTERNE.
---------------------------------------
 
     Identique à 9.1
 
 
 
10.2 OUVERTURE DU FICHIER EN EXTERNE.
 ------------------------------------
 
     Identique à 9.2 excepté pour l'utilisation qui sera pour le
     fichier en OUTPUT et non pas INPUT
 
  OPEN £1 à 255:"NAME=nom de fichier.biblio, FORMAT=(nf1,nf2...)",OUTPUT
 
 
 
 
 
 
 


|    Changer de couleur
 
 9.3 ECRITURE DU FICHIER EN EXTERNE.
 ------------------------------------
 
   L'ecriture dans le fichier d'impression ne pourra se faire avec
   l'instruction PRINT, nous allons apprendre une nouvelle instruction
   qui nous servira aussi bien pour l'ecriture d'un enregistrement
   dans un fichier imprimante que dans un fichier base de donnée.
   Cette nouvelle instruction est WRITE.
 
   WRITE £1 à 255 EXTDESCR'nom du format':
 
     EXTDESCR indique l'utilisation de la description externe, le nom
              du format est obligatoire et doit être unique.
 
   REMARQUE: Cette instruction dans le cas d'écriture dans un fichier
             imprimante ne permet pas de détecter la fin de page, pour cela
             malheureusement vous serez obliger de programmer cette
             gestion de fin de page. Utiliser soit un compteur de
             ligne que vous comparez au maximum de lignes, soit
             une boucle N fois où N est le nombre de lignes que
             vous pouvez écrire.


|    Changer de couleur
 
 Vous savez maintenant écrire des programmes qui lisent des fichiers
 dans l'ordre d'arrivée des enregistrements (organisation et accès
 séquentiel). Vous savez aussi ajouter des enregistrements dans un
 fichier bases de donnée et un fichier imprimante.
 
 Nous allons apprendre maintenant la lecture d'enregistrements
 dans l'ordre des clés. Pour cela il faudra bien entendu que votre
 fichier soit un fichier séquentiel indexé.
 
11 UTILISATION DES FICHIERS SEQUENTIELS INDEXES.
------------------------------------------------
 
Nous parlerons des fichiers décrits en externe, sachez que vous pouvez
le faire aussi pour des fichiers décrits en interne.
 
Les modifications à apporter pour décrire un fichier séquentiel indexé
sont :
 
    - à l'ouverture du fichier indiquer l'organisation.
 
    - l'ordre de lecture indiquera le type d'accès.


|    Changer de couleur
 
11.1 OUVERTURE DU FICHIER.
--------------------------
 
 Pour un fichier décrit en externe n'oubliez l'instruction DECLARE FILE.
 
 L'ordre d'ouverture est et sera toujours l'instruction OPEN, celle-ci
 sera modifiée par rapport à un fichier d'organisation séquentielle
 par l'ajout de la clause KEYED qui signifie organisation indexée.
 
   OPEN £1 à 255:"NAME=nom de fichier,FORMAT=(n.for1,n.for2...)",INPUT,KEYED
 
  Ex: Supposons un fichier CLIENT décrit en externe,ayant pour format
      CLIENTF1, d'organisation indexée et utilisé dans un programme
      en entrée nous aurons l'OPEN suivant.
 
   OPEN £1:"NAME=CLIENT,FORMAT=(CLIENTF1)",INPUT,KEYED
 
 
 
 
 


|    Changer de couleur
 
11.2 LECTURE DU FICHIER.
------------------------
 
Rappelez-vous qu'un fichier séquentiel indexé déclaré comme tel dans
un programme peut avoir 2 accès distincts:
           - Séquentiel dans l'ordre des clés, on lira le fichier
             du début à la fin dans l'ordre des clés.
 
           - Direct par la clé, on accèdera directement
             enregistrement par sa clé.
 
Ces 2 accès sont possibles en BASIC, pour cela vous utiliserez une
seule instruction, le READ.
 
 
 
 
 
 
 
 


|    Changer de couleur
 
11.2.1 LECTURE SEQUENTIEL DANS L'ORDRE DES CLES
-----------------------------------------------
 
  L'instruction READ a le même format que pour la lecture séquentielle
  vu précédemment car si vous créez un fichier séquentiel indexé
  BASIC si l'accès est séquentiel le lira automatiquement dans l'ordre
  des clés que vous ayez indiqué ou non KEYED dans l'instruction
  OPEN.
 
   READ £1 à 255,EXTDESCR'nom de format': EOF numéro d'instruction
 
     Voir chapitre 9.3
 
    Par défaut cette instruction indique la lecture de l'enregistrement
    qui suit.
 
   READ £1 à 255,EXTDESCR'nom de format',NEXT: EOF numéro d'instruction
 
 
 
 


|    Changer de couleur
 
11.2.1 LECTURE DIRECTE PAR LA CLE
---------------------------------
 
  L'instruction READ devra indiqué l'utilisation de la clé et quoi
  faire si la lecture n'abouti pas (si l'enregistrement ayant la clé
  recherché n'existe pas)
 
  On aura donc:
 
  READ £1 à 255,EXTDESCR'nom de format',KEY=expr.-caractère:NOKEY num. instruct.
 
   KEY= indique la variable caractère qui contient la clé recherchée
        ou une constante caratère.
 
   NOKEY va indiquer l'instruction ou l'on va se brancher en d'insuccès
         dans la recherche.
 
  Ex: reprenons le fichier CLIENT et essayons d'y accéder directement
      par clé, la clé sera indiqué dans la variable CLE$.
 
  READ £1 ,EXTDESCR'CLIENTF1',KEY=CLE$:NOKEY 80                             uct.


|    Changer de couleur
 
      Cet exemple est juste si ma zone clé dans mon fichier est aussi
      alphanumérique, si ma zone avait été numérique il aurait fallu
      que CLE$ ne contienne que des chiffres.
 
      Supposons maintenant que la zone contenant la clé soit
      NOCLIENT ,ZD 6  je n'aurais pas pu m'en servir directement
      dans l'ordre READ puique c'est une ZONE NUMERIQUE, je dois
      donc la convertir en alphanum. Je n'utiliserais pas pour
      cela la fonction STR$ car elle remplace les zéros non
      significatifs par des blancs et cadre à droite.
 
      Ex:      NOCLIENT= 000125
 
               la zone CLE$ fait aussi 6 positions
 
               Si je fais,
 
               CLE$=STR$(NOCLIENT) j'aurais dans CLE$ '125   '
                                   et non pas         '000125'
 
 


|    Changer de couleur
 
               Pour obtenir '000125' je vais utiliser une nouvelle
               fonction intrinsèque CNVRT$
 
               CNVRT$('desc. zone',zone numérique)
 
               j'indique la description de la zone (type et longueur)
               et la zone à convertir.
 
               CLE$=CNVRT$('ZD 6',NOCLIENT)
 
           Mon ordre READ maintenant sera possible si la zone
           clé du fichier est numérique, j'aurais pu l'écrire
           aussi comme suit.
 
  READ £1 ,EXTDESCR'CLIENTF1',KEY=CNVRT$('ZD 6',NOCLIENT):NOKEY 80     instruct.
 
 
 
 
 
 


|    Changer de couleur
 
                  ------------------------------------
                  ! LES FONCTIONS INTRINSEQUES BASIC !
                  ------------------------------------
 
Des mots clés BASIC permettent d'effectuer certaines fonctions
tel que, concaténation, répéter un groupe de caratères dans une
variable, de récupérer la date système etc... Ces fonctions
permettent de faciliter la tache du programmeur.
 
1 RECUPERER LA DATE système.
----------------------------
 
Il est souvent nécessaire de connaître la date au cours de l'exécution
d'un programme. Le mot clé DATE$ récupère cette date et la place
dans la variable DATE$ qui a une longueur de 8 caractères alphanum..
Le format de cette date est malheureusement le format américain
AA/MM/JJ le caratère / est inclus dans la variable votre première
tache va être de convertir cette date en format français JJ/MM/AA.
 
Vous utiliserez l'instruction suivante pour à la fois convertir la date
et insérer des /.


|    Changer de couleur
 
   DIM DATEIMP$*8     je crée une variable caratère de 8 positions
 
  DATIMP$=DATE$(7:8)&'/'&DATE$(4:5)&'/'&DATE$(1:2)
 
 Vous utilisez dans cettre instruction 2 fonctions que je vais
 tacher d'expliquer.
 
  DATE$(7:8) permet de récupérer dans la variable DATE$ les caractéres
             compris entre la position 7 et la position 8.
 
  DATE$(7:8) &'/'     & est le symbole de la concaténation c'est à dire
                      accolé une suite de caratères à une autre.
                      Dans cette exemple à coté des positions 7 à 8
                      de DATE$ c'est à dire l'année je placerai un /
                      j'aurais ainsi AA/
 
 
 
 
 
 


|    Changer de couleur
 
2 REPETITION D'UN GROUPE DE CARACTERES DANS UNE VARIABLE.
---------------------------------------------------------
 
Il est souvent nécessaire de place N fois un même caratère dans une
variable, pour faciliter par exemple les éditions.
 
Supposons que je doive éditer un état qui comprendra des lignes de
132 caractères remplies de *. Au lieu d'utiliser une constante
'**************etc..' j'utiliserai une variable caratère de 132
positions et je répéterais 132 fois le caractère *.
 
Je ferais cela grâce à la fonction RPT$.
 
          RPT$('chaine de caratères',nbre de fois)
 
     Ex: reprenons notre *
 
        DIM ASTER$*132
        ASTER$=RPT$('*',132)
 
 


|    Changer de couleur
 
3 ATTRIBUTION D'UNE VALEUR HEXADECIMALE A UNE VARIABLE.
-------------------------------------------------------
 
Supposons que vous vouliez placer la plus haute valeur dans une variable
La plus haute valeur d'un caratère est le nombre HEXA FF.
Cette valeur n'a pas de caractère associé dans EBCDIC il sera nécessaire
d'attribuer directement cette valeur à une variable.
 
   Ex:  DIM A$*1
        A$=HEX$('FF')
 
    La fonction HEX$ nous permet cela, si je voulais placer
    la plus haute valeur dans une variable de 18 positions
    je combinerais les fonctions RPT$ et HEX$
 
  Ex:  LIBEL$=RPT$(HEX$('FF'),18)
 
 
 
 
 


|    Changer de couleur
 
4 RECUPERATION DE LA DATE système.
----------------------------------
 
 La fonction TIME$ permet de récupérer l'heure système et de placer
 celle-ci dans la variable TIME$ sous la forme HH:MM:SS
 
5 PASSER DU NUMERIQUE A L'ALPHA-NUMERIQUE.
------------------------------------------
 
 Si vous voulez placer le contenu d'une variable numérique dans
 une variable alphanum. vous devez utiliser la fonction STR$
 
            A$=STR$(B)
 
6 PASSER DE L'ALPHA-NUMERIQUE AU NUMERIQUE.
------------------------------------------
 
 Si vous voulez placer le contenu d'une variable alphanum. dans
 une variable numérique vous devez utiliser la fonction VAL
 
            C=VAL(D$)





©AF400