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. |
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. |
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 $. |
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' |
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. |
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. |
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 |
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 |
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 |
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. |
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. |
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. |
---------- ORGANIGRAME. ( Début ) REM ---------- ! ------------ / lire / INPUT /production / ------------- ! -------------- !addition des! !2 chiffres ! LET -------------- ! ------------ /affichage / PRINT /prod. tot. / ------------- ! ---------- ( fin ) END ---------- |
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 |
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 ;..... ---------- ---------- ----------- |
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. |
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 |
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. |
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 |
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. |
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 |
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 --------- |
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 |
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. |
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. |
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 |
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 ? |
- 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. |
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. |
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 --------------------- |
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. |
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) |
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. |
- 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. |
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. |
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 |
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. |
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 |
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 |
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. |
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 |
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. |
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. |
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. |
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. |
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 |
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. |
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 |
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 |
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. |
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 |
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" |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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. |
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 |
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: |
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é. |
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. |
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 |
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. |
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 |
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 |
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 |
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. |
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 |
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. |
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. |
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 |
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. |
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 |
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. |
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' |
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. |
------------------------------------ ! 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 /. |
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/ |
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) |
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) |
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$) |