IBM
RPG II
System/3 • System/32 • System/34 • System/36
RPG II d'IBM
RPG II est une version historique du langage Report Program Generator. Il a été conçu pour
l'informatique de gestion, les états imprimés, les fichiers maîtres, les mouvements, les totaux,
et plus généralement le traitement administratif de masse sur les systèmes IBM de milieu de gamme.
Cette page rassemble, en français, une vue d'ensemble très large sur RPG II : son contexte historique,
sa logique, son format fixe, ses spécifications, son cycle implicite, ses indicateurs, ses forces,
ses limites et sa place dans l'évolution de la famille RPG jusqu'aux versions plus modernes.
1. Qu'est-ce que RPG II ?
RPG II est un langage de programmation orienté gestion, historiquement très lié aux besoins
comptables, commerciaux, logistiques et administratifs. Son nom, Report Program Generator, reflète
son objectif initial : produire facilement des listes, journaux, factures, états, éditions, sous-totaux et totaux.
Contrairement aux langages plus généralistes, RPG II est pensé autour des fichiers, des
enregistrements, de la lecture séquentielle, des ruptures,
et de la sortie imprimée. Son fonctionnement est en grande partie piloté par un
cycle implicite fourni par le compilateur.
RPG II n'est pas un langage moderne au sens actuel du terme. Il appartient à une époque où le code était
écrit en format fixe, souvent en colonnes, avec une forte influence de la carte perforée et des traitements batch.
2. Contexte historique
RPG II est devenu la version emblématique de RPG sur les systèmes IBM de milieu de gamme. Il a été étroitement
associé à la lignée des machines IBM destinées à la gestion d'entreprise : notamment System/3,
puis des environnements compatibles sur System/32, System/34 et System/36.
Dans ce monde informatique, le but principal n'était pas de faire des interfaces graphiques ou des calculs
scientifiques complexes, mais d'automatiser des flux métiers concrets : comptabilité, stock, paie, commandes,
clients, fournisseurs, écritures, bordereaux et impressions massives.
Pourquoi il a compté
- Très adapté aux traitements administratifs répétitifs.
- Productif pour générer des états imprimés.
- Naturel pour les applications basées sur des fichiers.
- Très utilisé dans les PME et les systèmes de gestion IBM.
Pourquoi il paraît étrange aujourd'hui
- Format fixe strict par colonnes.
- Cycle de traitement implicite plutôt qu'explicite.
- Usage intensif des indicateurs numérotés.
- Style très différent des langages structurés modernes.
3. Philosophie générale du langage
RPG II n'a pas été imaginé comme un langage abstrait ou académique. Il a été pensé comme un
outil métier. Le programmeur décrit les fichiers, les champs, les formats d'impression,
les conditions de calcul et les lignes de sortie. Ensuite, le langage s'occupe d'une partie importante
du déroulement automatique.
En pratique, on ne programme pas d'abord "des algorithmes" comme en C ou en Pascal ; on programme surtout
des traitements de données. Le cœur du raisonnement consiste souvent à répondre à des questions comme :
- Quel fichier est lu ?
- Quels champs d'entrée sont définis ?
- Quelles conditions allument quels indicateurs ?
- Que faut-il imprimer ou totaliser ?
- Que faire lors d'un changement de clé, d'une rupture ou d'une fin de fichier ?
4. Le cycle RPG : notion centrale
Une des idées les plus caractéristiques de RPG II est le cycle de programme implicite.
Le compilateur génère une logique standard qui lit les enregistrements, teste les conditions,
gère les niveaux de contrôle, déclenche les calculs et produit les sorties.
C'est pour cela qu'on dit souvent que RPG II ressemble plus à une "machine de traitement de fiches et d'états"
qu'à un langage procédural classique.
Étapes typiques du cycle
- Lecture du prochain enregistrement.
- Mise à jour automatique de certains indicateurs.
- Test des conditions de niveau ou de rupture.
- Exécution des opérations de calcul conditionnelles.
- Production des lignes de détail, sous-totaux ou totaux.
- Fin de traitement quand le dernier enregistrement est atteint.
Cette logique explique pourquoi beaucoup de programmes RPG II historiques sont compacts : une part du contrôle
du flux n'est pas explicitement écrite par le développeur, elle est fournie par le modèle du langage lui-même.
5. Les spécifications de RPG II
RPG II est un langage à format fixe. Chaque ligne est organisée par colonnes. Le type de ligne
est déterminé par une lettre de spécification. Les spécifications sont généralement regroupées dans un ordre précis.
| Spécification |
Rôle |
| H |
Header : options générales, caractéristiques du programme. |
| F |
File : description des fichiers utilisés, mode d'accès, types d'enregistrements. |
| E |
Extensions : tableaux et structures complémentaires selon l'implémentation. |
| I |
Input : définition des champs d'entrée, découpage d'enregistrements, zones de données. |
| C |
Calculation : logique de calcul, opérations, tests, indicateurs, affectations. |
| O |
Output : description des sorties, impressions, lignes de détail et de total. |
| L / T / U |
Spécifications plus spécialisées selon machine, télécoms, auto-report ou variantes. |
Un programme RPG II se lit donc moins comme un script linéaire que comme une déclaration structurée
d'entrées, de calculs et de sorties.
6. Les indicateurs
Les indicateurs sont au cœur de RPG II. Ce sont des drapeaux logiques, souvent numérotés,
qui valent implicitement vrai ou faux. On les utilise pour piloter des conditions, déclencher des sorties,
signaler une rupture, une erreur, une fin de fichier ou n'importe quelle logique de contrôle.
Exemples d'usages
- Afficher une ligne seulement si un indicateur est actif.
- Déclencher un sous-total lors d'un changement de clé.
- Marquer une erreur de validation.
- Terminer le programme avec l'indicateur LR.
Ce qui dérange les développeurs modernes
- Un nom comme 21 ou 54 est peu parlant.
- Le code devient difficile à relire avec le temps.
- La logique métier se disperse dans des tests d'indicateurs.
- Il faut souvent une documentation annexe pour suivre le sens.
Beaucoup de programmes anciens fonctionnent parfaitement, mais leur maintenance est coûteuse car la signification
des indicateurs a parfois seulement été transmise oralement dans l'entreprise.
7. Fichiers, enregistrements et états
RPG II excelle dans les traitements centrés sur les fichiers. Le programme lit des enregistrements,
extrait des champs, calcule des montants, compare des clés, accumule des totaux puis imprime le résultat.
Scénarios typiques
- Édition de factures ou de relevés clients.
- Liste des commandes avec total par client et total général.
- Rapports de stock avec ruptures par famille d'articles.
- Paie, comptabilité, journaux de ventes, balances et inventaires.
Dans cet univers, le couple lecture d'enregistrement + impression structurée est fondamental.
C'est l'une des raisons pour lesquelles RPG a tant marqué l'informatique de gestion IBM.
8. Style de syntaxe et exemple conceptuel
Le style réel de RPG II dépend de la machine et de la version, mais son principe général reste celui d'un format fixe.
Voici un exemple conceptuel simplifié, volontairement pédagogique, pour montrer l'esprit du langage.
H* Exemple pédagogique simplifié d'esprit RPG II
FVENTES IF E K DISK
ICLIENT AA 01 1 5CLIENT
I 6 13MONTANT
C Z-ADD0 TOTAL
C N90 ADD MONTANT TOTAL
C 90 SETON LR
OIMPRIME E 01
O CLIENT 10
O MONTANT 25
O TOTAL 40
Ce n'est pas ici une copie fidèle d'un listing de production complet, mais une illustration de la logique :
description du fichier, définition des champs d'entrée, calculs conditionnels, puis sortie formatée.
Ce qu'il faut retenir
- Les colonnes comptent énormément.
- Le langage est dense et compact.
- Le compilateur s'attend à un ordre précis des spécifications.
- La lecture est difficile sans habitude ou gabarit de colonnes.
9. Avantages et limites
Avantages historiques
- Très rapide à mettre en œuvre pour la gestion.
- Excellente adéquation avec les listings et états imprimés.
- Naturel pour les traitements batch sur fichiers.
- Très intégré à l'environnement IBM de l'époque.
- Productif pour les développeurs formés à ce modèle.
Limites majeures
- Lisibilité faible pour un non-spécialiste.
- Format fixe rigide et source fragile.
- Peu adapté aux architectures logicielles modernes.
- Dépendance à une logique de cycle pas toujours intuitive.
- Code ancien souvent difficile à documenter ou tester finement.
Il ne faut donc ni idéaliser ni mépriser RPG II : dans son contexte, il était extrêmement efficace.
Hors de son contexte, il devient vite déroutant.
10. RPG II comparé aux versions suivantes
| Version |
Esprit général |
Remarque |
| RPG II |
Très orienté fichiers, cycle implicite, format fixe, indicateurs. |
Version historique la plus emblématique sur midrange IBM. |
| RPG III |
Évolution du modèle classique avec davantage de possibilités. |
Transition sans rupture totale avec les habitudes RPG. |
| RPG/400 et RPG IV (ILE RPG) |
Plus structuré, plus modulaire, mieux adapté aux pratiques modernes. |
Base bien plus actuelle dans l'écosystème IBM i. |
| RPG free-format moderne |
Syntaxe beaucoup plus lisible, proche des standards actuels. |
La modernisation passe souvent par là aujourd'hui. |
Les versions récentes de RPG ont conservé une partie de l'ADN métier du langage, tout en abandonnant progressivement
plusieurs contraintes historiques qui rendaient RPG II austère.
11. Pourquoi on parle encore de RPG II aujourd'hui
On en parle encore pour trois raisons principales :
- Des entreprises possèdent encore des applications anciennes ou des sources hérités de cette culture technique.
- Comprendre RPG II aide à lire l'histoire des systèmes IBM de gestion.
- De nombreux projets de migration ou d'audit demandent de savoir interpréter cette logique.
Même quand le code n'est plus exécuté tel quel, son modèle mental continue d'influencer certaines bases applicatives,
certaines nomenclatures de données et certaines façons de penser le traitement batch en entreprise.
12. Moderniser ou migrer un patrimoine RPG II
Approche prudente
- Inventorier les programmes, fichiers, écrans et éditions.
- Documenter les indicateurs, niveaux de contrôle et formats de sortie.
- Identifier les traitements critiques : paie, facturation, comptabilité, stock.
- Créer des jeux d'essai reproduisant les cas métiers réels.
- Moderniser par étapes plutôt que réécrire à l'aveugle.
Erreurs fréquentes
- Réécrire sans comprendre le cycle implicite original.
- Perdre les règles de gestion cachées dans les indicateurs.
- Ignorer les cas de rupture, sous-totaux ou fins de période.
- Se concentrer sur la syntaxe et oublier le métier.
Dans un ancien programme RPG II, la vraie difficulté n'est souvent pas la technique pure mais la récupération
de la logique métier accumulée pendant des années d'exploitation.
13. FAQ rapide
RPG II est-il encore utilisé tel quel ?
Beaucoup moins qu'avant, mais on retrouve encore son héritage dans des systèmes anciens, des compatibilités ou des projets de reprise.
Est-ce un langage orienté objet ?
Non. RPG II appartient à une autre époque et à un autre modèle de développement.
Pourquoi la lecture de RPG II paraît-elle difficile ?
Parce qu'il s'appuie sur le format fixe, les colonnes, les indicateurs et une logique de cycle implicite peu familière aujourd'hui.
À quoi servait-il surtout ?
À la gestion : rapports, états imprimés, facturation, paie, inventaire, comptabilité, listes et traitements batch sur fichiers.
Que faut-il comprendre en priorité pour lire du RPG II ?
Le cycle RPG, les indicateurs, les spécifications F/I/C/O, les niveaux de contrôle et la structure des fichiers.
14. Résumé final
RPG II est un langage historique majeur de l'univers IBM de gestion. Il a été extrêmement efficace pour traiter
des données métier, lire des fichiers séquentiels, produire des éditions imprimées et automatiser la vie administrative
d'innombrables entreprises. Son apparence peut sembler archaïque, mais elle traduit une vraie logique industrielle.
Pour comprendre RPG II, il faut le regarder avec les yeux de son époque : mémoire limitée, traitements batch,
cartes ou formats fixes, imprimantes listings, besoin de productivité métier, et forte intégration au système.
Dans ce cadre, RPG II n'était pas bizarre : il était redoutablement pragmatique.
Fichier généré : rpg2.php