Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Programmer en COBOL
  3. Présentation
Extrait - Programmer en COBOL Développement et Maintenance de programmes
Extraits du livre
Programmer en COBOL Développement et Maintenance de programmes
5 avis
Revenir à la page d'achat du livre

Présentation

Origines

Créé aux États-Unis en 1959, qu’est-ce qui caractérise COBOL pour qu’il soit, plus de cinquante ans après, toujours autant utilisé ? Quel était l’objectif poursuivi à sa création, et cela peut-il expliquer sa longévité ? Il est intéressant d’essayer de répondre à ces questions afin de comprendre l’intérêt de ce langage historique qui a contribué à faire de l’informatique ce qu’elle est… et ce qu’elle sera.

Il est impossible de dissocier l’histoire du COBOL de l’histoire des débuts de l’informatique, tout comme il est difficile de déterminer avec précision le début de cette grande aventure commencée depuis bien longtemps. Certains acteurs au fil du temps et au gré des intérêts divers et variés sont oubliés ou encensés, et l’identification formelle du premier ordinateur, du premier langage de programmation, du premier compilateur, ne dépend que de la définition donnée à ces différents termes, définitions qui évoluent au cours des décennies. Ce qui est certain c’est que chacun dans sa catégorie, du plus ancien au plus récent, n’est que le résultat de l’interaction d’idées passées et le point de départ de nouvelles idées.

Pour COBOL le point de départ retenu ici est la Seconde Guerre mondiale : aux États-Unis, comme en Europe, les besoins en calculs balistiques ont explosé. Pour y répondre l’armée américaine a affecté une grande part de son budget à la construction des premières machines, calculateurs ou ordinateurs, permettant ainsi à ce secteur industriel émergeant de progresser très rapidement. C’est à ce moment qu’a débuté l’aventure d’hommes et de femmes qui ont, de façon certaine, contribué à donner son visage à la société dans laquelle nous vivons aujourd’hui.

1. Les computers

Les hommes avaient été réquisitionnés pour aller au front mais les usines d’armement et les centres de calcul devaient continuer de fonctionner, plus que jamais....

COBOL dans le temps

1. COBOL 74

En décembre 1971 CODASYL produit une version publiée par le comité X3.23-1974 de l’ANSI : COBOL 74. Cette norme va également être référencée par l’ISO (International Standard Organisation, créée en 1946 à la conférence de Londres et dont le siège est à Genève) : COBOL ISO 1989-1972. Elle est implémentée par IBM sur ses machines en tant que OS/VS Cobol (qui n’est plus maintenu depuis 1994). COBOL 74 possède beaucoup d’incompatibilités avec COBOL 68 : le département de la marine en dénombrera 56. Le National Bureau of Standards publie donc un manuel de 54 pages pour la conversion COBOL 68 - COBOL 74.

Chaque constructeur va implémenter ses propres versions du compilateur, ainsi que des outillages permettant de convertir un parc applicatif COBOL d’une ancienne version vers une version plus récente ou plus spécifique.

2. COBOL 85

En 1985, le comité X3.23-1985 de l’ANSI publie la norme COBOL 85 (COBOL ISO 1989-1978). Cette version marque une évolution significative du langage vers une programmation structurée, avec notamment l’apparition de :

  • marques de fin qui permettent de s’émanciper du point pour terminer les instructions, les scope terminator, différents pour chaque instruction. Une grande majorité...

COBOL aujourd’hui

1. Environnement mainframe...

