Dans l’écosystème des grandes entreprises, le COBOL reste au cœur de systèmes critiques. Malgré son âge, ce langage continue de faire tourner des applications vitales dans la banque, l’assurance ou l’administration. Et quand il s’agit de reprendre un projet COBOL existant, la tâche peut vite devenir intimidante.
Lire un programme COBOL, c’est comme entrer dans une vieille machine encore en marche : il faut comprendre sa logique, ses branchements, ses règles tacites. Ce n’est pas une opération de relecture classique : c’est une enquête technique. Et elle commence par les bases.
Un projet COBOL est rarement un simple fichier à dérouler. Il faut d’abord identifier la structure du code et les points d’entrée métier.
Prenons un exemple typique avec accès base de données DB2 :
Le programme COBOL contient la logique métier.
Le DBRM (Database Request Module) compile les instructions SQL.
Le plan d’exécution fait le lien entre les deux.
L’objectif ? Repérer les divisions, comprendre la hiérarchie des PERFORM
, et visualiser la séparation entre logique métier, accès base et gestion des fichiers.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
PERFORM INITIALIZE-PROGRAM
PERFORM PROCESS-CUSTOMERS
PERFORM CLEANUP-PROGRAM
STOP RUN.
Ici, le code est clair : une procédure principale, trois blocs bien délimités, une structure lisible et maintenable. Pour aller plus loin sur ces fondations, lisez Les patterns COBOL durables, ceux qui résistent à l’épreuve du temps.
Un projet COBOL, ce n’est pas juste du texte compilé. Le processus de génération de l’exécutable inclut :
Précompilation : extraction des blocs EXEC SQL
vers un DBRM.
Compilation : génération du code objet à partir du COBOL.
Lien avec le plan DB2 : via le binder, qui crée le plan d’exécution utilisé à l’exécution.
Si vous analysez un projet en production, vérifiez la version du compilateur, les options d’optimisation activées, et la présence éventuelle de copybooks dans les include SQL.
Cela impacte directement les performances, comme on l’explique dans Optimiser les traitements batch COBOL : structure, compileur, bonnes pratiques.
Pas de programme COBOL en production sans son JCL. Et lire ce script, c’est souvent la clé pour comprendre ce que fait vraiment le programme :
Quelles données il traite (fichiers en entrée/sortie)
Dans quel ordre les étapes s’enchaînent
Quels utilitaires il appelle (SORT, IDCAMS, IEFBR14…)
Un exemple simple de JCL vous montrera :
L’appel au programme
Les datasets utilisés
Les étapes de prétraitement ou de post-traitement
Le JCL, c’est la ligne de commande du mainframe : sans la lire, on passe à côté de la moitié du projet.
Quand on hérite d’un gros monolithe COBOL sans doc, il faut adopter une méthode claire et outillée :
Éditeur ISPF : commandes FIND
, COMP
, surlignage des variables.
Analyse SQL avec EXPLAIN
ou DB2 Query Monitor
.
Outils IBM z/OS (comme Debug Tool) pour debugger pas à pas.
Cartographie des flux de données pour comprendre comment transitent les montants, les identifiants clients, les états de traitement.
Si le programme utilise des copybooks partagés, identifiez toutes les dépendances pour éviter les effets de bord en cas de modification.
Les freins à la compréhension sont connus : code spaghetti, absence de doc, dépendances cachées, SQL enfoui dans du précompilé… La solution ? Un mix d’outils modernes et de rigueur manuelle.
Déboguez, tracez, renommez, refactorez. Chaque zone clarifiée, chaque ligne commentée, c’est une dette technique de moins à porter.
Comprendre un projet COBOL existant ne passe pas par miracle. C’est un travail d’enquête : on repère, lit, isole, commente, on reconstitue le puzzle. On clarifie l’existant avant même de penser à refactorer.
Même un programme ancien peut être remis à plat, documenté, segmenté, compris. Et plus le socle est lisible, plus il est réutilisable.
Nous accompagnons aujourd’hui des entreprises confrontées à des bases COBOL anciennes, peu documentées, parfois critiques, toujours complexes. Lecture de code, cartographie fonctionnelle, préparation à la modernisation : si vous êtes dans ce cas, parlons-en.