Qu’est-ce que COBOL et pourquoi tant d’institutions en dépendent?



Le chef de l’exécutif du New Jersey a récemment évoqué le COBOL, un langage de programmation sexagénaire. Mais qu’est-ce que c’est, concrètement ? Et comment se fait-il qu’il demeure un pilier du secteur financier, alors que son utilisation est méconnue de la plupart ?

Les racines du COBOL

Grace Hopper était une figure exceptionnelle. Titulaire d’un doctorat en mathématiques de Yale, professeure à Vassar, elle a gravi les échelons de l’US Navy jusqu’au grade de contre-amiral. Ses contributions au domaine de l’informatique sont attestées par les nombreuses fondations et programmes créés en son hommage. Le Centre national de calcul scientifique pour la recherche énergétique a baptisé son supercalculateur Cray XE6 en son honneur. La Marine a également donné son nom à un destroyer lance-missiles, l’USS Hopper. La devise du navire, « Aude et Effice » (« Oser et faire »), aurait pu être forgée en pensant à Hopper.

Animée par la volonté de concevoir un langage de programmation plus proche de l’anglais que le langage machine compris par les ordinateurs, Hopper a élaboré le premier compilateur. Cette innovation a ouvert la voie aux premiers langages compilés, tels que le FLOW-MATIC. Elle a ainsi obtenu un siège à la Conférence/Commission sur les langages de systèmes de données (CODASYL) en 1959.

Elle a également joué un rôle majeur dans la définition et le développement du COBOL (Common Business-Oriented Language). La première réunion a eu lieu le 23 juin 1959, et son rapport ainsi que la spécification du langage COBOL ont suivi en avril 1960.

Le COBOL : une révolution

Le COBOL recelait des concepts novateurs. Le plus notable était sans doute sa capacité à fonctionner sur des équipements fabriqués par différents constructeurs, une prouesse inédite à l’époque.

Ce langage était élaboré et proposait un vocabulaire proche de l’anglais, facilitant le travail des programmeurs. Il était conçu pour traiter des volumes de données colossaux et garantir une précision mathématique exceptionnelle.

Son lexique de mots-clés (les mots qui constituent le langage) avoisine les 400. Un programmeur agence ces mots-clés de manière syntaxiquement cohérente pour créer un programme.

Tout programmeur familier avec d’autres langages vous confirmera que 400 est un nombre impressionnant de mots-clés. À titre de comparaison, le langage C en compte 32, et Python, 33.

Une autre particularité du COBOL réside dans son exigence stricte quant à la position de certaines lignes de programme dans des colonnes spécifiques. C’est un vestige de l’époque des cartes perforées. De nos jours, les programmeurs jouissent d’une plus grande liberté dans la mise en forme du COBOL et n’ont plus l’obligation de tout saisir en majuscules. Cela a rendu son utilisation moins contraignante et moins austère, tout en conservant la marque de son époque, comme l’illustre l’exemple suivant :

IDENTIFICATION DIVISION.
      PROGRAM-ID. Hello-World.
      DATA DIVISION.
      FILE SECTION.
      WORKING-STORAGE SECTION.
      PROCEDURE DIVISION.
      MAIN-PROCEDURE.
           DISPLAY "Hello world, from toptips.fr!"
           STOP RUN.
      END PROGRAM Hello-World.

Le COBOL : un succès retentissant

La majorité des transactions effectuées aux distributeurs automatiques de billets (DAB) reposent encore sur le COBOL.

Bien qu’il puisse paraître désuet aujourd’hui, le COBOL a été une révolution lors de son lancement. Il a conquis le secteur financier, le gouvernement fédéral et les grandes entreprises et organisations. Son succès s’explique par son adaptabilité, ses capacités de traitement par lots et sa rigueur mathématique. Il s’est installé dans des ordinateurs centraux à travers le monde, a pris racine et a prospéré. Telle une mauvaise herbe tenace, il refuse de disparaître.

Notre dépendance vis-à-vis des systèmes fonctionnant encore sous COBOL est sidérante. Un rapport de Reuters datant de 2017 a dévoilé les statistiques stupéfiantes suivantes :

220 milliards de lignes de code COBOL sont encore utilisées à ce jour.
Le COBOL est le socle de 43 % de tous les systèmes bancaires.
Les systèmes alimentés par COBOL gèrent des transactions commerciales quotidiennes de l’ordre de 3 000 milliards de dollars.
Le COBOL assure le fonctionnement de 95 % des lecteurs de cartes de guichets automatiques.
Le COBOL rend possible 80 % de toutes les transactions par carte de crédit en personne.

Comme vous pouvez le constater, il est difficile de passer une journée sans utiliser un système qui dépend du COBOL. Les comptes bancaires et les services de compensation de chèques, ainsi que les infrastructures destinées au public, telles que les guichets automatiques et les feux de signalisation, fonctionnent toujours grâce à ce code écrit il y a plusieurs décennies.

Le COBOL : un problème de taille

Les programmeurs maîtrisant le COBOL sont soit retraités, soit sur le point de l’être, soit décédés. Nous perdons régulièrement des personnes qui possèdent les compétences nécessaires pour assurer le bon fonctionnement de ces systèmes essentiels. Les jeunes développeurs n’ont pas de connaissances en COBOL. De plus, la plupart ne souhaitent pas travailler sur des systèmes qui nécessitent la maintenance d’un code obsolète ou la rédaction d’un nouveau.

