◦ Défis de la modernisation et choix de GnuCOBOL ◦ Premiers retours d’expérience • Présentation du compilateur libre GnuCOBOL ◦ Historique ◦ Spécificité ◦ Utilisation Industrielle ◦ Écosystème
Recherche à l’Inria (en disponibilité) ◦ Ex-enseignant à l’École Polytechnique ◦ Domaines: systèmes distribués et langages de programmation • Entrepreneur ◦ Move&Play, OriginLabs, OCamlPro (2011-) • Contributeur Open-Source ◦ En OCaml (MLDonkey, OCaml, etc.) et en C (strace, xterm, gnucobol, etc.) ◦ Membre du COPIL du Hub Open Source du cluster Systematic Paris Région
Atlantique • Parcours professionnel ◦ Directeur de projets à la Direction des Finances Publiques (DGFiP) depuis 2015 ◦ Responsable d’une cellule innovation ◦ A la DGFiP depuis 2002 ◦ Sur le projet MedocDB depuis 2019 ◦ Sur le projet de prélèvement à la source (2015 - 2018)
Des Opérations Comptables Les premières lignes de code Cobol ont été écrites en 1980 Exploitée sur GCos 7 En 1996, arrêt de la maintenance du GCos 7 En 2019, début du projet de migration afin de quitter le GCos En 2028, migration en production vers Linux puis extinction des GCos
sur une base hiérarchique séquentielle et indexée Le portage de cette base sur Z-OS est aussi voire plus coûteuse que son portage vers une base de données relationnelle Dans le contexte de la DGFiP, le choix se porte sur Linux, PostgreSQL qui sont la cible d’exploitation privilégiée Les batchs Cobols GCos sont à reprendre sur Linux. La ré-écriture n’est pas possible dans le calendrier, seul le portage est envisagé Les performances sont un point de vigilance
• la base de données relationnelle PostgreSQL 16, • Linux et • Cobol sous Linux Les JCLs sont transformés en Shells. Reste à trouver un compilateur Cobol sous Linux Le choix s’est naturellement porté sur GnuCobol avec une évolution sur le compilateur pour “comprendre” le dialecte GCos de Cobol
du compilateur sur quelques programmes batch L’orientation forte de la DGFiP sur l’utilisation des logiciels OpenSource L’appui d’un marché spécifique sur l’utilisation des logiciels OpenSource Un partenaire pour nous accompagner dans l’évolution nécessaire du compilateur dans sa compréhension du dialecte GCos du Cobol
ADN très académique • Conception de logiciels sur mesure “la haute couture du logiciel” • Expertise particulière sur les langages et les outils de développement 2021: 2 missions à la DGFiP: • Aide à la mise en production de Mlang, compilateur pour le langage M (calcul de l’Impôt sur le Revenu) ◦ Découverte de l’utilisation de COBOL à la DGFiP • Évaluation de la maturité des fonctionnalités du compilateur GnuCOBOL
L’un des premiers langage : né en 1959 (Grace Hopper), il vise à être à mi-chemin entre informatique et métier ~ langage naturel ◦ Pas de fonctions, mais des sauts vers des sections et paragraphes (PERFORM) ◦ Pas de variables locales, pas d’allocation dynamique ◦ Inclusion avec remplacement textuel (COPY) ◦ Plus de 500 mots clés ! IDENTIFICATION DIVISION. PROGRAM-ID. prog. DATA DIVISION. WORKING-STORAGE SECTION. 01 var-string PIC X(20) VALUE "Hello World". 01 amount PIC 9(5) VALUE 42. PROCEDURE DIVISION. DISPLAY var-string “ “ amount. END PROGRAM prog.
-> ISO2014 -> ISO2023 ◦ Ajout de la programmation structurée, des allocations dynamiques, des objets et classes, de la concurrence, etc. • Toujours utilisé dans de très nombreuses entreprises ◦ ~80 milliards de lignes de code => plus que tout autre langage ◦ 5-15% des lignes modifiées chaque année ◦ Fonctionnement en batch ou en serveur (CICS) • Pourquoi ? ◦ Langage simple, facile à apprendre, facile à relire ◦ Rapide, fiable et prédictible ◦ La migration vers un autre langage est risquée et pas forcément bénéfique
de mainframes fournit sa solution COBOL, avec des extensions spécifiques • Années 90 : peu de constructeurs survivent au passage à 64 bits • Aujourd’hui, il ne reste que : ◦ IBM sur les mainframes ◦ Microfocus sur PCs ◦ Fujitsu sur Mainframe et PCs • Les extensions au standard => système de lock-in empêchant les migrations entre environnements
prévisible: ◦ Microfocus a racheté la plupart des fournisseurs de compilateurs COBOL: ▪ AcuCOBOL (2007), RmCOBOL (2008), [...], CobolIT (2017) ◦ Microfocus a été rachetée par OpenText (2023), puis revendue à RocketSoftware (2024), l’un des principaux partenaires d’IBM • Pas de concurrence => pas d’efforts pour innover => coûts de licences très élevés • Problème de souveraineté pour nos infrastructures critiques
“Open Source Commercial”: ▪ COBOL-IT: racheté par Microfocus ◦ Open-Source Communautaire: ▪ GnuCOBOL: transpilation vers C ▪ OpenSourceCOBOL: transpilation vers Java • GCOBOL: frontend COBOL pour GCC ◦ Amélioration des performances et du débogage ◦ Utilisation du runtime de GnuCOBOL ◦ Support uniquement du dialecte Microfocus ◦ Projet très jeune (2023) mais prometteur
Nagoya, Japon) ◦ Compilateur de COBOL vers du code C illisible • 2008: fork par COBOL-IT ◦ Non respect de la licence GPL ▪ => Intégration dans le projet GNU de la FSF (Free Software Foundation) ◦ Développement caché de la version 2.0 • 2013: la version 2 est renommée GnuCOBOL • Version stable 3.2 en juillet 2023 (version 3.1 en 2020) • Développement en cours: ◦ Branche 3 sur “gnucobol-3.x” ◦ Branche 4 sur “trunk”
https://gnucobol.sourceforge.io/ (SVN, forums de discussion, bug tracker, FAQ, etc.) • OCamlPro fournit un mirroir GIT sur Github https://github.com/ocamlpro/gnucobol • Un projet conséquent: ◦ 56kSLOC (runtime) + 80kSLOC (Compilateur) ◦ Sur les 3 dernières années: ▪ >13 contributeurs ▪ >460 commits sur la version 3
dépendance envers une entreprise unique • Compilation de COBOL vers C89+ ◦ Simple et robuste ◦ Très bonne portabilité, même sur des systèmes atypiques ou anciens (zLinux, HPUX, etc.) ◦ Interface (FFI) facile avec toutes les bibliothèques Unix • Excellent support du standard COBOL85 ◦ >97% des tests NIST ▪ Plus que tous les compilateurs propriétaires • Dialectes: support des extensions propriétaires (IBM, MF, GCOS, etc.) ◦ Permet une migration sans modification des sources
communiquent peu sans y être poussés par un éditeur ! ◦ COBOL-IT: fork de OpenCOBOL version 1, utilisé par de nombreux utilisateurs (Microfocus/OpenText/RocketSoftware maintenant) ◦ Objectway: core banking suite ▪ Migration de AIX/Solaris/RHEL + Microfocus vers GnuCOBOL/PC ▪ Plus gros contributeur de GnuCOBOL aujourd’hui ◦ Realtime, mail envoyé à gnucobol-bugs le 7 novembre 2023: ▪ “[...] We are converting many, manu programs from Microfocus to GNU, and this [submitted bug] is the only problem we can’t easily work around [...]”
Debuggers au niveau source (basés sur gdb) ◦ Stacktraces, dumps textuels, couverture de code, etc. • Support pour les bases de données: préprocesseurs SQL, backends pour PostgresQL, Oracle, MySQL, etc. • Releases dans les distributions Linux et sous forme binaire pour Linux, Mac et Windows • Forum d’échange direct entre les utilisateurs et les développeurs
pour la DGFiP: ◦ Création et amélioration du dialecte GCOS ◦ Meilleur support de l’EBCDIC et des différences avec GCOS ◦ Upstream des contributions avec ajouts de tests de non-régression • Autres contributions à GnuCOBOL: ◦ Amélioration de l’ergonomie (affichage des erreurs avec contexte) ◦ Ajout d’un profiling facile à utiliser ◦ Corrections de bugs • Contributions à l’écosystème ◦ Amélioration de l’utilitaire GCSort ◦ Développement d’outils via SuperBOL
de GnuCOBOL, amélioré et maintenu (support commercial) par OCamlPro • Composants: ◦ Le compilateur GnuCOBOL ◦ Le meilleur de l’écosystème GnuCOBOL ◦ Une documentation moderne et navigable ◦ Une extension Vscode pour éditer du COBOL dans un IDE moderne et intelligent ◦ Des utilitaires supplémentaires: ▪ Outils d’analyse de code (cartographie, détection de bugs, etc.) ▪ Préprocesseur et Serveur CICS