Le langage RPG est un langage ancien ayant vécu de nombreuses modifications: GAP II sur IBM 34/36 les lignes sont colonnées et il existe différents découpages, reconnus grâce à une lettre en position 6 (on appelle cela des spécifications ou spécifs) H pour les paramètres généraux (l'entète) F pour décrire les fichiers lus E pour déclarer les tableaux (tout ce qui est à occurences) I pour indiquer la structure (comment découper) les enregistrements lus C ce sont les lignes de traitement O pour indiquer la structure des enregistrements écrits |
Puis sur l'IBM 38, la version du RPG (on dit aussi GAP) passe à 3 Quelques différences : le 38 implémente une base de données, la structure des fichiers est connue et répercutée automatiquement dans les programmes ==> les spécif I et O disparraissent (sauf quelques exeptions) ==> les ordres structurés IF, DOW/DOU sont implémentés à ce moment là ==> on peut remplacer les ordres d'entrée/sortie par du SQL. Les traitemenst sont toujours en Spécif C (colonnées) Enfin le GAP4 est proposé avec la version 3 du l'OS/00, puis la version 5 en version 3, la spécif C est assouplie, en version 5 elle est abandonée. |
Exemple : remplacement des départements à 0 par la valeur 75 FCLIENT IF E K DISK La spécification F(déclaration du fichier) sera commune à tous les exemples ici IF signifie un fichier en lecture, traité par le programme K indique que l'on utilise l'index (traitement sur le N° de client) DISK qu'il s'agit dun fichier Base de donnée (pas un état ni un écran) A la GAP 3 (ou RPG 3) (En RPG on manipule les formats , plutôt que les noms de fichier) C read clientF 90 C *in90 doweq *off C dept ifeq 0 C z-add 75 dept C update clientF C endif C read clientF 90 * fin du pgm C move *on *inlr |
RPG 4 (OS version 3 et 4) C read clientF C dow not %eof C if dept = 0 C eval dept = 75 C update clientF C endif C read clientF C enddo C eval *inlr = *on RPG 4 (OS version 5) /free read clientF ; dow not %eof; if dept = 0 ; dept = 75 ; update clientF; endif ; read clientF ; enddo; *inlr = *on /end-free |