Le problème est tel que Bill Hinshaw, un vétéran du COBOL, a été contraint de sortir de sa retraite pour fonder COBOL Cowboys. Cette société de conseil privée propose ses services aux entreprises clientes désespérées qui ne trouvent nulle part des développeurs qualifiés en COBOL. Les « jeunes » de COBOL Cowboys (dont la devise est « Not Our First Rodeo ») sont dans la cinquantaine. Ils estiment que 90 % des systèmes des entreprises du classement Fortune 500 fonctionnent sous COBOL.

Bien évidemment, les entreprises privées, les sociétés et les banques ne sont pas les seules à avoir besoin de traiter des quantités gigantesques de données financières. Les services gouvernementaux fédéraux, provinciaux et locaux ont les mêmes exigences. Comme tous les autres, ils utilisent des ordinateurs centraux et le COBOL pour y parvenir.

Les conséquences désastreuses de la pandémie de coronavirus ont engendré des licenciements, des décès et une incertitude économique pour les chefs d’entreprise, les employés et les travailleurs indépendants. Le nombre considérable de salariés mis au chômage technique et licenciés dans le New Jersey a conduit le gouverneur à lancer un appel aux programmeurs COBOL expérimentés pour venir en aide aux systèmes informatiques vieillissants de l’État. Ceux-ci peinent à faire face aux 326 000 nouvelles inscriptions.

L’Open Mainframe Project mène une initiative bénévole pour apporter son concours. Si vous pensez pouvoir aider, ils seront ravis de vous entendre.

Le New Jersey n’est pas seul dans cette situation délicate. Plus de 10 millions de personnes se sont inscrites au chômage, et ce chiffre ne cesse d’augmenter. Le Connecticut a du mal à traiter un quart de million de nouvelles inscriptions sur les systèmes de l’État vieux de 40 ans.

Le problème est vaste et profondément ancré. Un rapport de 2016 du Government Accountability Office a recensé des systèmes COBOL fonctionnant sur des ordinateurs centraux datant de 53 ans. Il s’agit notamment des systèmes utilisés pour traiter les données relatives au ministère des Anciens Combattants, au ministère de la Justice et à la Social Security Administration.

Pourquoi ne pas migrer et mettre à niveau, comme on le ferait normalement ?

La mise à niveau de ces systèmes anciens n’est pas aussi simple qu’il n’y paraît. Ces systèmes sont des points d’appui essentiels, fonctionnant 24 heures sur 24 et 7 jours sur 7, sur lesquels reposent les mondes financier, gouvernemental et commercial. Le code est ancien, à plusieurs niveaux et, souvent, mal, voire pas du tout documenté. De plus, il doit fonctionner, en permanence. Cette situation a été comparée à l’opération consistant à retirer les hélices d’un avion pour essayer de les remplacer par des moteurs à réaction, en plein vol.

Outre le risque, l’argument économique en faveur d’une migration vers des systèmes modernes est également difficile à défendre. L’argent qui a été investi pour maintenir ces ordinateurs centraux et ces applications COBOL opérationnels est colossal. Les institutions doivent-elles tout abandonner et repartir de zéro, alors que le code COBOL est toujours en service et fonctionnel ? C’est un pas difficile à franchir pour une instance qui n’est peut-être pas particulièrement à l’aise avec la technologie. Une migration COBOL ne sera ni bon marché, ni rapide.

« Je viens de terminer une migration du COBOL vers Java », a déclaré Hinshaw. « Cela leur a pris quatre ans, et ils n’en sont toujours pas venus à bout. »

Lorsque la Commonwealth Bank of Australia a remplacé sa plateforme COBOL de base en 2012, il a fallu cinq ans, pour un coût final de 749,9 millions de dollars (1 milliard de dollars australiens).

Et ce, quand tout se passe comme prévu. Une banque britannique, TSB, a été contrainte de migrer d’un système basé sur COBOL en 2018 suite à un rachat. L’opération ne s’est pas déroulée sans encombre. La banque ayant été incapable d’effectuer des transactions pendant plusieurs jours, le coût de la migration a finalement atteint 330 millions de livres. Cette somme s’ajoutait au budget prévu pour les travaux d’ingénierie de la migration elle-même. TSB a également perdu 49,1 millions de livres à cause de fraudes financières, tandis que ses systèmes étaient en proie à des défaillances.

L’indemnisation des clients a dépassé 125 millions de livres et la banque a dû dépenser 122 millions de livres pour embaucher du nouveau personnel afin de traiter les 204 000 plaintes de clients. Le directeur général a démissionné et l’entreprise s’efforce toujours de réparer les dégâts deux ans après cet événement.

L’énigme du COBOL

La situation actuelle ne peut perdurer, mais la perspective de prendre des mesures n’est guère attrayante. Néanmoins, la seule façon d’améliorer la situation est d’effectuer des migrations contrôlées et prudentes vers des logiciels et du matériel modernes.

Pour réussir cette transition sans interruption, sans perte de données et sans temps d’arrêt, il faudra disposer d’une expertise moderne et de moyens financiers, ce qui représente 50 % de l’équation. L’autre moitié réside dans l’expertise et le temps nécessaires au COBOL. Malheureusement, ce sont précisément les deux ingrédients qui font le plus défaut.

Peut-être qu’une nouvelle génération de cow-boys du COBOL se lancera dans l’aventure.