votre avatar

Cnafien14

est avec nous depuis le 14 mars 2018 ❤️

3 commentaires

Le 15/03/2018 à 20h 39

Pour ceux qui veulent en apprendre un peu plus sur l’infrastructure mise en place pour faire tourner tout ça :



http://www.lemagit.fr/etude/La-CNAF-va-enfin-eteindre-ses-mainframes-Bull-et-IBM

Le 14/03/2018 à 21h 26

Je travaille sur ce logiciel depuis 15 ans, même si je suis pas si vieux, j’ai que la trentaine et j’ai écrit plus de 250k lignes de codes…



Et je lis pas mal de conneries, mais c’est normal, c’est un monde à part et que si on connait pas il est très difficile d’en tirer qqchose.



Ici on a qu’une partie très infime du code. On a que la partie qui fait le calcul final des prestations. Il manque toute la partie en amont, riche de plusieurs millions de lignes supplémentaires écrites manuellement. Cette partie permet de préparer les données, en générant des données intermédiaires,  pour quelles puissent être consommée par la partie calcul de droit qui est exposée ici. Globalement on a une grosse vingtaine de service cobol fournies sur plus d’un millier existant sur le projet.



De plus, pour faire tourner tout ça il manque la base de donnée de plus de 500 tables, la couche d’accès au données, car oui même en cobol, la couche de donnée (ou se trouve les ordres SQL) est séparée de la couche de traitement exposée ici, elle même séparée de la couche de présentation en JEE.



Donc déjà à ceux qui trouvent qu’il y a beaucoup de lignes de codes dans les programmes, il faut voir que les programmes ici sont une sorte d’enveloppe composée de différentes copys, en vue de la compilation.



Les programmes contiennent des copies qui sont d’un coté des déclarations de variables qui permettent d’échanger des données avec des sous-procédures ou des programmes externes et peuvent être générées par l’AGL Design 1 décrit par  bibiwan14, ou être décrites à la main. Et de l’autre coté des sous-procédures qui sont des sortes de librairies inclues dans le programme en vue d’être compilée et la partie applicative en elle même.

Pour un programme CGMM01.COB, tu as sa déclaration propre de variable faite dans la copy CGMM01W et sa partie applicative décrite dans le CGMM01A.



Par exemple dans les copy embarquées, il y a une sous-procédure qui permet de faire des calculs sur les dates qui se retrouvent dans beaucoup de programmes, un peu comme une classe date qui est inclus à la compile dans le package d’un projet objet.



Sinon pour le coup du D et Display, comme ça a été dis, le D, indique que l’instruction est exécutée en mode debug et le display indique juste que l’on va écrire dans la log ou rapport d’exécution selon si c’est du batch ou TP. Dans l’exemple cité, on restitue une valeur d’un des champs d’un fichier paramètre qui n’est pas à disposition…



Après, même si c’est récent, en interne le code tourne sur du linux, le code est sous git et le dév se fait sous éclipse. Donc pas si vieillot que ça. Et ces mêmes services COBOL arrivent à être exposée sous forme d’API REST/JSON au travers une couche JEE.



Maintenant pour toutes les personnes qui espèrent en faire qqchose, je vous souhaites beaucoup de courage, car vu la très faible portion de source, l’absence des spécification et la grande spécificité et difficulté fonctionnelle….



Déjà qu’on considère qu’il faut au moins 6 mois pour une personne arrivant sur ce projet pour commencer à comprendre ce qu’elle fait, sur son périmètre restreint….

Le 14/03/2018 à 22h 09

Oui, mais que veux-tu, tu n’es pas un petit génie qui est tellement fort qui peut réécrire une telle compléxité fonctionnelle tout seul dans son coin.



Comme tu le dis, il faut des années avec des centaines de personnes pour réécrire se genre de projet, quand ça aboutit (hein, LOUVOIS, SIRHEN….) mais certains s’imaginent le faire en 3 clics avec des framework/pro-logiciel.



Si ce COBOL est encore la, y a bien une raison, c’est qu’il est adapté à ces millions de traitements à passer sur 1 nuit par exemple.