Slide 1

Slide 1 text

Migration de l’application COBOL MedocDB de GCOS à GnuCOBOL sur GNU/Linux Olivier Blanc (DGFiP) et Fabrice Le Fessant (OCamlPro)

Slide 2

Slide 2 text

Plan ● Présentation des intervenants ● Présentation de l’application MedocDB ○ 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

Slide 3

Slide 3 text

Présentation des intervenants

Slide 4

Slide 4 text

Fabrice LE FESSANT (OCamlPro) ● Parcours académique ○ Chargé de 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

Slide 5

Slide 5 text

Olivier BLANC (DGFiP) ● Parcours académique ○ Enseignant à l’IMT 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)

Slide 6

Slide 6 text

Présentation de MedocDB

Slide 7

Slide 7 text

Une application de plus de 40 ans Médoc pour Mécanisation 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

Slide 8

Slide 8 text

Une application de plus de 40 ans L’application Medoc s’appuie 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

Slide 9

Slide 9 text

Cible de migration La cible de migration est donc : ● 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

Slide 10

Slide 10 text

Choix de Gnu Cobol Un premier test a montré l’utilisabilité 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

Slide 11

Slide 11 text

Présentation de GnuCOBOL

Slide 12

Slide 12 text

OCamlPro et COBOL OCamlPro: bureau de R&D et de développement, 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

Slide 13

Slide 13 text

COBOL ? ● COmmon Business Oriented Language = COBOL ● 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.

Slide 14

Slide 14 text

COBOL en 2024 ● Standardisé et évoluant ANSI85 -> ISO2002 -> 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

Slide 15

Slide 15 text

L’évolution de l’offre COBOL ● Années 80 : chaque constructeur 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

Slide 16

Slide 16 text

Concentration et souveraineté ● L’évolution de l’offre propriétaire est difficilement 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

Slide 17

Slide 17 text

COBOL et l’Open Source ● Les héritiers d’OpenCOBOL: ○ Offres “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

Slide 18

Slide 18 text

L’histoire de GnuCOBOL ● 2002: création de OpenCOBOL (préfecture de 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”

Slide 19

Slide 19 text

Le projet GnuCOBOL aujourd’hui ● Le site principal sur Sourceforge: 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

Slide 20

Slide 20 text

Les forces de GnuCOBOL ● Open-source Communautaire ○ Pas de 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

Slide 21

Slide 21 text

GnuCOBOL dans l’industrie ● Peu de visibilité, car les utilisateurs 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 [...]”

Slide 22

Slide 22 text

L’écosystème de GnuCOBOL ● Support avancé pour le debug: ○ 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

Slide 23

Slide 23 text

OCamlPro et GnuCOBOL ● Depuis 2022, OCamlPro intervient sur GnuCOBOL 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

Slide 24

Slide 24 text

SuperBOL pour GnuCOBOL ● Objectif: un environnement open-source intégré autour 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

Slide 25

Slide 25 text

SuperBOL pour VScode ●

Slide 26

Slide 26 text

Conclusion

Slide 27

Slide 27 text

GnuCOBOL ● Enfin une vraie alternative open-source pour le langage COBOL ○ Réduction des coûts ○ Souveraineté ○ Interopérabilité ● Les projets à suivre: ○ GnuCOBOL ■ https://gnucobol.sourceforge.io/ ○ GCobol (frontend COBOL sur gcc) ■ https://cobolworx.com/pages/cobforgcc.html ○ SuperBOL ■ https://superbol.eu/ ● Questions ?

Slide 28

Slide 28 text

Questions ?