COBOL, un langage de programmation. Module A206 : Programmation fichiers - COBOL. Chapitre 2. Avant-propos. COBOL, un langage de programmation

Dimension: px
Commencer à balayer dès la page:

Download "COBOL, un langage de programmation. Module A206 : Programmation fichiers - COBOL. Chapitre 2. Avant-propos. COBOL, un langage de programmation"

Transcription

1 COBOL, un langage de programmation Avant-propos La structure de ce chapitre est la suivante : Module A206 (version V3) Programmation fichiers COBOL Chapitre 2 COBOL, un langage de programmation 1. Introduction Alain Vailly Alain.Vailly@univ-nantes.fr Dans cette partie, nous présentons tout d'abord la structure générale d'un programme. La forme d'une instruction est ensuite évoquée. Puis le langage lui-même est replacé dans l'histoire. Les limites que nous avons volontairement imposées à cet exercice sont enfin définies. 1.1 Structure générale Il y a des "tas" de sortes de langages. Certains sont graphiques : Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 1 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 2 / 95

2 NB : pour les curieux, les idéogrammes ci-dessus ont été extraits d'une enveloppe et indiquent un numéro de boîte aux lettres. Les sections sont constituées de paragraphes, ayant tous la même structure composée d'un nom de paragraphe et de phrases. D'autres sont très mathématiques d'aspect : 1 NB : cette formule mathématique est extraite d'une spécification d'un logiciel de facturation. Rédigée en langage Z (un langage défini dans les années 70 par un informaticien français, Jean Raymond ABRIAL), elle décrit une partie de ce qui se passe lors de la mise-à-jour d'un stock. D'autres sont plus élaborés et font appel à des écrans de saisie proposant différents choix au programmeur. COBOL, lui, est un langage que l'on peut qualifier de "littéraire", dans la mesure où il est structuré en divisions, sections, paragraphes, phrases, mots... et où le nombre de lignes de programme à rédiger est assez conséquent. Un programme COBOL comprend quatre divisions, de taille différente (il y en a deux grosses et deux petites) et jouant des rôles distincts : 1 la première (IDENTIFICATION) sert à identifier le programme ; la deuxième (ENVIRONMENT) précise l'environnement de ce programme, essentiellement (mais pas seulement) en matière de fichiers ; la troisième (DATA) décrit les données utilisées dans le programme ; la quatrième (PROCEDURE) et dernière correspond au code lui-même, à la procédure. 7A B ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. NB : un paragraphe s'arrête là où commence le paragraphe suivant OU là où commence une autre section OU là où commence une autre division OU à la fin du programme. Les phrases commencent par un mot-clé du langage. Elles se terminent par un point OU quand la phrase suivante commence. 1 7A B DISPLAY "BONJOUR" WRITE LIGNE. DISPLAY "AU REVOIR" La dernière phrase d'un paragraphe est obligatoirement terminée par un point. Dans l'exemple précédent, la phrase DISPLAY "AU REVOIR" n'est pas la "dernière phrase" d'un paragraphe (elle ne se termine pas par un point). 1.2 Forme générale 7A B IDENTIFICATION DIVISION. --ENVIRONMENT DIVISION. --DATA DIVISION. --PROCEDURE DIVISION. La forme générale d'un programme COBOL peut surprendre un observateur novice, surtout s'il oublie de repositionner ce langage dans le temps et s'il ne pense pas au fait qu'autrefois les programmes étaient stockés sur des cartes perforées. NB : ces divisions sont présentes DANS CET ORDRE dans TOUS les programmes. La plupart des divisions sont découpées en sections, celles-ci étant différentes d'une division à une autre. 1 7A B DATA DIVISION. FILE SECTION. --WORKING-STORAGE SECTION. --LINKAGE SECTION. NB : cette image est extraite du site Internet L'instruction qu'elle contient est la suivante : NB : l'ordre dans lequel les sections de cette division des données sont présentées n'a aucune importance. Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 3 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 4 / 95

3 IF MOD-G-JAHR NOT NUMERIC MOVE ZERO TO MOD-G-JAHR Ces cartes (elles correspondaient à une ligne de programme) étaient découpées en quatre zones : numérotation continuation instruction identification Les programmes de l'époque correspondaient à des paquets (au vrai sens du terme) de 100, cartes, ce qui obligeait à des prouesses physiques pour transporter les programmes sans faire tomber les paquets et à employer des élastiques. NB : cette image est extraite du site Internet À propos de la colonne 7 Du fait de ces chutes potentielles et des zones réservées à la numérotation des cartes, la seule zone utile occupait ET OCCUPE TOUJOURS les colonnes 7 à 72, extrémités comprises, la colonne 7 jouant un rôle particulier. Si, par mégarde, un programmeur dépasse cette colonne 72 et continue à écrire au delà, le compilateur ignorera superbement ce qu'il y a. Attention donc aux mots ou aux chaînes de caractères tronqués. En principe (surtout pour réduire la taille des paquets), les programmeurs remplissaient au mieux chaque carte. Il s'agissait de faire un compromis entre le poids des programmes et leur intelligibilité. Rien n'empêchait en effet un programmeur de "s'étaler" et d'écrire une phrase sur plusieurs cartes, un mot par carte : DISPLAY "BONJOUR" WRITE LIGNE. DISPLAY "AU REVOIR" Trois instructions, six lignes. NB : cette image est extraite du site Internet Comme, malgré tout, les chutes arrivaient de temps en temps, chaque carte comportait, en colonne 73 à 80, le nom du programme auquel elle appartenait. Elle était également numérotée (une numérotation séquentielle discontinue) en colonnes 1 à 6. En cas de chute, il suffisait de ramasser les cartes, les remettre toutes à l'endroit et les passer dans une trieuse comme celle-ci : Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 5 / 95 DISPLAY "BONJOUR" WRITE LIGNE. DISPLAY "AU REVOIR" Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 6 / 95

4 Trois instructions, quatre lignes. Les deux formes précédentes sont équivalentes en termes de résultat d'exécution. A priori donc, il ne pouvait pas y avoir de mot coupé en deux, dans la mesure où il suffisait de prendre une nouvelle carte et d'y écrire le mot en entier. Il pouvait toutefois arriver que, dans certains cas bien précis (celui de chaînes de caractères longues notamment), il soit nécessaire de pratiquer une césure. Pour indiquer au compilateur que la chaîne sur la première carte se continuait sur la carte suivante, sans espace, il fallait un signal spécial. Celui-ci (un tiret) devait obligatoirement être placé en colonne 7. L'élément trop grand était écrit sur la première carte jusqu'en colonne 72 INCLUSE et reprenait sur la carte suivante, en colonne 12 et suivantes, APRÈS UN ", symbole du début de chaîne de caractères DISPLAY "CECI EST UNE CHAINE COMPOSEE DE "BEAUCOUP DE CARACTERES QU IL FAUT COUPER EN "TROIS MORCEAUX.". Le tiret dans la colonne 7 servait également en cas de coupure de mot : 73 DISPLAY --, WTOT - AL. NB : cet usage est à proscrire, tant la compréhension du programme en souffre. La colonne 7 a plusieurs autres usages : * Toute la ligne est prise comme commentaire. / Ce caractère provoque un saut de page lors de l'édition du code source. D La ligne est utilisée pour le déboguage (à employer seulement quand la clause WITH DEBUGGING MODE est utilisée) Zone instruction La zone instruction (colonnes 8 à 72) était, quant à elle, découpée en deux parties, une de 8 à 11 et une allant de 12 à 72. La première (appelée Zone A) était réservée aux noms de divisions, de sections, de paragraphes et à certains mots-clés. Tout le reste devait être écrit dans la partie comprise entre la colonne 12 et la colonne 72 (cette partie étant appelée Zone B). Les programmeurs de l'époque remplissaient soigneusement des bordereaux de saisie similaires à celui cidessous : NB : cette image est extraite du site Internet Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 7 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 8 / 95

