
Cobol est LE langage increvable de l’informatique. C’est le 18 septembre 1959 que la première version du langage apparaît officiellement. Le chantier du langage démarre quelques mois auparavant, le 8 avril. Durant une réunion, les premières spécifications sont discutées sur un nouveau langage qui s’appelera COBOL (Commun Business-Oriented Language). Il s’inspire énormément de FLOW-MATIC. Le projet fut renforcé fin mai avec des ressources provenant aussi bien d’éditeurs et de constructeurs privés (notamment IBM, RCA, Honeywell) et des agences gouvernementales (US Air Force, US Navy et le National Bureau of Standards).
Le nom COBOL fut acté en septembre 59 et les spécifications complètes du langage furent définitivement figées en décembre. Mais il faut attendre 1960 pour voir les premiers compilateurs. Et en décembre 60, la compilation du même code COBOL sur deux ordinateurs différent fut réalisée avec succès. Une première dans l’histoire de l’informatique naissante.
Cobol est indissociable de Grace Hopper. Pionnière de l’informatique, il joue un rôle central dans la définition du langage et sa création. Mais son travail va bien au-delà :
- Supervision de la création du langage Math-Matic qui est en développement dès 1955.
- Flow-Matic : en développement à partir de 1955 pour les environnements Univac
Un langage simple répondant aux besoins
COBOL est, par conception, un langage orienté métier, gestion. Il a un grand mérite : il décrit précisément les choses que l’on souhaite qu’il fasse. Jusqu’à présent, les langages étaient difficiles à maîtriser, proche du langage machine ou encore des cartes perforées (eh oui pas de clé USB ni de SSD en 1959-60). L’un des objectifs des travaux autour d’un nouveau langage était de créer quelque chose facile à écrire et à lire. C’est pour cela que COBOL a une syntaxe et une structure proche du langage naturel. Et naturellement, il utilise une syntaxe anglaise.
Il faut comprendre que COBOL répondait à un besoin des entreprises et des administrations : un langage capable de traiter les données et d’en fournir les résultats (via un affichage). COBOL sera une véritable révolution en ce domaine. Comme le big data, il y a quelques années. Et son concept d’origine répond parfaitement à ce besoin orienté donnée. Il gère les données, les traite et permet d’afficher les informations demandées. Ce n’est pas pour rien si COBOL a été massivement utilisé dans les banques, assurances, mutuelles, RH, compatibilité et les administrations publiques.
Mais, cette simplicité rencontre sa limite avec les besoins de transactions qui explosent et la masse de données qui ne cesse d’augmenter. Les temps de traitement s’allongent et il faut adapter les vieux codes. En COBOL, il n’est pas possible d’exprimer, ou très mal, des algorithmes très complexes, ni de faire des expressions lambda ou d’utiliser la notion de classe ou de coroutines. COBOL est un langage très structuré mais on ne peut pas le comparer à un langage natif comme C++ ni à un langage dynamique. Il n’est pas fait pour ça.
La dernière version normalisée est le Cobol 2014.
Une structure qui peut étonner
COBOL ne gère pas la sensibilité à la case, donc majuscule et minuscule, c’est la même chose. Les 3 opérateurs booléens n’étaient pas symbolisés dans la syntaxe. Par conception, il reconnaît 52 caractères (chiffres, lettres, caractères spéciaux), une instruction peut tenir sur plusieurs lignes, mais il faut respecter le colonnage, etc.
COBOL étant structuré, il impose une logique hiérarchique :il n’est pas permissif. Il existe 4 divisions (grosso modo des blocs de code ayant chacune une utilité précise dans le programme COBOL) qui elles-mêmes contiennent des sections qui sont formées de paragraphes. Chaque paragraphe commence par une étiquette et contient des phrases se terminant par un point (comme le ; que l’on oublie souvent). Chaque phrase est une ligne de code contenant des instructions et elle commence forcément par un verbe avec, si besoin, des clauses (en quelque sorte des paramètres).
La division identification est obligatoire. C’est la « fiche » informative du programme avec son nom, des commentaires, etc. La division « environnement » décrit l’environnement d’exécution : système monétaire, signe décimal, etc.
On dispose de boucles conditionnelles, tellement pratiques en programmation : if, then, else, end-if. On peut faire appel à des sous-programmes et des boucles. On gère aussi les Entrées/Sorties : par exemple avec l’instruction display.
Par exemple :
DISPLAY formulaire-fiche. : on affiche le formulaire ayant pour nom « formulaire-fiche ». L’instruction ACCEPT « accepte » les données saisies dans le formulaire et les garde en mémoire.
À l’époque de la création du COBOL, les cartes perforées étaient utilisées pour les programmes. Elles font 80 colonnes. C’est pour cela qu’un code COBOL se limitait à 80 colonnes, pour ne pas déborder de la carte perforée (si, si)
Ainsi, on comprend pourquoi le COBOL s’organise en colonnes :
1-6 : pour le numéro de la page et les numéros de lignes. Obsolète.
7 : ligne réservée pour * (commentaire), - pour les phrases sur plusieurs lignes, / pour stopper l’impression, D pour le debug…
8-72 : c’est là que l’on écrit le code proprement dit. Les colonnes 8-11 sont pour les divisions, sections et paragraphes. C’est que l’on appelle l’AREA A. Les colonnes 12 à 72, c’est tout le reste : les phrases. C’est l’AREA B.
73-80 : obsolète. Ne doit absolument contenir de code. Le compilateur ne prenait pas en charge ces colonnes. C’est là que l’on trouvait le nom du programme, de l’écran, du serveur, le nom de la macro, etc.