CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
COBOL - Wikipédia

COBOL

Un article de Wikipédia, l'encyclopédie libre.

Vous avez de nouveaux messages (diff ?).
image:Langage_progr.png
Cet article fait partie de la série
Langages de programmation
Langages à objets
C++ - C#
Delphi - Eiffel - Java
Groovy - Python - Ruby
Simula - Smalltalk
Visual Basic - WinDev
Langages impératifs
APL - ASP - Assembleur
BASIC - C - Cobol
Forth - Fortran - Logo
Pascal - Limbo - Perl - PHP
Langages fonctionnels
Haskell - ML/OCaml
Lisp/Common Lisp
Scheme
XSLT
Langages déclaratifs
Clips - Prolog
Langages concurrents
Ada 95 - Erlang
Langage de balisage
HTML - SGML - XML
S-expressions
Voir aussi
Conception - Codage
Tests - Optimisations

COBOL est un langage de programmation de troisième génération créé en 1959. Son nom est un acronyme (COmmon Business Oriented Language) qui révèle sa vocation originelle : être un langage commun pour la programmation d'applications de gestion. Le standard COBOL 2003 supporte en particulier la programmation orientée objet et d'autres traits des langages de programmation modernes.

Sommaire

[modifier] Préhistoire et spécifications

Le COBOL a initialement été créé en 1959 par le Short Range Committee, un des trois comités proposés à une rencontre au Pentagone en mai 1959 organisée par Charles Phillips du département de la défense des États-Unis. Le comité a été formé pour recommander une approche à court terme pour un langage commun, indépendant des constructeurs, pour les applications de gestion de l'administration américaine. Il était constitué de membres représentant six constructeurs d'ordinateurs et trois agences gouvernementales. Les six constructeurs informatiques étaient Burroughs Corporation, IBM, Minneapolis-Honeywell, RCA, Sperry Rand, et Sylvania Electric Products. Les trois agences du gouvernement étaient le US Air Force, le David Taylor Model Basin, et le National Bureau of Standards. Ce comité était présidé par un membre du NBS. Des comités à moyen et long terme ont également été proposés au Pentagone. En revanche, même si le premier a été fondé, il n'a jamais été opérationnel, et le dernier n'a jamais été fondé. En fin de compte, un sous-comité du Short Range Committee a été formé avec six membres :

  • William Selden et Gertrude Tierney de IBM ;
  • Howard Bromberg et Howard Discount de RCA ;
  • Vernon Reeves et Jean E. Sammet de Sylvania Electric Products.

Ce sous-comité a terminé les spécifications de COBOL fin 1959. Elles étaient largement inspirées par le langage FLOW-MATIC inventé par Grace Hopper, surnommée "la mère du langage COBOL", et par le langage COMTRAN d'IBM, inventé par Bob Bemer.

(Basé sur : J.E. Sammet. "The Early History of Cobol.", dans ACM SIGPLAN Notices, Volume 13 , Issue 8 (Août 1978) Numéro spécial : History of programming languages conference, pp.121-161, 1978. Egalement publié dans History of Programming Languages, édité par R.L. Wexelblat. new york: ACM Monograph Series, 1981.)

[modifier] Histoire des standards COBOL

Ces spécifications furent approuvées par le comité complet, puis par le comité exécutif en janvier 1960 et envoyées au bureau d'impression du gouvernement qui les édita et imprima en les nommant Cobol 60. Le langage fut développé en moins de six mois de travail, et il est encore en utilisation quarante ans plus tard, après plusieurs révisions standardisées par l'ANSI (American National Standards Institute), dont

  • COBOL-68
  • COBOL-74
  • COBOL-85
  • COBOL 2002

[modifier] Traits principaux

COBOL, comme défini dans la spécification originale, possédait d'excellentes capacités d'auto-documentation, des bonnes méthodes de gestion des fichiers et des types de données exceptionnellement bons pour l'époque, grâce à l'utilisation de la clause PICTURE pour détailler le format d'un champ. Comme la plupart des autres langages de l'époque, il ne permettait pas de définir des variables locales, des fonctions récursives et d'allouer de la mémoire dynamiquement.

La gestion des décimales en COBOL (nombres en virgule fixe), et la maîtrise des arrondis et des dépassements, permettent d'éviter les plusieurs problèmes qui arriveraient en utilisant des nombres à virgule flottante pour les calculs financiers.

Il intégrait également un générateur de rapports, les procédures de tri et de fusion et la communication. Un module optionnel permettait également une forme de communication inter-processus par file de messages.

Le parti-pris initial de définir un langage de programmation proche du langage naturel (comme pour FLOW-MATIC) devait faciliter, sinon la programmation, du moins l'audit des programmes COBOL par des gestionnaires non-informaticiens. Ce choix a eu pour conséquence une syntaxe lourde, avec de nombreux mots réservés, et des instructions compliquées qui valent à COBOL une réputation de verbosité.