5 Le paquet de cartes vierges placé dans le sabot situé sur le dessus de la machine, à droite, le bordereau de saisie à portée des yeux, il suffisait de sélectionner une carte (i.e. de la faire descendre) et de taper le texte au clavier. Au fur et à mesure, colonne après colonne, la carte avançait vers la gauche. Lorsque la saisie de la ligne était terminée, la carte remontait dans le sabot de gauche. Le programme créé, les cartes toutes perforées, il fallait alors prendre le paquet dans le sabot de gauche, y ajouter un élastique et porter le tout dans la salle machine. La compilation pouvait commencer. Les cartes perforées ayant disparu, les supports magnétiques ayant remplacé le support cartonné, ces règles se sont un peu assouplies. A ce jour, on trouve des compilateurs qui acceptent des instructions COBOL démarrant en colonne 1. Aucun, toutefois, ne sait lire au delà de la colonne 72. Tout ce qui est écrit en 73 et après cette limite est simplement ignoré... ce qui peut (!) provoquer des erreurs de compilation. Nous conseillons, malgré la tolérance de la plupart des compilateurs, de continuer à respecter le colonnage (voir la partie de ce module consacrée aux normes de programmation). 1.3 Un peu de (petite) histoire Le langage COBOL (son nom est l'acronyme de COmmon Business Oriented Language, langage commun orienté gestion) est né en 1958, à la demande du département américain de la défense (le DoD, Department of Defense). Celui-ci souhaite disposer d'un langage standardisé pour ses applications de gestion. Il réunit un groupe de travail, le CODASYL (COnference on DAta SYstems Languages), qui comprend plusieurs constructeurs (IBM, Burroughs Corp., RCA, Sperry...) et des représentants du gouvernement américain (le Dod, le National Bureau of Standards...). L'équipe est dirigée par une femme, Grace B. HOPPER (ce qui fera dire, quarante ans plus tard, à l'auteur d'un article... féministe??... paru sur le site (et que nous avons copié sans vergogne) "c'est un langage efficace, car c'est une femme qui l'a inventé"). Mathématicienne (maîtrise de maths, doctorat de maths... à Yale), elle travaille dans la Marine, en Elle est à l'origine de A0, le premier compilateur connu. On lui doit aussi B0, FLOWMATIC 1, tous deux développés pour Univac. 1.4 Restrictions sur le cours Nous avons volontairement restreint le langage COBOL présenté dans ce module, essentiellement pour des raisons pédagogiques. De très nombreuses clauses sont, en effet, inutiles (à tout le moins très très peu souvent utilisées) et il n'est pas nécessaire de les maîtriser pour programmer dans ce langage. Nous souhaitons en outre ne pas cantonner ce module au simple exercice d'apprentissage d'un langage et tenons à armer nos étudiants d'outils algorithmiques puissants leur permettant d'écrire des programmes impliquant un nombre quelconque de fichiers. Le fait d'ajouter ici nous pousse inévitablement, le temps nous étant compté, à enlever ailleurs. Mini-COBOL, donc. Le fait de ne pas tout traiter ne doit cependant pas pénaliser l'apprenant... et de fait cela ne le pénalise pas. Imaginons, par exemple, qu'au gré d'une opération de rétroconception, un de nos anciens étudiants, uniquement formé à ce mini-cobol, tombe sur une instruction inconnue. Nous faisons le pari qu'elle ne le restera pas longtemps. Deux raisons à cela : tous les compilateurs que nous avons pratiqués sont dotés d'aides en ligne complètes. L'ordre inconnu y trouvera sans aucun doute une explication. Il ne faut pas oublier, enfin, que le langage est basé sur l'usage de mots anglais. Il sera donc facile de décoder notre inconnu et de savoir que SUBTRACT, par exemple, correspond à une soustraction. Pour faire définitivement taire les dernières critiques, nous avons prévu en fin du chapitre 2, consacré au langage lui-même, une série de compléments abordant des "choses" non nécessaires. 16/10/12 Sa principale contribution porte sur l'utilisation du langage naturel dans les langages de programmation. Elle est donc très certainement à l'origine de l'adoption dans COBOL de verbes anglais pour exprimer les opérateurs arithmétiques (ADD, DIVIDE...). Elle terminera sa carrière comme contre-amirale de la Marine des États-Unis en 1986, travaillera jusqu'à la fin de sa vie comme consultante, chez Control Data. Elle décèdera en 1992, le 1 janvier. Pour revenir à COBOL, les premières spécifications sont produites en janvier Les premiers compilateurs sortent en décembre L'histoire du langage est ensuite marquée par les événements suivants : 1968 : première normalisation par l'american National Standards Institute, le COBOL ANSI : deuxième normalisation, le COBOL ANSI : troisième normalisation, le COBOL ANSI85 En plus de quarante années, ce langage a réussi à faire son chemin dans les services informatiques des entreprises, et ce dans le monde entier. Les estimations, sur ce point, divergent. La part de COBOL s'échelonne, en effet, selon les auteurs de 30 à 60 % du nombre total de lignes de programmes existant à ce jour! Certains historiens n'hésitent pas à chiffrer à 7 milliards le nombre de lignes COBOL actuellement en usage. Dans un cours donnée à l'université de Montréal, il est même fait mention du langage le plus utilisé, avec 95 % des plus grandes entreprises du Canada qui ont des programmes rédigés dans ce langage. Quels que soient les chiffres, il est certain que les programmes COBOL "pullulent". De très nombreuses tentatives ont en outre été faites depuis pour moderniser ce "vieillard", comme : des versions COBOL objet (des ouvrages sont même disponibles), des traducteurs COBOL-SQL, un groupe de travail autour de TinyCobol, compilateur COBOL libre, une "connexion" avec le monde Web,... Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 9 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 10 / 95

6 COBOL, un langage de programmation 23/11/03 2. Identifier le programme Identifier un programme, c'est lui donner un nom (c'est le minimum) ; c'est aussi mentionner son (ou ses) auteur(s) et le localiser dans le temps en fournissant la date... de rédaction... ou de la naissance du chien de Marie-Jeanne, la date fournie n'étant prise que comme commentaire. La syntaxe de cette très courte division est la suivante : IDENTIFICATION DIVISION. PROGRAM-ID. Nom. [AUTHOR. Commentaire1]. [DATE-WRITTEN. Commentaire2]. Seul, le premier renseignement est obligatoire. Nous conseillons de fournir les deux autres, ne serait-ce que pour permettre de retrouver l'auteur d'un programme lors d'une mise-à-jour ultérieure. ATTENTION, le nom donné au programme joue un rôle capital (?). Il permet de faire le lien avec le nomsystème donné au fichier contenant le programme. Le contenu (ie. le programme) connait donc le nom de son contenant (ie. le fichier). Le programmeur n'a pas beaucoup de liberté dans le choix d'un nom. Le système de gestion de fichiers veille. Beaucoup de compilateurs imposent des noms de fichiers source avec une extension.cob (miseajour.cob, saisieclients.cob...), cette dernière ne devant PAS figurer dans le nom inscrit dans le programme. PROGRAM-ID. miseajour. PROGRAM-ID. saisieclients. Nous avons connu des compilateurs qui requéraient une mise entre guillemets de ce nom. PROGRAM-ID. "miseajour". Selon le système d'exploitation, en outre, le nombre de caractères de ce nom sera plus ou moins limité. A voir avec le responsable système de la machine sur laquelle le programme sera compilé puis exécuté. Les deux commentaires situés après les mots-clés AUTHOR et DATE-WRITTEN se terminent par un point. Ils ne doivent donc pas contenir eux-même de point! Certains compilateurs proposent d'autres paragraphes, comme : DATE-COMPILED, qui permet de récupérer la date de compilation du programme, date fournie par le compilateur lui-même. Une survivance du temps où les programmes étaient volumineux, où les temps de saisie n'étaient pas négligeables et où il pouvait s'écouler un ou deux JOURS (j'ai bien dit "jours") entre la rédaction et la compilation. SECURITY, qui était prévu pour permettre une mise en évidence des consignes de sécurité "pesant" sur le programme. INSTALLATION, qui définit le matériel sur lequel s'exécute le programme. Ces paragraphes seront avantageusement remplacés par des commentaires placés en début de programme. Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 11 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 12 / 95

