Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Atelier BlueHats : Migration de l’application C...

BlueHats
November 29, 2024

Atelier BlueHats : Migration de l’application COBOL MedocDB de GCOS à GnuCOBOL sur GNU/Linux

Atelier BlueHats du 29 novembre 2024

Voir https://code.gouv.fr/fr/bluehats/de-GCOS-a-gnucobol/

BlueHats

November 29, 2024
Tweet

More Decks by BlueHats

Other Decks in Technology

Transcript

  1. Migration de l’application COBOL MedocDB de GCOS à GnuCOBOL sur

    GNU/Linux Olivier Blanc (DGFiP) et Fabrice Le Fessant (OCamlPro)
  2. 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
  3. 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
  4. 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)
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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.
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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”
  16. 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
  17. 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
  18. 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 [...]”
  19. 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
  20. 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
  21. 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
  22. 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 ?