Destiné à l’informatique de gestion, COBOL est d’abord apparu dans les grosses administrations, les grandes entreprises industrielles, les compagnies aériennes, les banques et les assurances : le coût du matériel représentant un investissement considérable, peu de sociétés étaient alors informatisées. Aujourd’hui l’objectif pour ces sociétés est de préserver cet investissement initial : cela passe par la maintenance du parc applicatif COBOL, et par son évolution. De fait, ces sociétés manipulent souvent des volumes de données considérables et, bien que les capacités mémoire aient évolué de façon spectaculaire, le volume des données à traiter a lui aussi explosé. Cela a entraîné le renouvellement du parc matériel : des ordinateurs de plus en plus puissants, de plus en plus complexes, mais toujours centralisés. On parle de mainframe. Dans les années 70-80 les principaux constructeurs de mainframe sont CDC (Control Data Corporation) avec ses CYBER, Cray avec son fameux Cray-1, IBM avec sa série des 360 (du plus petit au plus gros, ils sont tous compatibles entre eux).

Pour toutes les sociétés et administrations encore aujourd’hui équipées de tels systèmes centralisés et avec des bibliothèques de programmes COBOL imposantes, leur DSI est régulièrement confronté à ce dilemme :

  • préserver et valoriser ce patrimoine, avec la difficulté de trouver...

Formalisme

Il est acquis qu’un programme COBOL n’est qu’un temps maintenu par la personne qui l’a écrit : il est courant d’avoir à intervenir sur des programmes écrits il y a 10, 15 ans et plus. Ce sont souvent les meilleurs programmes qui sont les plus anciens : bien conçus et bien développés, ils ont traversé plus d’une décennie avec son lot d’évolutions juridiques, réglementaires ou autres, sans nécessiter de ré-écriture. Ces programmes représentent un capital non négligeable qu’il faut préserver. Leur bonne compréhension par les différents intervenants, avec une autodocumentation de qualité et des normes d’entreprise, contribuent également à cette longévité.

Un développeur COBOL doit penser à ce qu’il apprécierait trouver comme code, s’il devait intervenir 5 ans après avoir écrit son programme, pour ne pas passer plusieurs heures à comprendre ce qu’il avait voulu faire. Il doit comprendre rapidement comment a été conçu le programme, en discerner aisément les fonctionnalités, l’algorithme, afin de pouvoir se concentrer sur ce qu’il doit modifier et la façon la plus sûre d’y parvenir sans amener de régression.

Pour cela il faut standardiser :

  • la gestion

    • des erreurs,

    • des accès aux fichiers,

    • des accès aux bases de données,

    • des transactions,

  • et la définition des données.

Le but de ces normes est d’obtenir un minimum d’homogénéité dans la bibliothèque de sources COBOL et de permettre une navigation rapide dans un programme pour en améliorer la maintenance. Cela permet de repérer facilement l’origine d’une variable en codifiant, par exemple, les noms des zones en fonction de l’endroit où elles sont déclarées. Cela permet également de savoir où se trouvent les initialisations, de connaître leurs formes, et de pouvoir repérer rapidement la structure principale afin d’aller directement à l’endroit précis où doit être effectuée...

Mise en œuvre : compilation

Un programme COBOL n’est pas exécutable tel quel, il doit d’abord être compilé : les différentes parties du programme sont regroupées et les instructions transformées en langage machine. La compilation produit en sortie un objet. Une édition de liens (LINKEDIT) doit ensuite être effectuée entre les différents objets pour produire l’exécutable (load module). C’est ce load module qui est appelé lors des traitements.

Avec son interconnexion avec d’autres systèmes, une étape préalable de pré-compilation peut être nécessaire en environnement IBM/MVS :

  • pour les programmes contenant des requêtes SQL d’accès à des tables DB2 : les requêtes SQL ne sont pas en COBOL mais incluses entre des bornes SQL. Elles doivent être traduites en COBOL avant la compilation,

  • pour les programmes CICS : comme les instructions SQL, les instructions CICS sont incluses entre des bornes spécifiques. Là aussi la pré-compilation traduit ces ordres spécifiques en instructions COBOL compilables.

Ces pré-compilations peuvent être enrichies d’un pré-compilateur maison dans certaines entreprises : des lignes de codes peuvent être ajoutées et/ou remplacées.

En fin d’ouvrage, quelques exemples COBOL/DB2 et COBOL/CICS...