7 COBOL, un langage de programmation 3. Décrire l environnement du programme 3.1 Généralités L'environnement du programme comprend, pour l'essentiel, un ensemble de fichiers (séquentiel, indexé...). Deux sections (une seule obligatoire) composent cette division, la section de configuration (CONFIGURATION SECTION) et la section des entrées-sorties (INPUT-OUTPUT SECTION). Celles-ci sont respectivement constituées de trois et deux paragraphes. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. OBJECT-COMPUTER. SPECIAL-NAMES. Dans la section de configuration, on peut fournir le nom de l'ordinateur sur lequel est compilé le programme et le nom de celui sur lequel il sera exécuté. Dans les deux cas, ce nom est traité comme un commentaire. Le paragraphe SPECIAL-NAMES joue un rôle limité mais intéressant. Sa syntaxe est la suivante : SPECIAL-NAMES. [CURRENCY SIGN IS Caractère]. [DECIMAL-POINT IS COMMA]. On peut ainsi utiliser le symbole monétaire que l'on veut (franc, euro... tout est bon... dès l'instant où il y a un caractère disponible) -clause CURRENCY- et passer, par exemple, de la notation américaine 1, à la notation française 1.000,00 -clause DECIMAL POINT-. À défaut, les valeurs seront exprimées en dollars... américains et les virgules et points inversés... par rapport à nous. La section des entrées-sorties comprend un paragraphe consacré aux fichiers (FILE-CONTROL) et un paragraphe servant pour les optimisations (I-O-CONTROL). INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FICH1 ASSIGN TO fich1.dat ORGANIZATION INDEXED. SELECT FPRODUIT ASSIGN TO fich2.dat ORGANIZATION SEQUENTIAL. SELECT FCLIENT ASSIGN TO fich3.dat ORGANIZATION INDEXED. Ce programme utilise trois fichiers nommés, en interne, FICH1, FPRODUIT et FCLIENT. Ces fichiers correspondent aux fichiers fich1.dat, fich2.dat, fich3.dat. NB : certains compilateurs demandent que les noms externes des fichiers soient entre guillemets. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FICH1 ASSIGN TO "fich1.dat". La liaison nom interne (ex : FPRODUIT) - nom externe (ex : fich2.dat) est assurée par l'ordre SELECT. Étudions la plus en détail, organisation par organisation. Des exemples récapitulatifs clôtureront cette présentation Ordre SELECT pour un fichier en organisation séquentielle Nous supposons, c est du moins ce que nous avons dit dans l introduction de ce cours, que les notions d organisation de fichiers sont connues. Ceux de nos lecteurs qui ont ces pré-requis peuvent sauter le paragraphe qui suit. Pour les autres, nous commencerons par rappeler brièvement ce dont il s agit. A- À propos de l organisation séquentielle Un fichier en organisation séquentielle correspond à une file d attente gérée en FIFO (First In First Out) sans priorité ou, pour prendre un exemple plus concret, à une file d attente devant un cinéma, sans resquilleur. Tous les enregistrements ont la même longueur, c est du moins l hypothèse simplificatrice que nous prendrons ici. Ils sont rangés les uns derrière les autres, sans laisser de trou entre eux. Le fichier est doté, pour son exploitation, de deux dispositifs complémentaires, un curseur et une marque de fin de fichier. 3.2 Paragraphe FILE-CONTROL Ce paragraphe joue un rôle essentiel pour l'intégration du programme dans son environnement. C'est là que les fichiers utilisés sont mentionnés, avec, et c'est là le point important, leur organisation (voir le paragraphe consacré à cette notion si nécessaire). Pour chaque fichier, une clause SELECT : Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 13 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 14 / 95

8 Le curseur désigne le prochain ; le prochain article à lire, le prochain emplacement pour écrire La marque de fin de fichier est un enregistrement sépcial matérialisant la fin du fichier. Cette marque fait partie du fichier. Une telle organisation est la moins efficace pour rechercher un enregistrement précis dans un ensemble. Le temps nécessaire pour ce faire est en moyenne égal à la moitié du temps nécessaire à la lecture de TOUT le fichier! C est, d un autre côté, la plus efficace pour lire tous les enregistrements d un fichier. La pire et la meilleure! C est pour cela que l agorithmique de fichiers séquentiels est un outillage nécessaire à tout bon programmeur et pour cela aussi que ce cours comprend, outre l apprentissage du langage COBOL, une partie traitant de cinématique de fichiers séquentiels (voir chapitre 3). B- Déclaration d un fichier séquentiel Un fichier en organisation séquentielle se "déclare" comme suit : SELECT Nom-interne-fichier ASSIGN TO Nom-externe-fichier [ORGANIZATION SEQUENTIAL] [ACCESS MODE IS SEQUENTIAL] [FILE STATUS IS Nom-donnée]. Seule la première ligne est obligatoire. Les autres permettent respectivement de préciser que l'organisation du fichier est le séquentiel (option par défaut), que le mode d'accès aux enregistrements est le mode séquentiel (option par défaut) et de définir une variable (il s'agit d'une variable de travail, à déclarer dans la section appropriée (WORKING-STORAGE SECTION)) qui servira à accueillir le status, c'est-à-dire le compte-rendu d'exécution de l'opération d'entrée-sortie. Nous conseillons l'utilisation de cette variable, surtout en phase de mise au point du programme. Sans cette option, s'il y a un problème dans la manipulation du fichier, le programme s'arrêtera (il "plantera"). Avec l'option, il ne s'arrêtera pas. Un code d'erreur sera inscrit dans la variable, celle-ci pouvant être affichée, aidant ainsi le programmeur dans la détection du problème. Les codes ne sont hélàs pas tous normalisés. Certains changent d'un compilateur à un autre. Quoiqu'il en soit, ils sont recensés dans la documentation remise par l'éditeur du logiciel. Voici, par exemple, quelques valeurs relatives à l'organisation séquentielle : Pour comprendre ce qu est un fichier organisé en séquentiel-indexé, il suffit de penser à un dictionnaire. Celui-ci comprend une liste de mots, présentés en ordre alphabétique. Il comprend aussi un index qui permet d accélérer la recherche d un mot précis. Un fichier en organisation séquentielle-indexée est constitué de deux parties, les enregsitrements et les index. Les enregsitrements sont rangés en respectant un ordre, les uns «derrière» les autres au sens de cet ordre. Ce dernier est porté par une rubrique qui est appelée clé principale. Sans clé, pas d organisation séquentielleindexée. Ce classement est parfait, sans doublon. Les index sont des tables constituées de deux attributs ; le premier correspond à une valeur de clé ; le second est un pointeur. La partie enregistrements du fichier est découpée en zones, de taille plus ou moins importantes selon les systèmes de gestion de fichiers, chaque zone étant référencée dans l index. A B C D E F Enregistrements Chaque entrée de l index comprend la valeur de la clé la plus haute (si le fichier est en ordre croissant) ou la plus basse (si le fichier est en ordre décroissant) et un pointeur sur le premier enregsitrement de la zone. Plus la zone sera petite, plus l index sera précis. Les index les plus performants ont autant d entrées que d enregistrements dans le fichier. zone A zone B zone C zone D zone E zone F Index 00 entrée-sortie réussie 04 lecture réalisée mais longueur d'enregistrement non conforme à la déclaration 05 tentative d'ouverture d'un fichier inexistant 11 fin de fichier Plus généralement, cette variable doit être déclarée dans la section des variables de travail (WORKING- STORAGE SECTION) comme une chaîne de deux caractères (elle y aura un format XX). Elle est à tester après chaque opération impliquant un fichier. Une valeur 00 correspond au succès de l'opération. Toute autre à une anomalie à corriger (soit en changeant les données, soit en agissant sur le programme lui-même) Ordre SELECT pour un fichier en organisation séquentielle-indexée Nous supposons, c est du moins ce que nous avons dit dans l introduction de ce cours, que les notions d organisation de fichiers sont connues. Ceux de nos lecteurs qui ont ces pré-requis peuvent sauter le paragraphe qui suit. Pour les autres, nous commencerons par rappeler brièvement ce dont il s agit. A- À propos de l organisation séquentielle-indexée Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 15 / 95 Les enregistrements ayant une clé inférieure ou égale à 10 sont dans la zone commençant à l adresse 1. Les enregistrements ayant une clé inférieure ou égale à 40 sont dans la zone commençant à l adresse 7. Les index sont gérés par le système de gestion de fichiers. Lorsque les zones du fichier sont composées de plusieurs enregistrements, ceux-ci sont liés les uns aux autres. L accès aux enregistrements d une zone se fait donc comme suit : Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 16 / 95

9 on recherche dans la table d index la valeur immédiatement supérieure à celle recherchée ; on se positionne ensuite au début de la zone, en utilisant le pointeur ; on parcourt ensuite séquentiellement la zone contenant, si il existe, l enregistrement désiré. Cet index est construit sur les valeur de la clé primaire. Celle-ci est identifiante, c est-à-dire qu elle n a pas de doublons. Il est possible de construire plusieurs autres index : sur l index principal, pour accélérer le parcours de cet index. On a alors un index d index. sur des clés secondaires, celles-ci étant parfaites (elles n ont pas de doublons) ou non. Il y a alors autant de chaînages que d index. Une organisation séquentielle-indexée est idéale pour accèder directement à un enregistrement précis dont on connaît la valeur de la clé (primaire ou secondaire). C est sûrement la pire des façons de parcourir tous les enregistrements d un fichier. B- Déclaration d un fichier séquentiel-indexé Il y a, pour un fichier en organisation séquentielle-indexée autant de déclarations qu'il y a d'accès possibles. Il y a donc une clause SELECT pour un accès séquentiel, une clause SELECT pour un accès direct et une clause SELECT pour un accès dynamique. Dans tous les cas (ie. quelque soit le mode d'accès), il convient d'abord de préciser la clé principale (RECORD KEY) puis, le cas échéant, la (ou les) clé(s) secondaire(s) (ALTERNATE RECORD KEY) et, enfin, de signaler la présence éventuelle de doublons dans les liaisons relatives aux clés secondaires (WITH DUPLICATES). NB : s'il y a trois clés secondaires, il doit y avoir trois clauses ALTERNATE RECORD KEY. La variable permettant de récupérer le statut du fichier après exécution de l'opération peut prendre, comme précédemment, plusieurs valeurs et notamment : 05 tentative d'ouverture d'un fichier absent. Si le mode I-O est demandé, le fichier est créé. 22 problème de clé dupliquée 24 tentative d'écriture hors des limites du fichier Il y en a d'autres. Abordons maintenant les spécificités de cette clause dûes au mode d'accès employé Accès séquentiel Un fichier en organisation indexée auquel on accède en séquentiel se "déclare" comme suit : SELECT Nom-interne-fichier ASSIGN TO Nom-externe-fichier [ORGANIZATION INDEXED] [ACCESS MODE IS SEQUENTIAL] [RECORD KEY Nom-donnée1] [ALTERNATE RECORD KEY Nom-donnée2 [WITH DUPLICATES]] [FILE STATUS IS Nom-donnée3] Accès direct Un fichier en organisation indexée auquel on accède en direct se "déclare" comme suit : SELECT Nom-interne-fichier ASSIGN TO Nom-externe-fichier [ORGANIZATION INDEXED] [ACCESS MODE IS RANDOM] Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 17 / 95 [RECORD KEY Nom-donnée1] [ALTERNATE RECORD KEY Nom-donnée2 [WITH DUPLICATES]] [FILE STATUS IS Nom-donnée3] Accès dynamique Un fichier en organisation indexée auquel on accède en dynamique se "déclare" comme suit : SELECT Nom-interne-fichier ASSIGN TO Nom-externe-fichier [ORGANIZATION INDEXED] [ACCESS MODE IS DYNAMIC] [RECORD KEY Nom-donnée1] [ALTERNATE RECORD KEY Nom-donnée2 [WITH DUPLICATES]] [FILE STATUS IS Nom-donnée3] Ordre SELECT pour un fichier en organisation relative Un fichier en organisation relative (rappelons que nous supposons que les concepts sous-jacents à cette organisation sont connus ; si tel n'était pas le cas, il est conseillé d'acquérir ces notions avant de poursuivre) se "déclare" comme suit : SELECT Nom-interne-fichier ASSIGN TO Nom-externe-fichier [ORGANIZATION RELATIVE] [ACCESS MODE IS RANDOM] [RELATIVE KEY Nom-donnée1] [FILE STATUS IS Nom-donnée2]. Comme précédemment, nous recommandons l'usage de la variable récupérant le statut du fichier. Certaines erreurs ne sont, en effet, pas détectables autrement que par un test. C'est le cas, par exemple, des situations suivantes : Il y en a d'autres. 14 dimension de la clé dépassée 24 tentative d'écriture hors des limites du fichier Exemples récapitulatifs Soit le morceau de programme suivant : ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FETUD ASSIGN TO "fetud.dat" ORGANIZATION INDEXED ACCESS RANDOM RECORD KEY IS NOETUD. SELECT FMODULE ASSIGN TO "fmodule.dat" ORGANIZATION INDEXED ACCESS RANDOM Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 18 / 95

10 RECORD KEY IS CODMOD. SELECT FNOTES ASSIGN TO "fnotes.dat". SELECT FRESULT ASSIGN TO "fresult.dat". COBOL, un langage de programmation Quatre fichiers sont annoncés, FETUD, FMODULE, FNOTES et FRESULT. Les deux premiers sont en organisation indexée, les deux derniers en séquentielle. FETUD est utilisé en accès direct. Il a une clé principale, NUETUD mais pas de clé secondaire. FMODULE est également utilisé en accès direct. Il a une clé principale, CODMOD. Pas de clé secondaire pour ce fichier. Les deux derniers fichiers sont utilisés en accès séquentiel (c'est du reste la seule possibilité!). Soit le morceau de programme suivant : ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FREAL ASSIGN TO "freal.dat" ORGANIZATION INDEXED ACCESS DYNAMIC RECORD KEY IS CLEPRIM ALTERNATE RECORD KEY IS CODCOUR WITH DUPLICATES. Il n'y a qu'un seul fichier, FREAL. Il s'agit d'un fichier organisé en sequentiel-indexé, "travaillé" en accès dynamique. La clé principale est CLEPRIM. Il y a une clé secondaire, CODCOUR, celle-ci produisant des doublons. Pas de variable status. 3.3 Paragraphe I-O-CONTROL Ce paragraphe permet d'optimiser la place occupée par le programme qui s'exécute (une préoccupation d'un autre temps!), en associant la même zone tampon à plusieurs fichiers : I-O-CONTROL. SAME RECORD AREA TO Nom-fichier1... Nom-fichierN. les mêmes fichiers de travail pour trier plusieurs fichiers : I-O-CONTROL. SAME SORT AREA TO Nom-fichier1... Nom-fichierN. les mêmes fichiers de travail pour fusionner plusieurs fichiers : I-O-CONTROL. SAME SORT-MERGE AREA TO Nom-fichier1... Nom-fichierN. 4. Définir les données 4.1 Généralités Décrire les données, c'est l'affaire de la division de données, la DATA DIVISION. Celle-ci est découpée en un maximum de cinq sections ayant chacune un rôle à jouer. DATA DIVISION. FILE SECTION SECTION. WORKING-STORAGE SECTION. LINKAGE SECTION. REPORT SECTION. SCREEN SECTION. Ces sections sont toutes facultatives. Avec certains compilateurs, l'ordre d'écriture est imposé. Nous traiterons les deux premières (fichiers et variables de travail) dans cette partie du cours, les trois autres étant abordées dans la partie Extensions. Auparavant, nous évoquerons le format des données. 4.2 Format des données Pour décrire une donnée, il faut fournir plusieurs renseignements et notamment son niveau d'imbrication et son nom. Une valeur initiale, un format peuvent être ajoutés aux deux précédents. Il y en a encore d'autres, moins utilisés Niveaux d'imbrication A- Définitions Il est possible, en COBOL, de définir des structures de données elles-même constituées de sous-structures et de variables élémentaires. Cette imbrication s'exprime grâce à des niveaux, nombres constitués de deux chiffres respectant la contrainte suivante : Il ne sera pas développé davantage. 23/11/03 Des trois dernières valeurs (ie. 66, 77 et 88), nous ne parlerons que de celle du milieu : 77 est le niveau d'imbrication associé à une variable élementaire QUI N'APPARTIENT PAS À UNE STRUCTURE. NB : les variables de niveau 88 sont traitées dans la partie abordant la notion de conditionnelle. Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 19 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 20 / 95

11 Les quarante-neuf premières valeurs sont associées aux variables structurées et aux variables élémentaires QUI APPARTIENNENT À UNE STRUCTURE, selon les principes suivants : À chaque élément est associé un nombre ; Plus le nombre est élevé, plus la variable est «à l intérieur» de la structure ; Tous les éléments de même niveau dans une structure ont le même nombre. B- Exemples Prenons des exemples : 1) Soit X une variable élémentaire. X aura pour niveau d'imbrication 77. 2) Soit la structure ADRESSE1 suivante : Struct ADRESSE1 NomRue NumeroRue CodePostal NomVille finstruct ADRESSE1 (si elle n'est pas elle-même élément d'une structure) aura pour niveau d'imbrication 01. NomRue, NumeroRue... auront un niveau d'imbrication supérieur, identique pour tous. Il peut y avoir plusieurs traductions : 01 ADRESSE1 02 NOMRUE 02 NUMERORUE 02 CODEPOSTAL 02 NOMVILLE 01 ADRESSE1 05 NOMRUE 05 NUMERORUE 05 CODEPOSTAL 05 NOMVILLE L'habitude (ce n'est qu'une habitude) veut que l'écart qui traduit une différence de niveau soit supérieur à 1. Ainsi, entre les deux solutions précédentes, celle de droite est préférée. Il serait en effet plus facile de regrouper les variables deux par deux dans le cas de droite, ce que semble confirmer les exemples ci-dessous : 01 ADRESSE1 02 RUE 03 NOMRUE 03 NUMERORUE 02 VILLE 03 CODEPOSTAL 03 NOMVILLE 01 ADRESSE1 02 RUE 05 NOMRUE 05 NUMERORUE 02 VILLE 05 CODEPOSTAL 05 NOMVILLE 2 lignes ajoutées 2 lignes ajoutées 4 lignes retouchées 0 ligne retouchée Ceci est une erreur, dans la mesure où il est également de tradition d'indenter les définitions des structures, de décaler de X (usuellement 4) caractères chaque niveau. La comparaison précédente devient alors ceci : 01 ADRESSE1 02 RUE 03 NOMRUE 01 ADRESSE1 02 RUE 05 NOMRUE Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 21 / NUMERORUE 02 VILLE 03 CODEPOSTAL 03 NOMVILLE 05 NUMERORUE 02 VILLE 05 CODEPOSTAL 05 NOMVILLE 2 lignes ajoutées 2 lignes ajoutées 4 lignes retouchées 4 lignes retouchées 3) Soit la structure EMPLOYE suivante et sa traduction : Struct EMPLOYE Struct PERSONNE NOMPERSONNE PRENOMPERSONNE DATENAISSANCE finstruct Struct ADRESSE1 NOMRUE NUMERORUE CODEPOSTAL NOMVILLE finstruct NUMEROEMPLOYE SALAIRE DATEARRIVEE finstruct Deux remarques pour finir : 01 EMPLOYE 02 PERSONNE 03 NOMPERSONNE 03 PRENOMPERSONNE 03 DATENAISSANCE 02 ADRESSE1 03 NOMRUE 03 NUMERORUE 03 CODEPOSTAL 03 NOMVILLE 02 NUMEROEMPLOYE 02 SALAIRE 02 DATEARRIVEE Seules les balises de fin de structure (finstruct) ne sont pas traduites. TOUTES les variables (qu elles soient élémentaires ou structurées) sont accessibles et manipulables. C- Présentation Ces niveaux sont régis par des règles de présentation strictes. La première dit que les niveaux 01 et 77 doivent obligatoirement être présentés en zone A. La deuxième dit que les autres niveaux doivent se trouver en zone B. La troisième indique qu'à chaque niveau correspond une nouvelle ligne. La quatrième impose le niveau 01 au nom correspondant au plus haut d'une structure. Une traduction COBOL correcte (mais PARTIELLE) du dernier exemple pourrait donc être celle présentée ciaprès : 01 EMPLOYE. 02 PERSONNE. 03 NOMPERSONNE 03 PRENOMPERSONNE 03 DATENAISSANCE 02 ADRESSE1. 03 NOMRUE 03 CODEPOSTAL 03 NOMVILLE Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 22 / 95