On peut cependant remarquer qu'il est plus court (et plus clair) d'écrire

add Montant to Total-Jour, Total-Mois, Total-Annee.

en COBOL que

TotalJour  += Montant; 
TotalMois  += Montant; 
TotalAnnee += Montant;

pour faire la même chose en langage C !

Comme d'autres langages de l'époque (par exemple FORTRAN 2), COBOL offrait la possibilité de modifier du code pendant l'exécution à l'aide du fameux énoncé ALTER X TO PROCEED TO Y (altérer X pour aller vers Y). Cette possibilité dangereuse, qui transposait une technique courante de la programmation en langage machine, a été supprimée par la suite.

Les versions successives du standard ont modernisé le langage, par exemple en ajoutant des structures de contrôle améliorées et le support de la programmation objet, tout en préservant au maximum la compatibilité avec les versions précédentes, de façon à éviter d'avoir à modifier l'énorme stock de programmes COBOL en service.

[modifier] Le poids de l'héritage

Le langage COBOL était de loin le langage le plus employé dans les années 60 à 80, et reste toujours en utilisation dans des entreprises majeures, notamment dans les institutions financières qui disposent d'une vaste bibliothèque d'applications COBOL. Écrites à une époque où les octets coûtaient cher, et où l'an 2000 était encore fort loin, ces applications ont fait craindre le fameux bogue de l'an 2000 : on redoutait en effet que par mesure d'économie les programmeurs n'aient codé les années sur 2 chiffres plutôt que 4. En réalité, les banques et autres institutions financières qui gèrent depuis très longtemps des dossiers sur 10, 20 voire 30 ans (prêts par exemples) n'ont évidemment pas attendu l'hystérie journalistique de 1999 pour s'occuper du problème.

En 2005, le Gartner Group estimait que 75% des données du monde des affaires étaient traitées par des programmes en COBOL et que 15% des nouveaux programmes développés le seront dans ce langage.

COBOL reste le langage de choix dès qu'il s'agit d'effectuer des traitements comptables du fait de ses capacités arithmétiques en virgule fixe, notamment pour les traitements par lot où il présente d'excellentes performances. Mais, même si les évolutions de COBOL l'ont aujourd'hui doté de la plupart des outils fournis par les langages modernes (récursivité, allocation dynamique, objets, etc.), son usage reste confiné aux applications de gestion.

[modifier] Structure d'un programme en COBOL

Un programme comporte quatre divisions. La norme COBOL-85 ne rend obligatoire que la première.

  • IDENTIFICATION DIVISION.
Contient des informations générales sur le programme (dont le nom).
  • ENVIRONMENT DIVISION.
Contient des informations sur l'environnement (matériel et logiciel) dans lequel le programme s'exécute.
  • DATA DIVISION.
Contient les descriptions de données (variables, fichiers, paramètres et parfois description d'écran).
  • PROCEDURE DIVISION.
Contient la description des traitements effectués.

Chaque division est composée de 'sections', formées de 'paragraphes' composés de 'phrases' qui peuvent être des phrases impératives ou des clauses.

Les six premières colonnes de chaque ligne de programme sont considérées comme une zone de commentaire, servant autrefois à numéroter les cartes perforées (en cas de chute du paquet, il suffisait de les passer sur une trieuse pour reconstituer la version correcte du programme). La septième colonne contient un caractère de contrôle : espace pour les lignes actives, étoile pour les commentaires, etc.

Les compilateurs COBOL modernes permettent l'emploi d'un format libre qui n'impose plus le colonnage.


[modifier] Exemple de programme (Bonjour !)

Ecrit dans le style typique des programmes sur cartes perforées (années 60-70), avec lignes numérotées

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.    SALUTTOUS.
000300 DATE-WRITTEN.  21/05/05 19:04.
000400 AUTHOR.
000500 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. RM-COBOL.
000800 OBJECT-COMPUTER. RM-COBOL.
000900
001000 DATA DIVISION.
001100 FILE SECTION.
001200
100000 PROCEDURE DIVISION.
100100
100200 DEBUT.
100300     DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100400     DISPLAY "BONJOUR !" LINE 15 POSITION 10.
100500     STOP RUN.

[modifier] Exemple en format libre

Autre version du même exemple en COBOL-85 format libre :

Identification division. 
Program-id. Hello.
Procedure division.
    Display "Hello world!".
    Stop run.

[modifier] Standards

L'ANSI (American National Standards Institute (ANSI) a produit plusieurs révisions du standard COBOL (alias Cobol 60), notamment

  • COBOL-68
  • COBOL-74
  • COBOL-85 qui témoigne d'un grand pas vers l'adoption de la programmation structurée par l'industrie informatique
  • COBOL 2002 introduit la programmation objet, le support d'UNICODE, de XML etc.

[modifier] Voir aussi

PACBASE, un AGL qui génère du COBOL.

[modifier] Liens externes

Portail de l'informatique – Accédez aux articles de Wikipédia concernant l’informatique.
Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com