# Pacbase

Pacbase est un atelier de génie logiciel francophone générant des programmes en langage COBOL. Le programme COBOL généré est ensuite compilé. Son nom d'origine, PAC700, provient de l'acronyme PAC pour « programmation automatique Corig ». Corig (conception et réalisation en informatique de gestion) étant une méthode de programmation structurée des années 1970.
Il permet de rendre indépendants les aspects logiques des aspects physiques de la programmation ; ainsi le même source Pacbase, moyennant la bonne spécification d'un nombre très réduit de paramètres, peut générer des programmes COBOL opérant sur machines IBM ou sur machines Bull, et même Unix (il existe une option paramétrable permettant de choisir la version du langage COBOL généré).
L'éditeur de cet AGL était la CGI (Compagnie générale d'informatique), rachetée depuis par IBM. De nombreuses entreprises (banques, assurances, etc.), essentiellement en France, utilisent Pacbase.
En 2000, IBM modernise l'AGL en le réécrivant totalement en Java.
IBM a annoncé une garantie de support de Pacbase jusqu'en 2015 au minimum ; le temps de préparer une solution de remplacement basée sur la Software Delivery Platform. L'interface TP actuelle sera alors remplacée par un éditeur de COBOL natif, au sein de l'outil Rational Developer for Z, lui-même basé sur Eclipse, agrémenté d'une vue « Pacbase ». Cet éditeur conservera la double entrée : génération automatique à partir d'un modèle, et ajout de code spécifique directement en COBOL. La notion de Référentiel, chère aux utilisateurs actuels de Pacbase, sera conservée. Cette solution de remplacement devrait être disponible aux alentours de 2011—2012 et garantira la reprise à l'identique du patrimoine applicatif, évitant ainsi les tests de non régression. Cette démarche est connue sous le nom de « Plan de Convergence ».

## Le référentiel

Pacbase gère un référentiel d'entités, contenant un dictionnaire des données structuré.
Les principales entités sont :
* des rubriques : données (l'entité la plus élémentaire) ;
* des segments, ou fichiers : ensembles de données représentant des objets métiers ou des relations entre objets métiers. Ce sont des listes de rubriques ;
* des structures de données : ensembles de segments ou d'états ;
* des états : pour l'impression ;
* des programmes (batchs) ;
* des écrans (transactionnel) ;
* des textes (documentation) ;
* des manuels (ensembles de textes).
La gestion centralisée d'un référentiel permet d'obtenir les chaînages entre entités (quels programmes informatiques utilisent telle rubrique, etc.), de la même manière qu'un logiciel Wiki.

## Les bibliothèques

Pacbase propose une arborescence hiérarchisée de bibliothèques dans lesquelles sont rangées les entités. Cela permet à plusieurs équipes de travailler sur le même référentiel et de stocker leurs programmes dans leurs bibliothèques propres.
Le principe de hiérarchie est le suivant : les entités d'une bibliothèque sont utilisables par les bibliothèques du niveau inférieur. Ainsi des entités importantes (que ce soit des données ou des macro-structures) peuvent n'être déclarées qu'une seule fois et donc communes à l'ensemble d'un site).

## Les sessions

Pacbase propose un système de gestion de version au moyen de session historisée, de travail ou de session courante. Simpliste, elle permet cependant de gérer les différentes versions d'une application à condition de ne pas trop les multiplier ni de faire beaucoup de développements sur plusieurs branches à la fois.

## Limites

Pacbase permet de générer facilement des programmes simples. Cependant, il est très restrictif et possède quelques bugs non corrigés. Cela tente parfois les programmeurs qui y sont confrontés de coder directement en COBOL, ce qui est vivement déconseillé. Une connaissance approfondie de l'outil permet de trouver une parade en respectant les normes de programmation liées à Pacbase ou à l'entreprise utilisatrice.
Par ailleurs, Pacbase est un outil manquant de convivialité, et sa portabilité sur d'autres environnements de développement que le COBOL n'est pas évidente. Il est structuré selon une logique datant des années 1970, dans laquelle on n'imaginait pas d'exigences fortes d'interopérabilité entre systèmes complexes.
Il n'y avait pas de macrostructure de gestion de date standard, et les macrostructures de gestion de date utilisées chez les clients n'étaient en général pas prévues pour passer l'an 2000, le format de date étant repris de celui de la date système où l'année était sur deux chiffres.

## La programmation

Que ce soit dans les traitements par lots (batch) ou en transactionnel (TP), la démarche de programmation est la même :
* Mise en place du standard Pacbase, qui consiste en une systématisation de la programmation. Le standard batch est différent du standard TP.
* Ajout du standard entreprise, via des macro structures paramétrées (MSP).
* Finalisation par des traitements spécifiques.

### Dans les traitements par lots

Dans les traitements par lots (batch), Pacbase gère des notions de rupture et de synchronisation de fichiers à l'aide d'indicateurs dédiés permettant de savoir très facilement pour chaque fichier, si l'on traite une donnée pour la première fois ou la dernière fois, ou si elle est présente dans d'autres fichiers en entrée.

### En transactionnel (module Dialogue)

Pacbase gère la cinématique transactionnelle. Il prend également en charge tout l'aspect technique de l'interfaçage avec le moniteur transactionnel (par exemple : CICS).