12 4.2.2 Noms des données 02 NUMEROEMPLOYE 02 SALAIRE 02 DATEARRIVEE Toutes les données utilisées dans un programme COBOL doivent avoir un nom. Ce nom doit, bien sûr, être différent des mots réservés du langage lui-même. En cas de doute, il suffit de consulter l'aide en ligne du compilateur. Il y a une précaution à prendre pour éviter de nommer une variable avec un mot COBOL, celle de ne pas employer de mot s'écrivant pareil en français et en anglais (il y en a plusieurs, comme CODE, DATE, SECTION...). En principe, chaque élément porte un nom unique. Si tel n'est pas le cas, l'élément doit appartenir à une structure qui a, elle même, un nom unique. Si tel n'est pas non plus le cas, la structure doit appartenir à une structure qui possède un nom unique. Si tel n'est pas le cas... (voir qualification des noms). A- Formation des noms Un nom acceptable est composé d'au plus 30 caractères. Ces caractères peuvent être des lettres (en majuscules ou en minuscules), des nombres ou des tirets. L'espace n'est pas admis. Un mot ne peut ni commencer, ni finir par un tiret. Il doit contenir au moins une lettre (sauf s'il s'agit d'un nom de paragraphe ou de section). NOMCLIENT, X33, 5P100, DATE-ARRIVEE sont des noms acceptables. Contrairement à d'autres langages, il est d'usage d'adopter des noms significatifs et de réserver des noms tels I, J, A, WTOT aux cas -rares- où leur sémantique est "évidente". B- FILLER, nom anonyme Il existe un nom passe-partout, anonyme, qui sert dans certains cas bien précis (et UNIQUEMENT dans la division des données) où le format de la donnée a plus d'importance que son nom. Ce nom est FILLER, ce que l'on peut traduire par JOINT (ou BOUCHE-TROU). Prenons l'exemple d'une ligne d'édition, dans laquelle il y a deux zones utiles espacées l'une de l'autre d'un trou, d'une zone vide. Cette ligne, appelons-la L1, sera décrite ainsi : 01 L1. 02 FILLER 02 L FILLER 02 L FILLER Bien entendu, du fait que ces zones sont nommées de façon anonyme, le programmeur qui les met en place s'interdit de les utiliser dans la partie procédure. Il ne pourra faire référence qu'à L1, L1-1 ou L1-2. C- Qualification des noms Pour rendre unique deux variables ayant le même nom, on utilise le principe de la qualification. Celle-ci consiste à définir la structure à laquelle appartient la variable que l'on veut désigner sans ambiguïté en associant les deux noms par OF ou IN (ces deux prépositions jouant le même rôle). Ainsi, dans l'exemple suivant : 01 ADRESS1. 02 RUE. 03 NOM 03 NUMERO 02 VILLE. 03 CODEPOSTAL 03 NOM devrons-nous parler de NOM OF RUE (ou de NOM IN RUE) ou de NOM OF VILLE (ou de NOM IN VILLE). Il n'est pas possible de qualifier un nom de structure associé au niveau 01, un nom de variable élémentaire (associé à 77), un nom de condition (88) ou un nom de variable redéfinissant une série de variables (66). Une telle pratique est à éviter. Elle alourdit les programmes et les rend plus difficiles à comprendre. Elle a un seul avantage, celui de permettre des mouvements groupés de données (voir l'ordre MOVE correspondant) Formats des données A- Généralités A chaque variable NON STRUCTUREE correspond un format. Celui-ci s'annonce par le mot COBOL PICTURE (que l'on abrège le plus souvent en PIC). 77 WTOTAL PICTURE Format 77 WTOTAL PIC Format sont donc deux déclarations équivalentes. 01 ADRESS1. 02 RUE. 03 NOM PIC 03 NUMERO PIC 02 VILLE. 03 CODEPOSTAL PIC 03 NOM PIC Seules les variables NOM OF RUE, NUMERO, CODEPOSTAL et NOM OF VILLE ont un format. Ce sont en effet les seules variables non structurées. Il y a plusieurs types de format ; nous en verrons trois dans cette partie. Pour les autres, voir dans la partie Extensions (et notamment le paragraphe consacré aux éditions). Les trois principaux formats correspondent à des variables numériques, alphabétiques et alphanumériques. Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 23 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 24 / 95

13 B- Formats numériques Une variable numérique a le type 9. Ceci signifie qu'elle peut prendre une valeur absolue (ie. non signée) comprise entre 0 et un nombre fonction du nombre de chiffres réservés pour la variable. Ce nombre s'indique comme suit : PIC 9 PIC 9(1) PIC 999 PIC 9(3) PIC 9(12) 1 chiffre 1 chiffre 3 chiffres 3 chiffres 12 chiffres Le nombre maximum de chiffres pour une variable numérique est 18. Pour les nombres réels, deux symboles supplémentaires sont disponibles, le S (pour le signe) et le V (pour la virgule). Ils s'emploient comme ceci : A PIC S9 B PIC 9V9 C PIC S99V99 Signe et virgule sont VIRTUELS, c'est-à-dire qu'ils n'occupent pas de place en mémoire. Cela aussi pour conséquence qu'ils ne sont pas imprimables (du moins pas avec ce format). Reprenons les exemples précédents et voyons ce que signifient ces déclarations : A est un entier relatif d un chiffre, donc compris entre 9 et +9 ; B est un réel non signé ayant une seule décimale, compris entre 0,0 et 9,9 ; C est un réel signé ayant deux chiffres avant et deux chiffres après la virgule. A, s'il est affiché (par un ordre DISPLAY) ou écrit (par un ordre WRITE), occupera une seule position ; B en occupera deux et C quatre. Il existe d'autres signes. Voir la partie Extensions. C- Format alphabétique Une variable alphabétique a le format A. Ceci signifie qu'elle peut prendre pour valeur une lettre (de A à Z, en majuscule ou en minuscule) ou un espace. ATTENTION, ce format n'accepte ni les tirets, ni les apostrophes. Pas de nom composé donc, ni de noms bretons. "LE GOUALC'H" n'est pas une valeur alphabétique en COBOL. Ce format a tendance à être remplacé par le suivant, plus "large". D- Format alphanumérique Une variable acceptant comme valeur n'importe quel caractère a le format X. E- Exemple Si, maintenant, nous reprenons l'exemple précédent des employés, nous pouvons le complèter comme suit : Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 25 / EMPLOYE. 02 PERSONNE. 03 NOMPERSONNE PIC X(20). 03 PRENOMPERSONNE PIC X(15). 03 DATENAISSANCE PIC 9(8). 02 ADRESSE1. 03 NOMRUE PIC X(30). 03 NUMERORUE PIC CODEPOSTAL PIC 9(5). 03 NOMVILLE PIC X(25). 02 NUMEROEMPLOYE PIC XXX. 02 SALAIRE 9(4)V DATEARRIVEE 9(8). Les deux variables DATENAISSANCE et DATEARRIVEE ne sont guère pratiques ; elles sont composées de huit chiffres sans distinction. Si l'on veut manipuler séparément jour, mois, année, il faudra déclarer ces dates comme une structure. Nous laissons le lecteur le faire (en cas de doute, voici la réponse) Valeurs initiales A- Déclaration La première chose à faire consiste à signaler au système que la variable a une valeur initiale, en utilisant le mot réservé VALUE (il n'y a pas d'abréviation, cette fois-ci). Dans l'exemple ci-après, WTOTAL a une valeur initiale, WI non. 77 WTOTAL PIC 9(4) VALUE WI PIC 9. Il faut ensuite fournir la valeur. Il y a trois façons d'affecter A LA DECLARATION cette valeur initiale à une variable de travail. NB : le faire pour les zones tampons associées aux fichiers n'a aucun sens, celles-ci étant initialisées par le système lors de l'exécution du premier ordre de lecture (ou par le programme lors de l'exécution du premier ordre d'écriture). B- Constantes La première est de fournir directement la valeur en clair, les nombres étant indiqués à l'américaine (sauf si, dans la division de l'environnement, il a été dit que l'on travaillait à l'européenne, grâce à la clause DECIMAL-POINT IS COMMA), les chaînes de caractères, les caractères alphabétiques étant fournis entre guillemets (certains compilateurs utilisant également l'apostrophe) : 77 WTOTAL PIC 9(4) VALUE WTOTAL PIC S9 VALUE WCHAINE PIC X(10) VALUE "BONJOUR". Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 26 / 95

14 Il n'y a aucune surprise à redouter au niveau du stockage de ces valeurs initiales. Les nombres sont cadrés à droite (une valeur de 8 dans une variable de format 9(4) sera complétée A GAUCHE par des zéros), les chaînes de caractères à gauche (une valeur alphabétique égale à "TO" dans une variable de format A(10) sera complétée A DROITE par des espaces). NB : il est possible de changer cela. Voir la partie Extensions et le paragraphe consacré aux éditions. Le seul "problème" réside dans la présence potentielle, dans la chaîne de caractères, d'un de ceux qui servent de balise (guillemet ou apostrophe). Si tel est le cas, il faudra les doubler, comme le montre l'exemple ci-après : 77 WCHAINE PIC X(25) VALUE "TOUR D ITALIE". C- Constantes figuratives La seconde ne sert que dans certains cas bien précis. Elle illustre magistralement le caractère littéraire du langage COBOL. Il existe, en effet, plusieurs constantes prédéfinies que l'on peut affecter aux variables. Parmi celles-ci, on peut citer : SPACE, SPACES ZERO, ZEROS, ZEROES HIGH-VALUE, HIGH-VALUES LOW-VALUE, LOW-VALUES NB : singulier ou pluriel, l'effet est le même. Ces constantes sont appelées constantes FIGURATIVES. espace, espaces zéro constante formée de 1 binaires "partout" constante formée de 0 binaires "partout" 01 WLIGNE. 02 FILER PIC X(30) VALUE SPACES. 02 WLIGNE-L1 PIC X(25). 02 FILLER PIC X(45) VALUE SPACES. L'exemple ci-dessus permet de définir une structure WLIGNE composée d'une zone appelée WLIGNE-L1 de cinq caractères alphanumériques non initialisée, encadrée par deux zones anonymes (FILLER) initialisées à blanc toutes les deux. D- Répétition de caractères Lorsque la chaîne de caractères à initialiser comporte un certain nombre de caractères identiques (différents de ceux "atteints" par les constantes figuratives), il est possible de préciser que la variable, la chaîne, est remplie de ce caractère en employant le mot ALL. 77 WLIGNE PIC X(80) VALUE ALL "-". Cette ligne WLIG-TIRETS est composée de 80 tirets. NB : on n'emploie pas ALL pour les zéros, les espaces... VALUE ALL ZERO est équivalent à VALUE ZEROS... et à VALUE ZERO, l'orthographe des mots n'ayant ICI aucune importance. 4.3 Définition des fichiers Un fichier peut être assimilé à un porte CD. Définir un porte CD, c'est définir le type de CD qui peut y être stocké (par hypothèse, pour un fichier, il n'y a qu'un seul type d'enregistrement) et également donner quelques éléments sur le porte CD lui-même (à qui il appartient...). La définition d'un fichier comprend donc deux parties, identifiables, désignées dans le programme par les symboles FD et 01, tous deux en colonne 8. FILE SECTION. FD FOUVR 01 FEMPLOYE Cette pseudo-description définit le fichier FOUVR et son tampon FEMPLOYE. Il doit y avoir concordance entre le nom du fichier (FOUVR dans l'exemple) et le nom désigné dans la clause SELECT dans la division de l'environnement. C'est le même nom Description du fichier lui-même La description a considérablement évolué depuis "notre" temps. Elle comprend au minimum le nom donné dans le programme au fichier et la désignation du tampon associé. Dans certains cas, elle peut être complétée par : une notion de bloc, un label, une indication de longueur variable. A- Nom interne donné au fichier Le nom interne du fichier, c'est celui qui est employé dans le programme (par opposition au nom externe, qui sert au système). Ce nom est régi par les règles s'appliquant aux noms créés par le programmeur (pas plus de 30 caractères alphabétiques). C'est le même que celui que l'on a utilisé dans la clause SELECT. B- Désignation du tampon Le tampon du fichier lui est associé grâce à la clause DATA RECORD. Sa syntaxe est la suivante : DATA RECORD IS Nom-TAMPON DATA RECORDS ARE Nom-TAMPON[[,] Nom-tampon2] NB : singulier ou pluriel, l'effet est le même. Ces tampons font l'objet, chacun, d'une description. Sauf indication contraire, ils ont tous la même longueur. S'il y a plusieurs tampons, il est important de noter qu'ils occuperont TOUS la MEME zone physique. Il s'agit donc, en fait, d'une simple redéfinition de zone mémoire et pas d'une duplication. C- Notion de bloc Certains fichiers sont structurés de façon telle que les enregistrements sont regroupés en blocs : Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 27 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 28 / 95

15 4.4 Variables de travail Par variable de travail, nous entendons toute variable élémentaire ou toute structure qui n'est pas associée aux tampons des fichiers. Ces variables sont le plus souvent (ce n'est pas une obligation) initialisées. Nous employerons tous les éléments de description présentés dans le paragraphe précédent (cf Format des données) et notamment les notions de nombre-niveau, nom, format. Une valeur initiale peut en compléter la description. Voici, à titre d'exemple, deux extraits de deux programmes contenant plusieurs variables de travail. Le premier renferme, dans la WORKING-STORAGE SECTION, une description d'état avec quatre lignes-type. Le second correspond à un programme de manipulation de fichiers avec, dans la section appropriée, toutes les variables associées (qu'il s'agisse de tampons annexes, d'indicateurs de fin de fichier... ). Il y a deux avantages à ce regroupement. La place perdue est moindre (on gagne N-1 "trous" par bloc lors d'un groupage par N) et le temps de lecture est accéléré (le bloc est chargé tout entier en mémoire, puis dégroupé en mémoire centrale, ce qui va plus vite que de transférer les articles les uns après les autres). Si ce dispositif est en place pour le fichier à décrire, il faut l'annoncer. Ceci se fait en utilisant la clause suivante : BLOCK CONTAINS Nombre RECORDS Le mot RECORDS peut être omis! Attention, toutefois. Cela signifie qu'il n'y a qu'un enregistrement par bloc et qu'il a une taille de Nombre caractères. Nous ne développerons, dans ce cours, ni la clause LABEL, ni le cas des articles de longueur variable Description du tampon Le tampon correspond à la zone recevant chaque enregistrement lu et/ou chaque enregistrement à écrire. Il s'agit soit d'une variable structurée, soit d'une variable simple. Dans les DEUX cas, le nombre niveau du tampon est 01. On peut donc avoir : 01 FEMPLOYE PIC X(30). 01 FEMPLOYE. 02 FNOM PIC X(20). 02 FPRENOM PIC X(10). L'usage de ces deux tampons ne sera pas le même, ils n'en sont pas moins deux zones mémoires parfaitement définies d'un point de vue syntaxe. Ces zones tampons ne doivent pas être initialisées lors de leur déclaration, mais par programme, le plus souvent grâce à un ordre MOVE. Il est possible, mais peu fréquent, de définir deux tampons pour un seul fichier. Ils doivent alors avoir la même longueur. Ils peuvent, par contre, avoir des structures différentes (c'est même le seul intérêt!). Cette duplication est toutefois peu utilisée, dans la mesure où elle altère un peu la lisibilité du programme et où il est tout à fait possible de faire autrement. Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 29 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 30 / 95

16 Exemples de programmes COBOL Avertissement Les exemples qui sont présentés dans cette partie de cours sont, dans la quasi-totalité des cas, des "oeuvres" d'étudiants. Ils correspondent à des programmes qui "tournent". Ils ont été rédigé dans un dialecte de COBOL, celui produit par la société Legacy et appellé Percobol. Les programmes ont été compilé avec succès. Ils ont également fait l'objet d'un test par un enseignant, dans un environnement Linux/Dec. Ils peuvent donc être considérés comme un exemple fiable, parfaitement transposable (à des variations près de compilateurs) dans un autre environnement. ===> Pour éviter une perte de place, nous avons éliminé de la présentation du code les six premiers caractères. Le bord gauche de l'écran correspond donc à la colonne 7. <=== Tous les programmes, qu'il s'agisse de simples extraits ou de programmes complets, sont numérotés (selon une numérotation séquentielle continue). Ces numéros serviront de référence pour identifier clairement l'exemple en cas de dialogue apprenant-professeur. Plutôt que de parler du programme qui édite un état des ventes, il faudra, par exemple, parler du programme P37. Exemple P01 Cet extrait de programme renferme, dans la WORKING-STORAGE SECTION, une description d'état avec quatre lignes. IDENTIFICATION DIVISION. PROGRAM-ID. CRSEQEMP. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FEMP ASSIGN TO "empseq.dat". SELECT FLIST ASSIGN TO "empseq.lst". DATA DIVISION. FILE SECTION. FD FEMP. O1 F-EMPRUNT. 02 F-NOID PIC F-NOM PIC X(20). 02 F-PRENOM PIC X(20). 02 F-ADRESSE PIC X(25). FD FLIST. O1 F-LIGNE PIC X(80). WORKING-STORAGE SECTION. O1 W-L1. 02 FILLER PIC X(20) VALUE SPACES. 02 FILLER PIC X(21) VALUE "LISTE DES EMPLOYE(E)S". 02 FILLER PIC X(39) VALUE SPACES. O1 W-L2. 02 FILLER PIC X(11) VALUE " NUM IDENT.". 02 FILLER PIC X(5) VALUE SPACES. 02 FILLER PIC X(3) VALUE "NOM". 02 FILLER PIC X(17) VALUE SPACES. 02 FILLER PIC X(6) VALUE "PRENOM". 02 FILLER PIC X(21) VALUE SPACES. Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 31 / FILLER PIC X(7) VALUE "ADRESSE". 02 FILLER PIC X(10) VALUE SPACES. O1 W-L3. 02 FILLER PIC X(5) VALUE SPACES. 02 W-L3-IDENT PIC ZZ9. 02 FILLER PIC X(4) VALUE SPACES. 02 W-L3-NOM PIC X(20). 02 FILLER PIC X(1) VALUE SPACE. 02 W-L3-PRENOM PIC X(20). 02 FILLER PIC X(1) VALUE SPACES. 02 W-L3-ADRESSE PIC X(25). 02 FILLER PIC X(1) VALUE SPACE. O1 W-L4. 02 FILLER PIC X(80) VALUE ALL "-". 77 W-FIN PIC A. 77 W-VALID PIC A. 77 W-SUIV PIC A. Exemple P03 Cet extrait de programme correspond à un programme de manipulation de fichiers avec, dans la section appropriée, toutes les variables associées (qu'il s'agisse de tampons annexes, d'indicateur de fin de fichier...). IDENTIFICATION DIVISION. PROGRAM-ID. prog_p7. AUTHOR. Bastien et Johan. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FETUD ASSIGN TO "fetud.dat". SELECT FETUD-IND-CRE ASSIGN TO "fetudindcre.dat" ORGANIZATION INDEXED RECORD KEY NUM-IND-CRE ALTERNATE RECORD KEY NOM-IND-CRE WITH DUPLICATES ALTERNATE RECORD KEY ANAISS-IND-CRE WITH DUPLICATES. SELECT FETUD-IND ASSIGN TO "fetudind.dat" ORGANIZATION INDEXED ACCESS IS DYNAMIC RECORD KEY NUM-IND ALTERNATE RECORD KEY NOM-IND WITH DUPLICATES ALTERNATE RECORD KEY ANAISS-IND WITH DUPLICATES. DATA DIVISION. FILE SECTION. FD FETUD. O1 ETUDIANT. 02 NUM PIC NOM PIC X(20). 02 PRENOM PIC X(20). 02 ADRESSE PIC X(40). 02 ANAISS PIC 9(4). FD FETUD-IND-CRE. O1 ETUDIANT-IND-CRE. 02 NUM-IND-CRE PIC NOM-IND-CRE PIC X(20). 02 PRENOM-IND-CRE PIC X(20). 02 ADRESSE-IND-CRE PIC X(40). 02 ANAISS-IND-CRE PIC 9(4). FD FETUD-IND. O1 ETUDIANT-IND. 02 NUM-IND PIC 999. Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 32 / 95

17 02 NOM-IND PIC X(20). 02 PRENOM-IND PIC X(20). 02 ADRESSE-IND PIC X(40). 02 ANAISS-IND PIC 9(4). WORKING-STORAGE SECTION. O1 ETUDIANTW. 02 NUMW PIC NOMW PIC X(20). 02 PRENOMW PIC X(20). 02 ADRW PIC X(40). 02 ANAISSW PIC 9(4). 77 NOM-CLE PIC X(20). 77 NUM-CLE PIC CHOIXMENU PIC X. 88 QUITTE VALUE "Q" "q". 88 CHOIX-OK VALUE "Q" "q". 77 FINFIC PIC A. 88 FINFIC VALUE "O". 88 PASFINFIC VALUE "N". 77 SUIVANT PIC A. 88 SUIVANT VALUE "S" "s". 88 QUITTER VALUE "Q" "q". 77 AUTRECLE PIC A. 88 AUTRECLE VALUE "O" "o". 88 PASAUTRECLE VALUE "N" "n". 77 EXISTE PIC A. 88 EXISTE VALUE "O". 88 NONEXISTE VALUE "N". NB : les noms de variables ne satisfont aux critères de qualité que nous présentons dans le chapitre consacré aux liens entre COBOL et le génie logiciel. Une version améliorée de cet exemple est repris dans ce dernier chapitre (voir normes de programmation). COBOL, un langage de programmation 5. Coder l'algorithme Les diverses instructions COBOL que nous avons choisi de présenter sont décrites dans cette partie. Elles sont rangées en cinq paquets, chacun ayant une fonction précise. On trouve ainsi des instructions permettant : de contrôler la structure du programme (IF, EVALUATE, PERFORM), de calculer (COMPUTE, ADD, SUBTRACT, MULTIPLY, DIVIDE), de manipuler des variables (MOVE), de dialoguer (ACCEPT, DISPLAY), d effectuer des entrées-sorties (OPEN, CLOSE, READ, WRITE, REWRITE, DELETE, START). 5.1 Instructions de contrôle Généralités Dans ce premier paquet, nous avons placé trois instructions conditionnelles parmi les plus utilisées, à savoir l'alternative (IF), la structure de choix (EVALUATE) et l'appel de module (PERFORM). Plus généralement, il existe une vingtaine d'instructions dites conditionnelles. Ce sont des instructions qui ont comme caractéristiques : de contenir au moins une condition, de devoir être délimitées, soit par un délimiteur (END-xxx), soit par un point. La logique qui prévaut pour ces conditionnelles est traditionnelle, dans le sens où : 15/12/05 la condition est testée ; - si elle est vraie, l'instruction (ou le paquet d'instructions) est (sont) exécutée(s). L'instruction suivante est ensuite exécutée. - si elle est fausse, il y a exécution de l instruction suivant la conditionnelle A propos de conditions Il y a des conditions simples et des conditions composées. Les conditions composées sont obtenues par combinaison de conditions simples à l'aide des opérateurs logiques AND, OR, NOT. En cas de formules complexes, il est utile de recourir au parenthèsage. Une condition simple permet de comparer des variables entre elles ou par rapport à des constantes (>, =, <, >=, <=, <>), de tester le format d'une variable (ALPHABETIC, NUMERIC), de tester le signe d'une variable unique (POSITIVE, NEGATIVE, ZERO) et de tester une valeur particulière en utilisant les variables définies en 88 : 01 WPERSONNE. 02 WETATCIVIL PIC "X". 88 MARIE VALUE "M". 88 CELIBATAIRE VALUE "C". 88 AUTRE VALUE "D" "P". Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 33 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 34 / 95

18 . On pourra ainsi utiliser IF MARIE au lieu de IF WETATCIVIL = "M". Il est possible de nommer une plage de valeurs (prises par des variables qui peuvent évoluer de façon continue). Ainsi pourra-t-on classer les personnes en fonction de leur âge, comme suit : 01 WPERSONNE. 02 WAGE PIC ENFANT VALUE 0 THRU ADO VALUE 6 THRU ADULTE VALUE 18 THRU SENIOR VALUE 80 THRU ANOMALIE VALUE 110 THRU 999. Il existe, enfin, d'autres conditions, de type événementiel, qui sont associées à chaque instruction conditionnelle (AT END pour l'ordre de lecture dans un fichier, ON SIZE ERROR pour un ordre de calcul...). Elles sont vues avec ces instructions Ordre IF L'ordre IF a la syntaxe suivante : IF Condition THEN Instructions1 [ELSE Instructions2] END-IF La condition peut être simple ou composée, parenthèsée ou non. La série d'instructions 1, comme la série 2, est constituée d'instructions non délimitées par un point. Elles peuvent contenir des instructions conditionnelles, dès l'instant où celles-ci sont terminées par les délimiteurs appropriés (END-xxx) et pas par des points. Ceux-ci jouent, en effet, le rôle de super-delimiteur, un seul suffisant à "fermer" (souvent mal!) toute une série de conditionnelles imbriquées les unes dans les autres Ordre EVALUATE L'instruction EVALUATE a plusieurs syntaxes possibles. Voici la plus courante : EVALUATE Nom-variable WHEN Constante1 Instructions1 [WHEN Constante2 Instructions2] [WHEN OTHER InstructionsN] END-EVALUATE Son comportement est le suivant : le contenu de la variable est évalué. S'il est égal à la valeur Constante1, la série d'instructions 1 est exécutée ; s'il est égal à la constante 2, c'est la série d'instructions 2 qui est exécutée... S'il n'est égal à aucune des valeurs mentionnées, la série d'instructions N est exécutée. Dans tous les cas, une fois le "bon" paquet exécuté, il y a saut à l'instruction qui suit EVALUATE. EVALUATE WCHOIX WHEN "A" PERFORM PAR-A WHEN "B" PERFORM PAR-B WHEN "Q" DISPLAY "AU REVOIR" WHEN OTHER DISPLAY "ERREUR" END-EVALUATE. Il est toujours possible (mais non souhaitable) de remplacer un EVALUATE par une série de IF imbriqués : ou, sans les décalages : IF WCHOIX = "A" THEN PERFORM PAR-A ELSE IF WCHOIX = "B" THEN PERFORM PAR-B ELSE IF WCHOIX = "Q" THEN DISPLAY "AU REVOIR" ELSE DISPLAY "ERREUR" END-IF END-IF END-IF. IF WCHOIX = "A" THEN PERFORM PAR-A ELSE IF WCHOIX = "B" THEN PERFORM PAR-B ELSE IF WCHOIX = "Q" THEN DISPLAY "AU REVOIR" ELSE DISPLAY "ERREUR" END-IF Ordre PERFORM L'ordre PERFORM est un des ordres les plus utilisés en COBOL pour produire des programmes structurés. Il permet d'exprimer plusieurs ruptures de séquence : une boucle Tantque, avec le PERFORM UNTIL, une boucle Pour, avec le PERFORM VARYING, une boucle Répéter, avec le PERFORM WITH TEST AFTER, une sorte d appel de sous-programme interne, avec ce que nous appelons le PERFORM «simple». NB : il ne s'agit pas d'un vrai appel de sous-programme, celui-ci s'effectuant via l'instruction CALL (vue dans la partie Extensions, paragraphe Sous-programmes). Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 35 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 36 / 95

19 Avant de passer en revue ces diverses options, "deux" mots sur la notion de paragraphe. A- À propos de paragraphes Un paragraphe, dans un programme COBOL, c'est une série d'instructions qui : a un nom, déclaré en zone A, se termine soit par la fin du programme, soit par le début du paragraphe suivant. PROCEDURE DIVISION. DEBUT. Instruction A Instruction B Instruction C. BOUCLE. Instruction D Instruction E. FIN. Instruction F Instruction G. Dans ce programme, il y a trois paragraphes, DEBUT, BOUCLE et FIN. DEBUT a trois instructions, A, B et C. BOUCLE en a deux, D et E. Le dernier, FIN, comprend les instructions F et G. Pour rendre encore plus claire la portée d'un paragraphe XXX, certains programmeurs adoptent la pratique qui consiste à ajouter des paragraphes "vides", ne contenant que l'instruction EXIT (elle ne fait rien...) et ayant pour nom FIN-XXX : PROCEDURE DIVISION. DEBUT. Instruction A Instruction B Instruction C. FIN-DEBUT. EXIT. BOUCLE. Instruction D Instruction E. FIN-BOUCLE. EXIT. FIN. Instruction F Instruction G. FIN-FIN. EXIT. B- Le PERFORM "simple" L'ordre PERFORM "simple" a la syntaxe suivante : Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 37 / 95 PERFORM Nom-paragraphe1 [THRU Nom-paragraphe2] L'effet de cet ordre est d'exécuter toutes les instructions comprises dans le paragraphe 1, ainsi que celles qui sont comprises dans les paragraphes suivants jusqu'à la fin du paragraphe 2 si la clause THRU est présente. PERFORM BOUCLE PERFORM BOUCLE THRU FIN-BOUCLE PERFORM DEBUT THRU BOUCLE Il y a une deuxième forme possible pour ce PERFORM "simple" : PERFORM Instructions END-PERFORM D, E D, E, EXIT soit D, E A, B, C, EXIT, D, E soit A, B, C, D, E Les instructions contenues entre les mots PERFORM et END-PERFORM ne doivent pas être délimitées par des points. PERFORM PARA THRU PARB. PARA. Instruction A. PARB. Instruction B. PERFORM Instruction A Instruction B END-PERFORM. Ces deux schémas de traduction sont équivalents. C- Le PERFORM comme un Tantque Si l'on ajoute au PERFORM "simple" la clause UNTIL condition, on a une boucle Tantque. La syntaxe de ce PERFORM est la suivante : PERFORM Nom-paragraphe1 [THRU Nom-paragraphe2] UNTIL Condition Il s'agit réellement d'une boucle Tantque : la condition est testée AVANT exécution du (ou des) paragraphe(s). Si elle est vérifiée, il y a exécution. Sinon, la série d'instruction est sautée. Comme pour le PERFORM "simple", on peut regrouper les instructions et les insérer entre PERFORM et END- PERFORM : PERFORM UNITL WFIN = "V" Instruction A Instruction B Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 38 / 95

20 END-PERFORM. Les programmeurs confirmés et les étudiants ayant un minimum de connaissances en algorithmique le savent, une boucle Tantque est une structure de contrôle qui permet d effectuer une suite d opérations tant qu une condition, dite condition de fin, est vérifiée. On peut la paraphraser en disant «tant que la condition est vraie, faire» et la représenter ainsi : NB : la forme avec END-PERFORM est également autorisée. Voici comment, par exemple, on peut exécuter 52 fois un paragraphe AFFICHAGE : PERFORM AFFICHAGE VARYING WI FROM 1 BY 1 UNTIL WI > 52. WI étant une variable déclarée avec le format 99. COBOL utilise l instruction de contrôle PERFORM UNTIL pour exprimer cette itération. Une traduction litérale de ces deux termes donne «faire jusqu à». Le titre de notre paragraphe (le PERFORM comme un Tantque) est donc un peu exagéré. Nous aurions sans aucun doute dû dire «Le PERFORM comme un DOWHILE». D- Le PERFORM comme un Répéter Si l'on rajoute au PERFORM précédent (celui qui correspond à une boucle Tantque) la clause WITH TEST AFTER, la boucle Tantque se transforme en une boucle Répéter. La syntaxe du PERFORM modélisant un Répéter est donc : PERFORM Nom-paragraphe1 [THRU Nom-paragraphe2] WITH TEST AFTER UNTIL Condition ou encore : PERFORM WITH TEST AFTER UNTIL Condition Instructions END-PERFORM Si le précédent PERFORM exprime un DO WHILE et celui-ci un REPEAT, quelle est donc la différence entre les deux? Elle est simple et fondamentale : dans le premier cas (le DO WHILE, le Tantque), le test est effectué AVANT d entrer dans la boucle ; dans le second (le REPEAT, le Répéter), le test est effectué APRÈS être entré dans la boucle ; dans le premier cas, le test porte sur la NON-condition ; dans le second, le test porte sur la condition. E- Le PERFORM comme un Pour Il est possible de représenter une boucle Pour avec un PERFORM, en utilisant l'option VARYING. Celle-ci s'écrit comme suit : VARYING Nom-variable1 FROM Nom-variable2 BY Nom-variable3 syntaxe dans laquelle Nom-variable2 et Nom-variable3 (PAS 1) peut être une variable ou une constante. Le PERFORM boucle Pour s'écrit donc : PERFORM Nom-paragraphe1 [THRU Nom-paragraphe2] VARYING Nom-variable1 FROM Nom-variable2 BY Nom-variable3 UNTIL Condition Voici, enfin, comment parcourir A L'ENVERS un tableau (pour plus de précisions sur ces tableaux, voir la partie Extensions, paragraphe Tableaux) : PERFORM VARYING WI FROM 15 BY 1 UNTIL WI = 0 Instructions avec TAB (WI) END-PERFORM. NB : il existe une forme encore plus complexe de PERFORM, permettant de manipuler des tableaux à 2 ou 3 dimensions. Elle est décrite dans le paragraphe Tableaux de la partie Extensions. F- A propos d'imbrications de PERFORM Il est possible d'imbriquer ces PERFORM à la condition qu'il s'agisse vraiment d'imbrication. Dès l'instant où les paragraphes imbriqués ont une intersection non nulle, l'imbrication devient impossible. Pour prendre une image, les poupées russes OUI, les anneaux olympiques NON. Lorsque l instruction PERFORM est imbriquée dans une autre instruction PERFORM, il est parfois possible d omettre le END-PERFORM «intérieur» : Figure n Instructions de calcul Généralités Il y a cinq instructions dans ce paquet, quatre spécifiques et une généraliste. Les instructions spécifiques permettent de mettre en oeuvre les quatre opérations, addition, soustraction, multiplication et division. La dernière, COMPUTE, peut servir pour tout type d'opération. Dans tous les cas, deux clauses permettent de prendre en compte les exceptions, qu'il s'agisse d'arrondi (clause ROUNDED) ou de dépassement de capacité (clause ON SIZE ERROR). Leur syntaxe est la suivante : ROUNDED ON SIZE ERROR InstructionsN Le dépassement de capacité survient lorsque le résultat du calcul ne peut être stocké dans la variable prévue pour "accueillir" le résultat (overflow), lors d'une division par zéro... Si tel est le cas, la séquence d'instruction InstructionN est exécutée. La variable résultat ne reçoit pas la valeur erronée... ce qui évite le dépassement de capacité. Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 39 / 95 Document rédigé par Alain VAILLY, le 16/10/12 à 15:10 Page 40 / 95

Traitement de texte : Quelques rappels de quelques notions de base

Traitement de texte : Quelques rappels de quelques notions de base Traitement de texte : Quelques rappels de quelques notions de base 1 Quelques rappels sur le fonctionnement du clavier Voici quelques rappels, ou quelques appels (selon un de mes profs, quelque chose qui

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Chapitre 2 Devine mon nombre!

Chapitre 2 Devine mon nombre! Python 3 : objectif jeux Chapitre 2 Chapitre 2 Devine mon nombre! 2.1. Thèmes abordés dans ce chapitre commentaires modules externes, import variables boucle while condition : if... elif... else la fonction

Plus en détail

Créer une base de données

Créer une base de données Access Créer une base de données SOMMAIRE Généralités sur les bases de données... 3 Création de la base de données... 4 A) Lancement d'access... 4 B) Enregistrement de la base de données vide... 4 Création

Plus en détail

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE 2 ème partie : REQUÊTES Sommaire 1. Les REQUÊTES...2 1.1 Créer une requête simple...2 1.1.1 Requête de création de listage ouvrages...2 1.1.2 Procédure de

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels Yann-Gaël Guéhéneuc Professeur adjoint guehene@iro.umontreal.ca, local 2345 Département d informatique et de recherche

Plus en détail

GUIDE Excel (version débutante) Version 2013

GUIDE Excel (version débutante) Version 2013 Table des matières GUIDE Excel (version débutante) Version 2013 1. Créer un nouveau document Excel... 3 2. Modifier un document Excel... 3 3. La fenêtre Excel... 4 4. Les rubans... 4 5. Saisir du texte

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

MODE OPERATOIRE OPENOFFICE BASE

MODE OPERATOIRE OPENOFFICE BASE MODE OPERATOIRE OPENOFFICE BASE Openoffice Base est un SGBDR : Système de Gestion de Base de Données Relationnelle. L un des principaux atouts de ce logiciel est de pouvoir gérer de façon efficace et rapide

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

1. Introduction...2. 2. Création d'une requête...2

1. Introduction...2. 2. Création d'une requête...2 1. Introduction...2 2. Création d'une requête...2 3. Définition des critères de sélection...5 3.1 Opérateurs...5 3.2 Les Fonctions...6 3.3 Plusieurs critères portant sur des champs différents...7 3.4 Requête

Plus en détail

Importer les fichiers élèves - professeurs du secrétariat

Importer les fichiers élèves - professeurs du secrétariat Importer les fichiers élèves - professeurs du secrétariat Fiche technique PMB n 3.1. Objectif : Récupérer la base de données élèves (et professeurs) du secrétariat avec le numéro de code Aplon (établi

Plus en détail

SOMMAIRE. Travailler avec les requêtes... 3

SOMMAIRE. Travailler avec les requêtes... 3 Access Les requêtes SOMMAIRE Travailler avec les requêtes... 3 A) Créer une requête sélection en mode QBE... 3 B) Exécuter une requête à partir du mode Modifier (QBE)... 3 C) Passer du mode Feuille de

Plus en détail

Débuter avec OOo Base

Débuter avec OOo Base Open Office.org Cyril Beaussier Débuter avec OOo Base Version 1.0.7 Novembre 2005 COPYRIGHT ET DROIT DE REPRODUCTION Ce support est libre de droit pour une utilisation dans un cadre privé ou non commercial.

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Publipostage avec Calc

Publipostage avec Calc Auto-formation sur OpenOffice.org 2.0 par Cyril Beaussier Version 1.0.2 - Avril 2006 Publipostage avec Calc Sommaire Introduction... 2 Présentation... 3 Notions... 4 Les données... 5 Lettre type... 7 Création

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Instructions et spécifications pour la transmission en format XML de déclarations par lots. 30 mai 2015 MODULE 1

Instructions et spécifications pour la transmission en format XML de déclarations par lots. 30 mai 2015 MODULE 1 Instructions et spécifications pour la transmission en format XML de déclarations par lots 30 mai 2015 MODULE 1 Table des matières Modifications apportées dans la présente... 3 1 Renseignements généraux...

Plus en détail

MEDIAplus elearning. version 6.6

MEDIAplus elearning. version 6.6 MEDIAplus elearning version 6.6 L'interface d administration MEDIAplus Sommaire 1. L'interface d administration MEDIAplus... 5 2. Principes de l administration MEDIAplus... 8 2.1. Organisations et administrateurs...

Plus en détail

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents Diffusé par Le Projet Documentation OpenOffice.org Table des Matières 1. Les Versions...3 2. Les Modifications...5

Plus en détail

Installation et Réinstallation de Windows XP

Installation et Réinstallation de Windows XP Installation et Réinstallation de Windows XP Vous trouvez que votre PC n'est plus très stable ou n'est plus aussi rapide qu'avant? Un virus a tellement mis la pagaille dans votre système d'exploitation

Plus en détail

Chapitre 1 I:\ Soyez courageux!

Chapitre 1 I:\ Soyez courageux! Chapitre 1 I:\ Soyez courageux! Pour ne rien vous cacher, le langage d'assembleur (souvent désigné sous le terme "Assembleur", bien que ce soit un abus de langage, puisque "Assembleur" désigne le logiciel

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5

1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5 1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Le publipostage avec Open Office

Le publipostage avec Open Office Le publipostage avec Open Office Distribué par Le projet OpenOffice.org Les informations contenues dans ce document peuvent faire l objet de modifications sans préavis. Les noms et les données utilisés

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Mémo d'utilisation de BD Dico1.6

Mémo d'utilisation de BD Dico1.6 Mémo d'utilisation de BD Dico1.6 L'application BDDico a été développée par la Section Cadastre et Géomatique de la RCJU. Son utilisation demeure réservée aux personnes autorisées. Les demandes d'utilisation

Plus en détail

Apprendre à manipuler le clavier Médiathèque de Bussy Saint-Georges APPRENDRE A MANIPULER LE CLAVIER

Apprendre à manipuler le clavier Médiathèque de Bussy Saint-Georges APPRENDRE A MANIPULER LE CLAVIER APPRENDRE A MANIPULER LE CLAVIER Apprendre à manipuler le clavier SOMMAIRE : I APPRENDRE A TAPER AU CLAVIER... PAGES 3-11 1.1 - Positionnement des touches d'un clavier... Page 3 1.2 - Les touches importantes

Plus en détail

EXCEL PERFECTIONNEMENT CALCULS AVANCES

EXCEL PERFECTIONNEMENT CALCULS AVANCES TABLE DES MATIÈRES FORMATS... 2 Formats personnalisés... 2 ADRESSAGE DE CELLULES... 3 relatif & absolu Rappel... 3 Adressage par nom... 4 Valider avec la touche Entrée... 4 FONCTIONS SI-ET-OU... 6 LA FONCTION

Plus en détail

Annexe : La Programmation Informatique

Annexe : La Programmation Informatique GLOSSAIRE Table des matières La Programmation...2 Les langages de programmation...2 Java...2 La programmation orientée objet...2 Classe et Objet...3 API et Bibliothèque Logicielle...3 Environnement de

Plus en détail

Manuel d'utilisation d'apimail V3

Manuel d'utilisation d'apimail V3 Manuel d'utilisation d'apimail V3 I Préambule Page 3 II Présentation Page 4 III Mise en route Configuration Page 5 Messagerie Serveur smtp Serveur pop Compte pop Mot de passe Adresse mail Laisser les messages

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Les bases de données Page 1 / 8

Les bases de données Page 1 / 8 Les bases de données Page 1 / 8 Sommaire 1 Définitions... 1 2 Historique... 2 2.1 L'organisation en fichier... 2 2.2 L'apparition des SGBD... 2 2.3 Les SGBD relationnels... 3 2.4 Les bases de données objet...

Plus en détail

Présentation de GnuCash

Présentation de GnuCash Par Jean-Marc St-Hilaire De JMS Informatique Enr. Jean-Marc St-Hilaire a une formation en programmation et en comptabilité (H.E.C.) Cette présentation est disponible à www.jmsinformatique.com/ateliers

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons Guide d'utilisation OpenOffice Calc AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons 1 Table des matières Fiche 1 : Présentation de l'interface...3 Fiche 2 : Créer un nouveau classeur...4

Plus en détail

Le chiffre est le signe, le nombre est la valeur.

Le chiffre est le signe, le nombre est la valeur. Extrait de cours de maths de 6e Chapitre 1 : Les nombres et les opérations I) Chiffre et nombre 1.1 La numération décimale En mathématique, un chiffre est un signe utilisé pour l'écriture des nombres.

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX TABLE DES MATIERES Livret Utilisateur Excel 2007 Niveau 2 INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX... 4 Les tableaux croisés dynamiques... 4 Création d un tableau croisé... 5 Comparer des

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Rapidolect Les Productions de la Columelle (1998-2006) Page 1

Rapidolect Les Productions de la Columelle (1998-2006) Page 1 Page 1 Page 2 Logiciel Rapidolect RATIONNEL DU JEU Un bon lecteur possède dans sa tête des images précises des mots écrits qu'il connaît. Lorsqu'il parcourt un texte, ses yeux se déplacent par saccades

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Leçon 11 PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Dans cette leçon, nous retrouvons le problème d ordonnancement déjà vu mais en ajoutant la prise en compte de contraintes portant sur les ressources.

Plus en détail

A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Source : http://amcubat.be/docpmb/import-de-notices

A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Source : http://amcubat.be/docpmb/import-de-notices A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Comme beaucoup de personnes, j'ai voulu récupérer les notices de mon ancien logiciel de gestion de bibliothèque. Vu qu'il ne prévoyait pas

Plus en détail

Interface PC Vivago Ultra. Pro. Guide d'utilisation

Interface PC Vivago Ultra. Pro. Guide d'utilisation Interface PC Vivago Ultra Pro Guide d'utilisation Version 1.03 Configuration de l'interface PC Vivago Ultra Configuration requise Avant d'installer Vivago Ultra sur votre ordinateur assurez-vous que celui-ci

Plus en détail

Comment mettre en page votre livre

Comment mettre en page votre livre GUIDE - ImprimermonLivre.com Comment mettre en page votre livre www.imprimermonlivre.com 1 V. 20131125 Conseils pour la mise en page de votre ouvrage L objectif de ce guide est de vous aider à réaliser

Plus en détail

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B Excel : Réalisation d un classeur Compta Saisir les étiquettes Renommer la première feuille Compta Laisser la première ligne vide et sur la deuxième ligne saisir les étiquettes Se placer sur A2 et saisir

Plus en détail

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER.

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER. COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER. 1. Comment déplacer ou copier un fichier sur Windows Vous aurez régulièrement besoin de déplacer ou dupliquer des fichiers sur votre ordinateur. Par exemple

Plus en détail

CREG : http://www.creg.ac- versailles.fr/spip.php?article803

CREG : http://www.creg.ac- versailles.fr/spip.php?article803 OUTILS NUMERIQUES Édu-Sondage : concevoir une enquête en ligne Rédacteur : Olivier Mondet Bla. 1 Présentation Parmi les pépites que contient l Édu-Portail, l application Édu-Sondage est l une des plus

Plus en détail

Introduction : Cadkey

Introduction : Cadkey Introduction Cadkey Cadkey est un logiciel de dessin assisté par ordinateur. La fenêtre du logiciel devrait ressembler à quelque chose comme suit: Le menu supérieur: Redraw Autoscale Efface Modifier les

Plus en détail

VOS PREMIERS PAS AVEC TRACENPOCHE

VOS PREMIERS PAS AVEC TRACENPOCHE Vos premiers pas avec TracenPoche page 1/16 VOS PREMIERS PAS AVEC TRACENPOCHE Un coup d'oeil sur l'interface de TracenPoche : La zone de travail comporte un script, une figure, un énoncé, une zone d analyse,

Plus en détail

LibreOffice Calc : introduction aux tableaux croisés dynamiques

LibreOffice Calc : introduction aux tableaux croisés dynamiques Fiche logiciel LibreOffice Calc 3.x Tableur Niveau LibreOffice Calc : introduction aux tableaux croisés dynamiques Un tableau croisé dynamique (appelé Pilote de données dans LibreOffice) est un tableau

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

Plus en détail

Parcours FOAD Formation EXCEL 2010

Parcours FOAD Formation EXCEL 2010 Parcours FOAD Formation EXCEL 2010 PLATE-FORME E-LEARNING DELTA ANNEE SCOLAIRE 2013/2014 Pôle national de compétences FOAD Formation Ouverte et A Distance https://foad.orion.education.fr Livret de formation

Plus en détail

Chapitre 1 : Introduction aux bases de données

Chapitre 1 : Introduction aux bases de données Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données

Plus en détail

Excel avancé. Frédéric Gava (MCF) gava@univ-paris12.fr

Excel avancé. Frédéric Gava (MCF) gava@univ-paris12.fr Excel avancé Frédéric Gava (MCF) gava@univ-paris12.fr LACL, bâtiment P2 du CMC, bureau 221 Université de Paris XII Val-de-Marne 61 avenue du Général de Gaulle 94010 Créteil cedex Rappels et compléments

Plus en détail

Base de données relationnelle et requêtes SQL

Base de données relationnelle et requêtes SQL Base de données relationnelle et requêtes SQL 1e partie Anne-Marie Cubat Une question pour commencer : que voyez-vous? Cela reste flou Les plans de «Prison Break»? Non, cherchons ailleurs! Et de plus près,

Plus en détail

Titres de créances NégOciables Refonte Informatique et organisationnelle

Titres de créances NégOciables Refonte Informatique et organisationnelle Titres de créances NégOciables Refonte Informatique et organisationnelle S P E C I F I C A T I O N S D E S FLUX D E R A C H A T S P O R T A G E E N V O Y E S P A R LES D O M I C I L I A T A I R E S VERSION

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Manuel de mise en page de l intérieur de votre ouvrage

Manuel de mise en page de l intérieur de votre ouvrage Manuel de mise en page de l intérieur de votre ouvrage Merci de suivre strictement les recommandations de ce manuel qui a pour but de vous aider à préparer un livre dont la qualité de mise en page est

Plus en détail

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/2011. 1.1 Présentation. 1.2 Ressources

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/2011. 1.1 Présentation. 1.2 Ressources Master Maths Finances 2010/2011 Data Mining janvier 2011 RapidMiner 1 Introduction 1.1 Présentation RapidMiner est un logiciel open source et gratuit dédié au data mining. Il contient de nombreux outils

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

http://cri.univ-lille1.fr Virtualisation de Windows dans Ubuntu Linux

http://cri.univ-lille1.fr Virtualisation de Windows dans Ubuntu Linux http://cri.univ-lille1.fr Virtualisation de Windows dans Ubuntu Linux Version 1.0 Septembre 2011 SOMMAIRE 1. Introduction 3 2. Installation du logiciel de virtualisation VirtualBox 4 3. Création d'une

Plus en détail

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version 1.0 30/11/05

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version 1.0 30/11/05 EXCEL PERFECTIONNEMENT Version 1.0 30/11/05 SERVICE INFORMATIQUE TABLE DES MATIERES 1RAPPELS...3 1.1RACCOURCIS CLAVIER & SOURIS... 3 1.2NAVIGUER DANS UNE FEUILLE ET UN CLASSEUR... 3 1.3PERSONNALISER LA

Plus en détail

Access 2007 FF Access FR FR Base

Access 2007 FF Access FR FR Base ACCESS Basic Albertlaan 88 Avenue Albert Brussel B-1190 Bruxelles T +32 2 340 05 70 F +32 2 340 05 75 E-mail info@keyjob-training.com Website www.keyjob-training.com BTW TVA BE 0425 439 228 Access 2007

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU N de série Siège social 107, rue Henri Barbusse BP305-92111 CLICHY Cedex 1 Sommaire Description 1. Installation 2. Mise

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

l'ordinateur les bases

l'ordinateur les bases l'ordinateur les bases Démarrage de l'ordinateur - Le bureau, mon espace de travail - J'utilise la souris - Ouvertes ou fermées, les fenêtres - Dans l'ordinateur, tout est fichier - Le clavier : écrire,

Plus en détail

Documentation utilisateur. [EIP] TransLSF

Documentation utilisateur. [EIP] TransLSF Documentation utilisateur [EIP] TransLSF Henri HARDILLIER - Thomas MOREL - Florian JOUSSEAU Alexis MONNIER - Keo KHEMARA - Leo MARTIN Stéphane RICARDO Résumé Ce document présente la documentation destinée

Plus en détail

MDI Chèque de Allégroupe Réclamation

MDI Chèque de Allégroupe Réclamation Introduction MDI Chèque de Allégroupe Réclamation MDIChèques est une suite logique d' Allégroupe Réclamation. Une fois que l'adjudicateur a pris la décision de payer le lot, il fait une Requête de paiement

Plus en détail

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista)

Tutorial Ophcrack. I) Ophcrack en API. (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista) Tutorial Ophcrack (ou comment utiliser Ophcrack pour recouvrir un mot de passe sous Windows XP et Windows Vista) Ophcrack est un utilitaire gratuit permettant de cracker les mots de passe des sessions

Plus en détail

MODE D'EMPLOI DU CONTRIBUTEUR WEB UAPV "CONTRIBUER DANS UNE RUBRIQUE DU SITE WEB"

MODE D'EMPLOI DU CONTRIBUTEUR WEB UAPV CONTRIBUER DANS UNE RUBRIQUE DU SITE WEB MODE D'EMPLOI DU CONTRIBUTEUR WEB UAPV "CONTRIBUER DANS UNE RUBRIQUE DU SITE WEB" Quelques conseils pour bien contribuer 1 Paramétrer votre navigateur web 2 Accéder au module de gestion des pages web 2

Plus en détail

TRAVAILLER SUR LES ORDINATEURS DU LYCEE

TRAVAILLER SUR LES ORDINATEURS DU LYCEE TRAVAILLER SUR LES ORDINATEURS DU LYCEE TRAVAILLER SUR LES ORDINATEURS DU LYCEE Ouvrir et fermer une session, éteindre le poste...3 Ouvrir une session...3 Fermer une session...4 Eteindre le poste...5 L'environnement

Plus en détail

SAP BusinessObjects Web Intelligence (WebI) BI 4

SAP BusinessObjects Web Intelligence (WebI) BI 4 Présentation de la Business Intelligence 1. Outils de Business Intelligence 15 2. Historique des logiciels décisionnels 16 3. La suite de logiciels SAP BusinessObjects Business Intelligence Platform 18

Plus en détail

EXCEL TUTORIEL 2012/2013

EXCEL TUTORIEL 2012/2013 EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi

Plus en détail

Escalade durant l'e.p.s. à l'école primaire

Escalade durant l'e.p.s. à l'école primaire Escalade durant l'e.p.s. à l'école primaire Fabrice Paget B.E.E.S Escalade Tél : +336 88 31 14 72 fabrice.paget@orange.fr 1 Glossaire Effectifs Durée des séances Atelier escalade sans être encordée Traversées

Plus en détail

IV- Comment fonctionne un ordinateur?

IV- Comment fonctionne un ordinateur? 1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Algorithmique avec Algobox

Algorithmique avec Algobox Algorithmique avec Algobox 1. Algorithme: Un algorithme est une suite d instructions qui, une fois exécutée correctement, conduit à un résultat donné Un algorithme doit contenir uniquement des instructions

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Manuel de SQUIRRELMAIL à l'usage des étudiants.

Manuel de SQUIRRELMAIL à l'usage des étudiants. Manuel de SQUIRRELMAIL à l'usage des étudiants. SQUIRRELMAIL 1 est une interface Web (Webmail) utilisée pour traiter le courrier électronique à travers le réseau Internet. Un avantage d'une telle méthode

Plus en détail

v7.1 SP2 Guide des Nouveautés

v7.1 SP2 Guide des Nouveautés v7.1 SP2 Guide des Nouveautés Copyright 2012 Sage Technologies Limited, éditeur de ce produit. Tous droits réservés. Il est interdit de copier, photocopier, reproduire, traduire, copier sur microfilm,

Plus en détail

1 è r e étape : créer sa base de d o n n é e s

1 è r e étape : créer sa base de d o n n é e s Le publipostage (ou mailing) permet à un document (le document principal créé avec Open Office Writer) de profiter des informations se trouvant dans un autre document (la source de données créée avec Open

Plus en détail

CATALOGUE DES FORMATIONS

CATALOGUE DES FORMATIONS CATALOGUE DES FORMATIONS COURS THEMATIQUES MIGRATION À WINDOWS 10... 1 WORD: LES TABLEAUX... 2 WORD: MODÈLES ET FORMULAIRES... 3 WORD: PUBLIPOSTAGE... 4 WORD: LES LONGS DOCUMENTS... 5 WORD: PUBLICATION...

Plus en détail

http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla

http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla http://cri.univ-lille1.fr Sauvegarde et restauration d'un système d'exploitation Clonezilla Version 1.0 Septembre 2011 SOMMAIRE 1. Introduction 3 2. Définitions 3 3. Principes généraux 3 4. Clonezilla

Plus en détail

Comment créer un diagramme de Gantt avec OpenOffice.org

Comment créer un diagramme de Gantt avec OpenOffice.org Comment créer un diagramme de Gantt avec OpenOffice.org Version 1.9 du 05.05.2005 Réalisé avec : OOo 2.0 Plate-forme / Os : Toutes Distribué par le projet Sommaire 1 Une rapide introduction : Diagramme

Plus en détail

Cycle III Brevet Informatique & Internet Niveau 1. "Je pense être capable

Cycle III Brevet Informatique & Internet Niveau 1. Je pense être capable Cycle III Brevet Informatique & Internet Niveau 1 A.J. - 11/01 Elève : Date de naissance : 1 Maîtriser les premières bases de la technologie informatique 1-1 désigner avec précision les éléments constitutifs

Plus en détail